Skip to content

Commit

Permalink
Added task 16
Browse files Browse the repository at this point in the history
  • Loading branch information
ityulkanov committed Dec 14, 2024
1 parent 69188aa commit a0c34e3
Show file tree
Hide file tree
Showing 11 changed files with 92 additions and 6 deletions.
9 changes: 9 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/hw16_calendar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## Домашнее задание №16 «Развертывание в Kubernetes»

### Критерии оценки
- [ ] Кластер Kubernetes развернут и работает - 2 балла (приложить скриншоты в MR)
- [ ] Написаны корректные манифесты для всех процессов приложения - 3 балла
- [ ] Создан Helm chart, манифесты шаблонизированы - 3 балла
- [ ] В `values.yaml` указаны дефолтные значения - 2 балла

#### Зачёт от 7 баллов
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
13) [«API к Календарю»](./hw12_13_14_15_calendar/docs/13_README.md)
14) [«Кроликизация Календаря»](./hw12_13_14_15_calendar/docs/14_README.md)
15) [«Докеризация и интеграционное тестирование Календаря»](./hw12_13_14_15_calendar/docs/15_README.md)
16) [«Проект»](https://github.com/OtusGolang/final_project)
16) [«Развертывание в Kubernetes»](./hw12_13_14_15_calendar/docs/16_README.md)
17) [«Проект»](https://github.com/OtusGolang/final_project)

---
[Инструкция по сдаче ДЗ](https://github.com/OtusGolang/home_work/wiki#%D0%A1%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%B0%D0%BC).
Expand Down
5 changes: 5 additions & 0 deletions hw12_13_14_15_calendar/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: v2
name: calendar-chart
description: A Helm chart for the Calendar application
version: 0.1.0
appVersion: "1.0"
2 changes: 1 addition & 1 deletion hw12_13_14_15_calendar/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ build:
go build -v -o $(BIN) -ldflags "$(LDFLAGS)" ./cmd/calendar

run: build
$(BIN) -config ./configs/config.toml
$(BIN) -config ./configs/config.yaml

build-img:
docker build \
Expand Down
4 changes: 2 additions & 2 deletions hw12_13_14_15_calendar/build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ LABEL MAINTAINERS="[email protected]"
ENV BIN_FILE "/opt/calendar/calendar-app"
COPY --from=build ${BIN_FILE} ${BIN_FILE}

ENV CONFIG_FILE /etc/calendar/config.toml
COPY ./configs/config.toml ${CONFIG_FILE}
ENV CONFIG_FILE /etc/calendar/config.yaml
COPY ./configs/config.yaml ${CONFIG_FILE}

CMD ${BIN_FILE} -config ${CONFIG_FILE}
2 changes: 1 addition & 1 deletion hw12_13_14_15_calendar/cmd/calendar/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
var configFile string

func init() {
flag.StringVar(&configFile, "config", "/etc/calendar/config.toml", "Path to configuration file")
flag.StringVar(&configFile, "config", "/etc/calendar/config.yaml", "Path to configuration file")
}

func main() {
Expand Down
File renamed without changes.
47 changes: 47 additions & 0 deletions hw12_13_14_15_calendar/docs/16_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
## Домашнее задание №16 «Развертывание в Kubernetes»

### Задание
1. Развернуть кластер Kubernetes (minikube/k3s/microk8s).
2. Написать Kubernetes манифесты для процессов приложения календаря (Deployment, Service, Ingress).
3. Написать Helm chart для шаблонизации манифестов, создать values файл с дефолтными значениями.

### Порядок выполнения

#### 1. Развертывание кластера Kubernetes
Выберите один из следующих инструментов для развертывания кластера Kubernetes:
- Minikube
- k3s
- MicroK8s

Следуйте официальной документации выбранного инструмента для установки и настройки кластера.

#### 2. Написание Kubernetes манифестов
Создайте манифесты для следующих ресурсов:
- Deployment: для каждого процесса приложения календаря (API, Планировщик, Рассыльщик).
- Service: для каждого Deployment, чтобы обеспечить доступ к подам.
- Ingress: для маршрутизации внешнего трафика к сервисам.

Пример структуры файлов:
```yaml
calendar-chart/
charts/
templates/
deployment.yaml
service.yaml
ingress.yaml
values.yaml
Chart.yaml
```
#### 3. Написание Helm chart
Создайте Helm chart для шаблонизации манифестов.


В файле `values.yaml` укажите дефолтные значения для параметров, используемых в шаблонах.

### Критерии оценки
- Кластер Kubernetes развернут и работает - 2 балла (приложить скриншоты в MR)
- Написаны корректные манифесты для всех процессов приложения - 3 балла
- Создан Helm chart, манифесты шаблонизированы. - 3 балла
- В `values.yaml` указаны дефолтные значения. - 2 балла

#### Зачёт от 7 баллов
2 changes: 1 addition & 1 deletion hw12_13_14_15_calendar/docs/CALENDAR.MD
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,5 @@ API предоставляет собой GRPC и HTTP интерфейсы дл
* Добавляем HTTP и GRPC API.
* Выделяем Планировщик и Рассыльщик. Интегрируемся с очередью сообщений.
* Создаем Docker-образы, docker-compose конфигурации, пишем интеграционные тесты.

* Развернуть кластер Kubernetes (minikube/k3s/microk8s), написать Kubernetes манифесты для процессов приложения календаря (Deployment, Service, Ingress), создать Helm chart для шаблонизации манифестов, создать values файл с дефолтными значениями.
Таким образом, на каждом этапе мы получаем осмысленный проект.
2 changes: 2 additions & 0 deletions hw12_13_14_15_calendar/templates/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
apiVersion: apps/v1
kind: Deployment
22 changes: 22 additions & 0 deletions hw12_13_14_15_calendar/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
replicaCount: 1

image:
repository: my-calendar-app
tag: "latest"
pullPolicy: IfNotPresent

service:
type: ClusterIP
port: 80

ingress:
enabled: false
annotations: {}
hosts:
- host: chart-example.local
paths: []
tls: []

resources: {}
nodeSelector: {}
affinity: {}

0 comments on commit a0c34e3

Please sign in to comment.