From 7f4e6f64ed532b20bb51e590fe6e0a26718cd1de Mon Sep 17 00:00:00 2001 From: Igor Tiulkanov Date: Sat, 14 Dec 2024 12:43:24 +0300 Subject: [PATCH 1/2] Added task 16 --- .../PULL_REQUEST_TEMPLATE/hw16_calendar.md | 9 ++++ README.md | 3 +- hw12_13_14_15_calendar/Chart.yaml | 5 ++ hw12_13_14_15_calendar/Makefile | 2 +- hw12_13_14_15_calendar/README.md | 2 + hw12_13_14_15_calendar/build/Dockerfile | 4 +- hw12_13_14_15_calendar/cmd/calendar/main.go | 2 +- .../configs/{config.toml => config.yaml} | 0 hw12_13_14_15_calendar/docs/16_README.md | 47 +++++++++++++++++++ hw12_13_14_15_calendar/docs/CALENDAR.MD | 2 +- .../templates/deployment.yaml | 2 + hw12_13_14_15_calendar/values.yaml | 22 +++++++++ 12 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE/hw16_calendar.md create mode 100644 hw12_13_14_15_calendar/Chart.yaml rename hw12_13_14_15_calendar/configs/{config.toml => config.yaml} (100%) create mode 100644 hw12_13_14_15_calendar/docs/16_README.md create mode 100644 hw12_13_14_15_calendar/templates/deployment.yaml create mode 100644 hw12_13_14_15_calendar/values.yaml diff --git a/.github/PULL_REQUEST_TEMPLATE/hw16_calendar.md b/.github/PULL_REQUEST_TEMPLATE/hw16_calendar.md new file mode 100644 index 00000000..8914f4e5 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/hw16_calendar.md @@ -0,0 +1,9 @@ +## Домашнее задание №16 «Развертывание в Kubernetes» + +### Критерии оценки +- [ ] Кластер Kubernetes развернут и работает - 2 балла (приложить скриншоты в MR) +- [ ] Написаны корректные манифесты для всех процессов приложения - 3 балла +- [ ] Создан Helm chart, манифесты шаблонизированы - 3 балла +- [ ] В `values.yaml` указаны дефолтные значения - 2 балла + +#### Зачёт от 7 баллов \ No newline at end of file diff --git a/README.md b/README.md index 75815ab2..16ebb1da 100644 --- a/README.md +++ b/README.md @@ -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). diff --git a/hw12_13_14_15_calendar/Chart.yaml b/hw12_13_14_15_calendar/Chart.yaml new file mode 100644 index 00000000..d9a78ddf --- /dev/null +++ b/hw12_13_14_15_calendar/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +name: calendar-chart +description: A Helm chart for the Calendar application +version: 0.1.0 +appVersion: "1.0" \ No newline at end of file diff --git a/hw12_13_14_15_calendar/Makefile b/hw12_13_14_15_calendar/Makefile index 9d3c3173..c6438327 100644 --- a/hw12_13_14_15_calendar/Makefile +++ b/hw12_13_14_15_calendar/Makefile @@ -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 \ diff --git a/hw12_13_14_15_calendar/README.md b/hw12_13_14_15_calendar/README.md index 36019310..6104915b 100644 --- a/hw12_13_14_15_calendar/README.md +++ b/hw12_13_14_15_calendar/README.md @@ -9,5 +9,7 @@ - `hw13_calendar` (от `hw12_calendar`) -> Merge Request в `hw12_calendar` (если уже вмержена, то в `master`) - `hw14_calendar` (от `hw13_calendar`) -> Merge Request в `hw13_calendar` (если уже вмержена, то в `master`) - `hw15_calendar` (от `hw14_calendar`) -> Merge Request в `hw14_calendar` (если уже вмержена, то в `master`) +- `hw16_calendar` (от `hw15_calendar`) -> Merge Request в `hw15_calendar` (если уже вмержена, то в `master`) + **Домашнее задание не принимается, если не принято ДЗ, предшедствующее ему.** diff --git a/hw12_13_14_15_calendar/build/Dockerfile b/hw12_13_14_15_calendar/build/Dockerfile index 3c6fa2aa..836da900 100644 --- a/hw12_13_14_15_calendar/build/Dockerfile +++ b/hw12_13_14_15_calendar/build/Dockerfile @@ -30,7 +30,7 @@ LABEL MAINTAINERS="student@otus.ru" 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} diff --git a/hw12_13_14_15_calendar/cmd/calendar/main.go b/hw12_13_14_15_calendar/cmd/calendar/main.go index 9ec5b283..8e67af8b 100644 --- a/hw12_13_14_15_calendar/cmd/calendar/main.go +++ b/hw12_13_14_15_calendar/cmd/calendar/main.go @@ -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() { diff --git a/hw12_13_14_15_calendar/configs/config.toml b/hw12_13_14_15_calendar/configs/config.yaml similarity index 100% rename from hw12_13_14_15_calendar/configs/config.toml rename to hw12_13_14_15_calendar/configs/config.yaml diff --git a/hw12_13_14_15_calendar/docs/16_README.md b/hw12_13_14_15_calendar/docs/16_README.md new file mode 100644 index 00000000..373b41d0 --- /dev/null +++ b/hw12_13_14_15_calendar/docs/16_README.md @@ -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 баллов \ No newline at end of file diff --git a/hw12_13_14_15_calendar/docs/CALENDAR.MD b/hw12_13_14_15_calendar/docs/CALENDAR.MD index b4c8f704..5622efe0 100644 --- a/hw12_13_14_15_calendar/docs/CALENDAR.MD +++ b/hw12_13_14_15_calendar/docs/CALENDAR.MD @@ -92,5 +92,5 @@ API предоставляет собой GRPC и HTTP интерфейсы дл * Добавляем HTTP и GRPC API. * Выделяем Планировщик и Рассыльщик. Интегрируемся с очередью сообщений. * Создаем Docker-образы, docker-compose конфигурации, пишем интеграционные тесты. - +* Развернуть кластер Kubernetes (minikube/k3s/microk8s), написать Kubernetes манифесты для процессов приложения календаря (Deployment, Service, Ingress), создать Helm chart для шаблонизации манифестов, создать values файл с дефолтными значениями. Таким образом, на каждом этапе мы получаем осмысленный проект. diff --git a/hw12_13_14_15_calendar/templates/deployment.yaml b/hw12_13_14_15_calendar/templates/deployment.yaml new file mode 100644 index 00000000..6bdc27bb --- /dev/null +++ b/hw12_13_14_15_calendar/templates/deployment.yaml @@ -0,0 +1,2 @@ +apiVersion: apps/v1 +kind: Deployment \ No newline at end of file diff --git a/hw12_13_14_15_calendar/values.yaml b/hw12_13_14_15_calendar/values.yaml new file mode 100644 index 00000000..71e9092f --- /dev/null +++ b/hw12_13_14_15_calendar/values.yaml @@ -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: {} \ No newline at end of file From 46fef73fa787209d6184f77926c353be8e27ab6f Mon Sep 17 00:00:00 2001 From: Igor Tiulkanov Date: Sat, 14 Dec 2024 12:51:28 +0300 Subject: [PATCH 2/2] fix typo --- hw12_13_14_15_calendar/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw12_13_14_15_calendar/README.md b/hw12_13_14_15_calendar/README.md index 6104915b..399ce2be 100644 --- a/hw12_13_14_15_calendar/README.md +++ b/hw12_13_14_15_calendar/README.md @@ -12,4 +12,4 @@ - `hw16_calendar` (от `hw15_calendar`) -> Merge Request в `hw15_calendar` (если уже вмержена, то в `master`) -**Домашнее задание не принимается, если не принято ДЗ, предшедствующее ему.** +**Домашнее задание не принимается, если не принято ДЗ, предшествующее ему.**