From 40e38eaca167c3843d71098d2b7db4d41dfb6106 Mon Sep 17 00:00:00 2001 From: Yan Kasabutski Date: Thu, 17 Apr 2025 01:56:04 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?z2/k8s=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- z2/k8s/backend-deployment.yaml | 20 +++++++ z2/k8s/backend-service.yaml | 11 ++++ z2/k8s/deployment.yaml | 30 +++++++++++ z2/k8s/frontend-deployment.yaml | 21 ++++++++ z2/k8s/frontend-service.yaml | 12 +++++ z2/k8s/ingress.yaml | 18 +++++++ z2/k8s/namespace.yaml | 4 ++ z2/k8s/service.yaml | 12 +++++ z2/k8s/statefulset.yaml | 37 +++++++++++++ z2/k8s/todo-app-deployment.yaml | 87 +++++++++++++++++++++++++++++++ z2/k8s/todo-app-ns-v2.yaml | 4 ++ z2/k8s/todo-app-pv.yaml | 14 +++++ z2/k8s/todo-app-pvc.yaml | 12 +++++ z2/k8s/todo-data-service.yaml | 12 +++++ z2/k8s/todo-data-statefulset.yaml | 23 ++++++++ 15 files changed, 317 insertions(+) create mode 100644 z2/k8s/backend-deployment.yaml create mode 100644 z2/k8s/backend-service.yaml create mode 100644 z2/k8s/deployment.yaml create mode 100644 z2/k8s/frontend-deployment.yaml create mode 100644 z2/k8s/frontend-service.yaml create mode 100644 z2/k8s/ingress.yaml create mode 100644 z2/k8s/namespace.yaml create mode 100644 z2/k8s/service.yaml create mode 100644 z2/k8s/statefulset.yaml create mode 100644 z2/k8s/todo-app-deployment.yaml create mode 100644 z2/k8s/todo-app-ns-v2.yaml create mode 100644 z2/k8s/todo-app-pv.yaml create mode 100644 z2/k8s/todo-app-pvc.yaml create mode 100644 z2/k8s/todo-data-service.yaml create mode 100644 z2/k8s/todo-data-statefulset.yaml diff --git a/z2/k8s/backend-deployment.yaml b/z2/k8s/backend-deployment.yaml new file mode 100644 index 0000000..b288cd7 --- /dev/null +++ b/z2/k8s/backend-deployment.yaml @@ -0,0 +1,20 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend-deployment + namespace: todo-app-ns-v2 # Указываем пространство имен +spec: + replicas: 1 + selector: + matchLabels: + app: backend + template: + metadata: + labels: + app: backend + spec: + containers: + - name: backend + image: jank8000/backend-image:latest + ports: + - containerPort: 8081 diff --git a/z2/k8s/backend-service.yaml b/z2/k8s/backend-service.yaml new file mode 100644 index 0000000..c3aadec --- /dev/null +++ b/z2/k8s/backend-service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: backend-service + namespace: todo-app-ns-v2 # Указываем пространство имен +spec: + ports: + - port: 8081 + targetPort: 8081 + selector: + app: backend diff --git a/z2/k8s/deployment.yaml b/z2/k8s/deployment.yaml new file mode 100644 index 0000000..580357a --- /dev/null +++ b/z2/k8s/deployment.yaml @@ -0,0 +1,30 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: todo-web-app + namespace: todo-app-ns-v2 + labels: + app: todo-web-app +spec: + replicas: 2 + selector: + matchLabels: + app: todo-web-app + template: + metadata: + labels: + app: todo-web-app + spec: + containers: + - name: todo-web-app + image: todo-web-app:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + resources: + limits: + cpu: "500m" + memory: "256Mi" + requests: + cpu: "100m" + memory: "128Mi" diff --git a/z2/k8s/frontend-deployment.yaml b/z2/k8s/frontend-deployment.yaml new file mode 100644 index 0000000..e3272de --- /dev/null +++ b/z2/k8s/frontend-deployment.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend-deployment + namespace: todo-app-ns-v2 +spec: + replicas: 1 + selector: + matchLabels: + app: todo-web + template: + metadata: + labels: + app: todo-web + spec: + containers: + - name: todo-web + image: jank8000/todo-web:latest # Указываем Docker-образ фронтенда, который вы загрузили + ports: + - containerPort: 80 + diff --git a/z2/k8s/frontend-service.yaml b/z2/k8s/frontend-service.yaml new file mode 100644 index 0000000..035e08e --- /dev/null +++ b/z2/k8s/frontend-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: frontend-service + namespace: todo-app-ns-v2 +spec: + selector: + app: todo-web + ports: + - protocol: TCP + port: 80 + type: ClusterIP # Сервис будет доступен внутри кластера diff --git a/z2/k8s/ingress.yaml b/z2/k8s/ingress.yaml new file mode 100644 index 0000000..f1a803c --- /dev/null +++ b/z2/k8s/ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: todo-ingress + namespace: todo-app-ns-v2 +spec: + rules: + - host: 147.232.185.30 # Указан ваш внешний IP + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: frontend-service + port: + number: 80 + diff --git a/z2/k8s/namespace.yaml b/z2/k8s/namespace.yaml new file mode 100644 index 0000000..1666873 --- /dev/null +++ b/z2/k8s/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: todo-app-ns-v2 diff --git a/z2/k8s/service.yaml b/z2/k8s/service.yaml new file mode 100644 index 0000000..1da18b0 --- /dev/null +++ b/z2/k8s/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: backend-service + namespace: todo-app-ns-v2 +spec: + selector: + app: todo-backend + ports: + - protocol: TCP + port: 80 + targetPort: 5000 diff --git a/z2/k8s/statefulset.yaml b/z2/k8s/statefulset.yaml new file mode 100644 index 0000000..ce62de2 --- /dev/null +++ b/z2/k8s/statefulset.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: todo-data-manager # Имя StatefulSet + namespace: todo-app-ns-v2 # Пространство имен +spec: + serviceName: "todo-data-service" # Сервис для StatefulSet + replicas: 1 # Количество реплик + selector: + matchLabels: + app: todo-data # Лейбл для выборки подов + template: + metadata: + labels: + app: todo-data # Лейблы для подов + spec: + imagePullSecrets: + - name: my-docker-secret # Секрет для загрузки образа Docker + containers: + - name: todo-data # Имя контейнера + image: jank8000/todo-data-image:latest # Docker образ + ports: + - containerPort: 8080 # Порт контейнера + volumeMounts: + - name: todo-app-pvc # PVC, которое будет монтироваться + mountPath: /data # Место, где данные будут храниться в контейнере + volumeClaimTemplates: + - metadata: + name: todo-app-pvc # PVC для хранения данных + namespace: todo-app-ns-v2 # Пространство имен для PVC + spec: + accessModes: + - ReadWriteOnce # Режим доступа к PVC + resources: + requests: + storage: 1Gi # Запрос на 1Gi хранилища + volumeMode: Filesystem # Монтирование как файловая система diff --git a/z2/k8s/todo-app-deployment.yaml b/z2/k8s/todo-app-deployment.yaml new file mode 100644 index 0000000..76b5c25 --- /dev/null +++ b/z2/k8s/todo-app-deployment.yaml @@ -0,0 +1,87 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: todo-app-ns-v2 +--- +apiVersion: v1 +kind: Service +metadata: + name: todo-web-service + namespace: todo-app-ns-v2 +spec: + selector: + app: todo-web + ports: + - protocol: TCP + port: 80 + targetPort: 8080 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend-deployment + namespace: todo-app-ns-v2 +spec: + replicas: 1 + selector: + matchLabels: + app: todo-web + template: + metadata: + labels: + app: todo-web + spec: + containers: + - name: frontend + image: your-frontend-image:latest # Укажи свой образ для фронтенда + ports: + - containerPort: 8080 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend-deployment + namespace: todo-app-ns-v2 +spec: + replicas: 1 + selector: + matchLabels: + app: todo-backend + template: + metadata: + labels: + app: todo-backend + spec: + containers: + - name: backend + image: your-backend-image:latest # Укажи свой образ для бэкенда + ports: + - containerPort: 8080 +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: todo-app-pv + namespace: todo-app-ns-v2 +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + hostPath: + path: /mnt/data +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: todo-app-pvc + namespace: todo-app-ns-v2 +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + volumeName: todo-app-pv diff --git a/z2/k8s/todo-app-ns-v2.yaml b/z2/k8s/todo-app-ns-v2.yaml new file mode 100644 index 0000000..a631544 --- /dev/null +++ b/z2/k8s/todo-app-ns-v2.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: todo-app-ns-v2 diff --git a/z2/k8s/todo-app-pv.yaml b/z2/k8s/todo-app-pv.yaml new file mode 100644 index 0000000..07824b4 --- /dev/null +++ b/z2/k8s/todo-app-pv.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: todo-app-pv + namespace: todo-app-ns-v2 # Указываем пространство имен +spec: + capacity: + storage: 1Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + hostPath: + path: "/mnt/data/todo-app" diff --git a/z2/k8s/todo-app-pvc.yaml b/z2/k8s/todo-app-pvc.yaml new file mode 100644 index 0000000..39d9cbd --- /dev/null +++ b/z2/k8s/todo-app-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: todo-app-pvc + namespace: todo-app-ns-v2 # Указываем пространство имен +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + volumeMode: Filesystem diff --git a/z2/k8s/todo-data-service.yaml b/z2/k8s/todo-data-service.yaml new file mode 100644 index 0000000..9a091e0 --- /dev/null +++ b/z2/k8s/todo-data-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: todo-data-service + namespace: todo-app-ns-v2 # Указываем пространство имен +spec: + ports: + - port: 8080 + targetPort: 8080 + selector: + app: todo-data + clusterIP: None # Указывает на использование StatefulSet diff --git a/z2/k8s/todo-data-statefulset.yaml b/z2/k8s/todo-data-statefulset.yaml new file mode 100644 index 0000000..abf474c --- /dev/null +++ b/z2/k8s/todo-data-statefulset.yaml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: todo-data-manager + namespace: todo-app-ns-v2 # Указываем пространство имен +spec: + serviceName: "todo-data-service" + replicas: 1 + selector: + matchLabels: + app: todo-data + template: + metadata: + labels: + app: todo-data + spec: + imagePullSecrets: + - name: my-docker-secret # Имя секрета для DockerHub + containers: + - name: todo-data + image: jank8000/todo-data-image:latest + ports: + - containerPort: 8080