diff --git a/backend-api-internal/deployment.yaml b/backend-api-internal/deployment.yaml index ab0e9c2..16f2adf 100644 --- a/backend-api-internal/deployment.yaml +++ b/backend-api-internal/deployment.yaml @@ -16,6 +16,23 @@ spec: imagePullSecrets: - name: ghcr-secret initContainers: + - name: wait-for-mysql + image: busybox + command: + - sh + - -c + - | + until nslookup mysql.app-notifications.svc.cluster.local; do + echo "Waiting for MySQL DNS..." + sleep 2 + done + + until nc -z mysql.app-notifications.svc.cluster.local 3306; do + echo "Waiting for MySQL..." + sleep 2 + done + + echo "MySQL is available" - name: copy-secrets image: busybox command: diff --git a/backend-api/deployment.yaml b/backend-api/deployment.yaml index 8aae232..9b5d1b5 100644 --- a/backend-api/deployment.yaml +++ b/backend-api/deployment.yaml @@ -16,6 +16,23 @@ spec: imagePullSecrets: - name: ghcr-secret initContainers: + - name: wait-for-mysql + image: busybox + command: + - sh + - -c + - | + until nslookup mysql.app-notifications.svc.cluster.local; do + echo "Waiting for MySQL DNS..." + sleep 2 + done + + until nc -z mysql.app-notifications.svc.cluster.local 3306; do + echo "Waiting for MySQL..." + sleep 2 + done + + echo "MySQL is available" - name: copy-secrets image: busybox command: diff --git a/backend-push-notifications/deployment.yaml b/backend-push-notifications/deployment.yaml index 6537e60..1b351ac 100644 --- a/backend-push-notifications/deployment.yaml +++ b/backend-push-notifications/deployment.yaml @@ -16,6 +16,23 @@ spec: imagePullSecrets: - name: ghcr-secret initContainers: + - name: wait-for-mysql + image: busybox + command: + - sh + - -c + - | + until nslookup mysql.app-notifications.svc.cluster.local; do + echo "Waiting for MySQL DNS..." + sleep 2 + done + + until nc -z mysql.app-notifications.svc.cluster.local 3306; do + echo "Waiting for MySQL..." + sleep 2 + done + + echo "MySQL is available" - name: copy-secrets image: busybox command: diff --git a/service-docker-repository-query/backup_deployment.yaml b/service-docker-repository-query/backup_deployment.yaml new file mode 100644 index 0000000..2772aa8 --- /dev/null +++ b/service-docker-repository-query/backup_deployment.yaml @@ -0,0 +1,55 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: service-docker-repository-query + namespace: app-notifications +spec: + replicas: 1 + selector: + matchLabels: + app: service-docker-repository-query + template: + metadata: + labels: + app: service-docker-repository-query + spec: + imagePullSecrets: + - name: ghcr-secret + initContainers: + - name: copy-secrets + image: busybox + command: + - sh + - -c + - | + for f in /secrets/*; do + cp "$f" /etc/secrets/ + chmod 666 "/etc/secrets/$(basename $f)" + done + volumeMounts: + - name: service-docker-repository-query-secrets + mountPath: /secrets + - name: writable-secrets + mountPath: /etc/secrets + containers: + - name: service-docker-repository-query + image: ghcr.io/gansejunge/app-notifications-service-docker-repository-query:19 + ports: + - containerPort: 5000 + name: fastapi + - containerPort: 9000 + name: metrics + env: + - name: DB_HOST + value: "mysql.app-notifications.svc.cluster.local" + - name: BACKEND_API_URL + value: "http://backend-api-internal.app-notifications.svc.cluster.local:8101/internal/receive-notifications" + volumeMounts: + - name: writable-secrets + mountPath: /etc/secrets + volumes: + - name: service-docker-repository-query-secrets + secret: + secretName: service-docker-repository-query + - name: writable-secrets + emptyDir: {} diff --git a/service-docker-repository-query/deployment.yaml b/service-docker-repository-query/deployment.yaml index 2772aa8..da755af 100644 --- a/service-docker-repository-query/deployment.yaml +++ b/service-docker-repository-query/deployment.yaml @@ -16,6 +16,23 @@ spec: imagePullSecrets: - name: ghcr-secret initContainers: + - name: wait-for-mysql + image: busybox + command: + - sh + - -c + - | + until nslookup mysql.app-notifications.svc.cluster.local; do + echo "Waiting for MySQL DNS..." + sleep 2 + done + + until nc -z mysql.app-notifications.svc.cluster.local 3306; do + echo "Waiting for MySQL..." + sleep 2 + done + + echo "MySQL is available" - name: copy-secrets image: busybox command: diff --git a/service-docker-repository-query/service-docker-repository-query-cron-pihole.yaml b/service-docker-repository-query/service-docker-repository-query-cron-pihole.yaml new file mode 100644 index 0000000..656207d --- /dev/null +++ b/service-docker-repository-query/service-docker-repository-query-cron-pihole.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: service-docker-repository-query-cron-pihole + namespace: app-notifications +spec: + serviceName: service-docker-repository-query-cron-pihole + replicas: 1 + selector: + matchLabels: + app: service-royalroad-chapters-cron + template: + metadata: + labels: + app: service-royalroad-chapters-cron + spec: + containers: + - name: cron + image: curlimages/curl:latest + command: + - /bin/sh + - -c + - | + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"startup\"}" + while true; do + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"curl start\"}" + curl -s -X GET --max-time 150 http://service-docker-repository-query-internal:5000/pihole + echo + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"curl end\"}" + sleep 21600 + done diff --git a/service-docker-repository-query/service-docker-repository-query-cron-suwayomi.yaml b/service-docker-repository-query/service-docker-repository-query-cron-suwayomi.yaml new file mode 100644 index 0000000..504eeab --- /dev/null +++ b/service-docker-repository-query/service-docker-repository-query-cron-suwayomi.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: service-docker-repository-query-cron-suwayomi + namespace: app-notifications +spec: + serviceName: service-docker-repository-query-cron-suwayomi + replicas: 1 + selector: + matchLabels: + app: service-royalroad-chapters-cron + template: + metadata: + labels: + app: service-royalroad-chapters-cron + spec: + containers: + - name: cron + image: curlimages/curl:latest + command: + - /bin/sh + - -c + - | + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"startup\"}" + while true; do + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"curl start\"}" + curl -s -X GET --max-time 150 http://service-docker-repository-query-internal:5000/suwayomi + echo + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"curl end\"}" + sleep 21600 + done diff --git a/service-royalroad-chapters/cron-check-new-royalroad-chapters.yaml b/service-royalroad-chapters/cron-check-new-royalroad-chapters.yaml index 8bf8e33..a3477ba 100644 --- a/service-royalroad-chapters/cron-check-new-royalroad-chapters.yaml +++ b/service-royalroad-chapters/cron-check-new-royalroad-chapters.yaml @@ -6,9 +6,11 @@ metadata: spec: schedule: "5-59/10 * * * *" successfulJobsHistoryLimit: 1 + concurrencyPolicy: Forbid failedJobsHistoryLimit: 1 jobTemplate: spec: + activeDeadlineSeconds: 120 template: spec: containers: diff --git a/service-royalroad-chapters/deployment.yaml b/service-royalroad-chapters/deployment.yaml index a024873..c213f86 100644 --- a/service-royalroad-chapters/deployment.yaml +++ b/service-royalroad-chapters/deployment.yaml @@ -16,6 +16,23 @@ spec: imagePullSecrets: - name: ghcr-secret initContainers: + - name: wait-for-mysql + image: busybox + command: + - sh + - -c + - | + until nslookup mysql.app-notifications.svc.cluster.local; do + echo "Waiting for MySQL DNS..." + sleep 2 + done + + until nc -z mysql.app-notifications.svc.cluster.local 3306; do + echo "Waiting for MySQL..." + sleep 2 + done + + echo "MySQL is available" - name: copy-secrets image: busybox command: @@ -44,6 +61,8 @@ spec: value: "mysql.app-notifications.svc.cluster.local" - name: BACKEND_API_URL value: "http://backend-api-internal.app-notifications.svc.cluster.local:8101/internal/receive-notifications" + - name: LOG_LEVEL + value: "INFO" volumeMounts: - name: writable-secrets mountPath: /etc/secrets diff --git a/service-royalroad-chapters/service-royalroad-chapters-cron.yaml b/service-royalroad-chapters/service-royalroad-chapters-cron.yaml new file mode 100644 index 0000000..3f19c92 --- /dev/null +++ b/service-royalroad-chapters/service-royalroad-chapters-cron.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: service-royalroad-chapters-cron + namespace: app-notifications +spec: + serviceName: service-royalroad-chapters-cron + replicas: 1 + selector: + matchLabels: + app: service-royalroad-chapters-cron + template: + metadata: + labels: + app: service-royalroad-chapters-cron + spec: + containers: + - name: cron + image: curlimages/curl:latest + command: + - /bin/sh + - -c + - | + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"startup\"}" + while true; do + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"curl start\"}" + curl -s -X GET --max-time 150 http://service-royalroad-chapters-internal:5000/royalroad + echo + echo "{\"timestamp\":\"$(date '+%Y-%m-%dT%H:%M:%S%z')\",\"event\":\"curl end\"}" + sleep 300 + done