diff --git a/sk1/k8s/deployment.yaml b/sk1/k8s/deployment.yaml new file mode 100644 index 0000000..8cb9535 --- /dev/null +++ b/sk1/k8s/deployment.yaml @@ -0,0 +1,29 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: travel-planner + namespace: travel-planner +spec: + replicas: 2 + selector: + matchLabels: + app: travel-planner + template: + metadata: + labels: + app: travel-planner + spec: + containers: + - name: python-app + image: travelplannerregistry.azurecr.io/travel-planner + ports: + - containerPort: 5000 + env: + - name: DB_HOST + value: postgres-db + - name: POSTGRES_DB + value: travel_planner + - name: POSTGRES_USER + value: user + - name: POSTGRES_PASSWORD + value: password \ No newline at end of file diff --git a/sk1/k8s/namespace.yaml b/sk1/k8s/namespace.yaml new file mode 100644 index 0000000..b27303b --- /dev/null +++ b/sk1/k8s/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: travel-planner diff --git a/sk1/k8s/persistent-volume-claim.yaml b/sk1/k8s/persistent-volume-claim.yaml new file mode 100644 index 0000000..930ed5c --- /dev/null +++ b/sk1/k8s/persistent-volume-claim.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postgres-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi # Taille demandée diff --git a/sk1/k8s/persistent-volume.yaml b/sk1/k8s/persistent-volume.yaml new file mode 100644 index 0000000..5609177 --- /dev/null +++ b/sk1/k8s/persistent-volume.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: postgres-pv + labels: + type: local +spec: + capacity: + storage: 5Gi # Taille du volume + accessModes: + - ReadWriteOnce # Seul un pod peut monter le volume en écriture + persistentVolumeReclaimPolicy: Retain # Conserve les données même après suppression du PVC + hostPath: + path: /data/postgres # Chemin local sur le nœud diff --git a/sk1/k8s/postgres-service.yaml b/sk1/k8s/postgres-service.yaml new file mode 100644 index 0000000..dc3c7e5 --- /dev/null +++ b/sk1/k8s/postgres-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: postgres-db + namespace: travel-planner +spec: + selector: + app: postgres + ports: + - protocol: TCP + port: 5432 + targetPort: 5432 \ No newline at end of file diff --git a/sk1/k8s/secret.yaml b/sk1/k8s/secret.yaml new file mode 100644 index 0000000..c923ced --- /dev/null +++ b/sk1/k8s/secret.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: postgres-secret + namespace: travel-planner +type: Opaque +data: + POSTGRES_USER: dXNlcg== + POSTGRES_PASSWORD: cGFzc3dvcmQ= + POSTGRES_DB: dHJhdmVsX3BsYW5uZXI= + diff --git a/sk1/k8s/service.yaml b/sk1/k8s/service.yaml new file mode 100644 index 0000000..1aba8b3 --- /dev/null +++ b/sk1/k8s/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: travel-planner + namespace: travel-planner +spec: + selector: + app: travel-planner + ports: + - protocol: TCP + port: 80 + targetPort: 5000 + nodePort: 30000 + type: LoadBalancer \ No newline at end of file diff --git a/sk1/k8s/statefulset.yaml b/sk1/k8s/statefulset.yaml new file mode 100644 index 0000000..f166729 --- /dev/null +++ b/sk1/k8s/statefulset.yaml @@ -0,0 +1,43 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: postgres + namespace: travel-planner +spec: + serviceName: "postgres-db" + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres:13 + ports: + - containerPort: 5432 + name: postgres + env: + - name: POSTGRES_USER + value: user + - name: POSTGRES_PASSWORD + value: password + - name: POSTGRES_DB + value: travel_planner + - name: PGDATA + value: /var/lib/postgresql/data/pgdata + volumeMounts: + - name: postgres-data + mountPath: /var/lib/postgresql/data/pgdata + subPath: pgdata + volumeClaimTemplates: + - metadata: + name: postgres-data + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 5Gi