diff --git a/src/homework/13-kubernates-config/13.1/config/testing/deployment.yml b/src/homework/13-kubernates-config/13.1/config/testing/deployment.yml new file mode 100644 index 0000000..6eda8b0 --- /dev/null +++ b/src/homework/13-kubernates-config/13.1/config/testing/deployment.yml @@ -0,0 +1,82 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: testing-app + name: testing-app + namespace: default +spec: + replicas: 1 + template: + spec: + containers: + - image: dannecron/netology-devops-k8s-app:frontend-latest + imagePullPolicy: Always + name: netology-frontend + - image: dannecron/netology-devops-k8s-app:backend-latest + imagePullPolicy: Always + name: netology-backend + env: + - name: DATABASE_URL + value: "postgres://pg_user:pg_passwd@postgres:5432/news" + 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 diff --git a/src/homework/13-kubernates-config/13.1/readme.md b/src/homework/13-kubernates-config/13.1/readme.md index 51f4554..e10cc8b 100644 --- a/src/homework/13-kubernates-config/13.1/readme.md +++ b/src/homework/13-kubernates-config/13.1/readme.md @@ -17,9 +17,12 @@ Директория с проектом приложения: [project](/src/homework/13-kubernates-config/project). В первую очередь необходимо собрать образы приложения и опубликовать их в `registry`, -который будет доступен из кластера. Например, [hub.docker.com](https://hub.docker.com/) +который будет доступен из кластера. Например, [hub.docker.com](https://hub.docker.com/). -// todo +Для этой цели создан репозиторий [dannecron/netology-devops-k8s-app](https://hub.docker.com/repository/docker/dannecron/netology-devops-k8s-app) +и собраны два тега: `frontend-latest` и `backend-latest`. + +Итоговая конфигурация для деплоя приложения в кластер k8s будет выглядеть следующим образом: [testing/deployment.yml](./config/testing/deployment.yml). ### Задание 2 diff --git a/src/homework/13-kubernates-config/project/Makefile b/src/homework/13-kubernates-config/project/Makefile new file mode 100644 index 0000000..87bfe95 --- /dev/null +++ b/src/homework/13-kubernates-config/project/Makefile @@ -0,0 +1,9 @@ +IMAGE_NAME=dannecron/netology-devops-k8s-app + +build-backend: + cd ./backend && docker build -t ${IMAGE_NAME}:backend-latest . \ + && docker push ${IMAGE_NAME}:backend-latest + +build-frontend: + cd ./frontend && docker build -t ${IMAGE_NAME}:frontend-latest . \ + && docker push ${IMAGE_NAME}:frontend-latest diff --git a/src/homework/13-kubernates-config/project/backend/Dockerfile b/src/homework/13-kubernates-config/project/backend/Dockerfile index fa08d7b..363313e 100644 --- a/src/homework/13-kubernates-config/project/backend/Dockerfile +++ b/src/homework/13-kubernates-config/project/backend/Dockerfile @@ -4,11 +4,11 @@ RUN mkdir /app && python -m pip install pipenv WORKDIR /app -ADD Pipfile /app/Pipfile -ADD Pipfile.lock /app/Pipfile.lock +COPY Pipfile /app/Pipfile +COPY Pipfile.lock /app/Pipfile.lock RUN pipenv install -ADD main.py /app/main.py +COPY main.py /app/main.py CMD pipenv run uvicorn main:app --reload --host 0.0.0.0 --port 9000 diff --git a/src/homework/13-kubernates-config/project/docker-compose.yml b/src/homework/13-kubernates-config/project/docker-compose.yml index 144724f..7463aaa 100644 --- a/src/homework/13-kubernates-config/project/docker-compose.yml +++ b/src/homework/13-kubernates-config/project/docker-compose.yml @@ -4,14 +4,14 @@ services: frontend: build: ./frontend ports: - - 8000:80 + - "8000:80" backend: build: ./backend links: - db ports: - - 9000:9000 + - "9000:9000" db: image: postgres:13-alpine diff --git a/src/homework/13-kubernates-config/project/frontend/.env b/src/homework/13-kubernates-config/project/frontend/.env index a1454d1..e71ab27 100644 --- a/src/homework/13-kubernates-config/project/frontend/.env +++ b/src/homework/13-kubernates-config/project/frontend/.env @@ -1 +1 @@ -BASE_URL=http://localhost:9000 \ No newline at end of file +BASE_URL=http://netology-backend:9000 diff --git a/src/homework/13-kubernates-config/project/frontend/Dockerfile b/src/homework/13-kubernates-config/project/frontend/Dockerfile index da32c69..ac02284 100644 --- a/src/homework/13-kubernates-config/project/frontend/Dockerfile +++ b/src/homework/13-kubernates-config/project/frontend/Dockerfile @@ -1,15 +1,15 @@ -FROM node:lts-buster as builder +FROM node:16-buster as builder RUN mkdir /app WORKDIR /app -ADD package.json /app/package.json -ADD package-lock.json /app/package-lock.json +COPY package.json /app/package.json +COPY package-lock.json /app/package-lock.json RUN npm i -ADD . /app +COPY . /app RUN npm run build && rm -rf /app/node_modules @@ -21,4 +21,4 @@ COPY --from=builder /app/ /app RUN mv /app/markup/* /app && rm -rf /app/markup -ADD demo.conf /etc/nginx/conf.d/default.conf +COPY demo.conf /etc/nginx/conf.d/default.conf