From 8a2315c9b365da6e2e890fc55bb0425bc471cb61 Mon Sep 17 00:00:00 2001 From: ITO Mac Date: Mon, 8 Jun 2026 21:32:34 +0200 Subject: [PATCH] init --- app/deployment.yaml | 54 ++++++++++++++++++++++++++++++++++++++++ app/ingress.yaml | 24 ++++++++++++++++++ app/service.yaml | 12 +++++++++ config/configmap.yaml | 9 +++++++ config/namespace.yaml | 6 +++++ config/secret.yaml | 9 +++++++ database/deployment.yaml | 41 ++++++++++++++++++++++++++++++ database/pvc.yaml | 12 +++++++++ database/service.yaml | 13 ++++++++++ 9 files changed, 180 insertions(+) create mode 100644 app/deployment.yaml create mode 100644 app/ingress.yaml create mode 100644 app/service.yaml create mode 100644 config/configmap.yaml create mode 100644 config/namespace.yaml create mode 100644 config/secret.yaml create mode 100644 database/deployment.yaml create mode 100644 database/pvc.yaml create mode 100644 database/service.yaml diff --git a/app/deployment.yaml b/app/deployment.yaml new file mode 100644 index 0000000..94c2152 --- /dev/null +++ b/app/deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: fastapi-api + namespace: student-blazp04 + annotations: + argocd.argoproj.io/sync-wave: "1" +spec: + replicas: 1 + selector: + matchLabels: + app: fastapi-api + template: + metadata: + labels: + app: fastapi-api + spec: + containers: + - name: fastapi-api + image: vasic/fastapi-todo-api:1.0 + ports: + - containerPort: 8000 + env: + - name: DATABASE_HOST + valueFrom: + configMapKeyRef: + name: fastapi-config + key: DATABASE_HOST + - name: DATABASE_PORT + valueFrom: + configMapKeyRef: + name: fastapi-config + key: DATABASE_PORT + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: postgres-secret + key: POSTGRES_USER + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: postgres-secret + key: POSTGRES_PASSWORD + - name: POSTGRES_DB + valueFrom: + secretKeyRef: + name: postgres-secret + key: POSTGRES_DB + readinessProbe: + httpGet: + path: /health + port: 8000 + initialDelaySeconds: 15 + periodSeconds: 5 diff --git a/app/ingress.yaml b/app/ingress.yaml new file mode 100644 index 0000000..ba31fa9 --- /dev/null +++ b/app/ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: fastapi-api-ingress + namespace: student-blazp04 + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure + cert-manager.io/cluster-issuer: letsencrypt-prod +spec: + rules: + - host: student-blazp04.fpmoz.sum.ba + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: fastapi-api-service + port: + number: 80 + tls: + - hosts: + - student-blazp04.fpmoz.sum.ba + secretName: fastapi-api-tls diff --git a/app/service.yaml b/app/service.yaml new file mode 100644 index 0000000..bcbe5de --- /dev/null +++ b/app/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: fastapi-api-service + namespace: student-blazp04 +spec: + selector: + app: fastapi-api + ports: + - port: 80 + targetPort: 8000 + type: ClusterIP diff --git a/config/configmap.yaml b/config/configmap.yaml new file mode 100644 index 0000000..3a11eb5 --- /dev/null +++ b/config/configmap.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +data: + APP_ENV: production + DATABASE_HOST: postgres + DATABASE_PORT: "5432" +kind: ConfigMap +metadata: + name: fastapi-config + namespace: student-blazp04 diff --git a/config/namespace.yaml b/config/namespace.yaml new file mode 100644 index 0000000..0384a93 --- /dev/null +++ b/config/namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: student-blazp04 + labels: + menanged-by: argocd diff --git a/config/secret.yaml b/config/secret.yaml new file mode 100644 index 0000000..136610a --- /dev/null +++ b/config/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +data: + POSTGRES_DB: ZmFzdGFwaWRi + POSTGRES_PASSWORD: c3R1ZGVudDEyMw== + POSTGRES_USER: ZmFzdGFwaXVzZXI= +kind: Secret +metadata: + name: postgres-secret + namespace: student-blazp04 diff --git a/database/deployment.yaml b/database/deployment.yaml new file mode 100644 index 0000000..67b8628 --- /dev/null +++ b/database/deployment.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: postgres + name: postgres + namespace: student-blazp04 +spec: + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - image: postgres:16-alpine + name: postgres + envFrom: + - secretRef: + name: postgres-secret + ports: + - containerPort: 5432 + volumeMounts: + - name: postgres-data + mountPath: /var/lib/postgresql/data + readinessProbe: + exec: + command: + - pg_isready + - -U + - $(POSTGRES_USER) + initialDelaySeconds: 5 + periodSeconds: 10 + volumes: + - name: postgres-data + persistentVolumeClaim: + claimName: postgres-pvc +status: {} diff --git a/database/pvc.yaml b/database/pvc.yaml new file mode 100644 index 0000000..734c429 --- /dev/null +++ b/database/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postgres-pvc + namespace: student-blazp04 +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: local-path diff --git a/database/service.yaml b/database/service.yaml new file mode 100644 index 0000000..f7d79dd --- /dev/null +++ b/database/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: postgres-service + namespace: student-blazp04 + +spec: + selector: + app: postgres + ports: + - port: 5432 + targetPort: 5432 + type: ClusterIP