homework 13.1: fix task 1

This commit is contained in:
2022-12-02 10:56:35 +07:00
parent 0a94c5f7b4
commit 73c76b404c
2 changed files with 113 additions and 60 deletions

View File

@@ -1,4 +1,86 @@
--- ---
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
POSTGRES_DB: news
POSTGRES_USER: db_user
POSTGRES_PASSWORD: db_passwd
PGDATA: /var/lib/postgresql/data
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv-volume # Sets PV's name
labels:
type: local # Sets PV's type to local
app: postgres
spec:
storageClassName: manual
capacity:
storage: 1Gi # Sets PV Volume
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/pgsql_data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pv-claim # Sets name of PVC
labels:
app: postgres
spec:
storageClassName: manual
accessModes:
- ReadWriteMany # Sets read and write access
resources:
requests:
storage: 1Gi # Sets volume size
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: testing-app
db-kind: postgresql
name: testing-db
namespace: default
spec:
selector:
matchLabels:
db-kind: postgresql
serviceName: postgres
replicas: 1
podManagementPolicy: "Parallel"
updateStrategy:
type: "RollingUpdate"
template:
metadata:
labels:
db-kind: postgresql
spec:
terminationGracePeriodSeconds: 60
containers:
- name: postgres
image: postgres:13-alpine # Sets Image
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432 # Exposes container port
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim
---
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -8,7 +90,13 @@ metadata:
namespace: default namespace: default
spec: spec:
replicas: 1 replicas: 1
selector:
matchLabels:
app: testing-app
template: template:
metadata:
labels:
app: testing-app
spec: spec:
containers: containers:
- image: dannecron/netology-devops-k8s-app:frontend-latest - image: dannecron/netology-devops-k8s-app:frontend-latest
@@ -19,64 +107,5 @@ spec:
name: netology-backend name: netology-backend
env: env:
- name: DATABASE_URL - name: DATABASE_URL
value: "postgres://pg_user:pg_passwd@postgres:5432/news" value: "postgres://db_user:db_passwd@postgres:5432/news"
terminationGracePeriodSeconds: 30 terminationGracePeriodSeconds: 30
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: testing-app
db-kind: postgresql
name: testing-db
namespace: default
spec:
serviceName: postgres
replicas: 1
podManagementPolicy: "Parallel"
updateStrategy:
type: "RollingUpdate"
selector:
matchLabels:
db-kind: postgresql
template:
metadata:
labels:
db-kind: postgresql
specs:
volumes: []
terminationGracePeriodSeconds: 60
containers:
- name: postgres
image: postgres:13-alpine
imagePullPolicy: "IfNotPresent"
ports:
- name: postgres
containerPort: 5432
protocol: TCP
resources:
requests:
cpu: 100m
memory: 256Mi
env:
- name: POSTGRES_USER
value: pg_user
- name: POSTGRES_PASSWORD
value: pg_passwd
- name: POSTGRES_DB
value: news
- name: PGDATA
value: /var/lib/postgresql/data
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres
volumeClaimTemplates:
- metadata:
name: postgres
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi

View File

@@ -23,6 +23,30 @@
и собраны два тега: `frontend-latest` и `backend-latest`. и собраны два тега: `frontend-latest` и `backend-latest`.
Итоговая конфигурация для деплоя приложения в кластер k8s будет выглядеть следующим образом: [testing/deployment.yml](./config/testing/deployment.yml). Итоговая конфигурация для деплоя приложения в кластер k8s будет выглядеть следующим образом: [testing/deployment.yml](./config/testing/deployment.yml).
Здесь будет создано несколько сущностей, а именно:
* `ConfigMap` для хранения конфигурации `postgresql`
* `PersistentVolume` - персистентное дисковое хранилище для базы данных
* `PersistentVolumeClaim` - конфигурация для использования хранилища подами
* `StatefulSet` - разворачивание базы данных `postgresql`
* `Deployment` - разворачивание непосредственно приложения
Применение конфигурации:
```shell
kubectl apply -f testing/deployment.yml
```
После применения:
```shell
kubectl get pods
```
```text
kubectl get pods
NAME READY STATUS RESTARTS AGE
testing-app-57d756f489-r6gw8 2/2 Running 0 4m13s
testing-db-0 1/1 Running 5 (6m20s ago) 7m53s
```
### Задание 2 ### Задание 2