Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added task 16 #64

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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: 3 additions & 1 deletion hw12_13_14_15_calendar/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`)

**Домашнее задание не принимается, если не принято ДЗ, предшедствующее ему.**

**Домашнее задание не принимается, если не принято ДЗ, предшествующее ему.**
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
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: {}