/
calvision
/
code
Обзор
Документация
Войти
/
calvision
/
code
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test-playbook.yml
107 строк
5 KB
calvision
create test-playbook.yml
24 авг 2024, 22:36
24 авг 2024, 22:36
597872c
Код
Авторство
О чём код?
#Тестовое задание от компании Mindbox #Необходимо написать Ansible playbook, который выполняет на хосте следующие действия: #создает нового пользователя brickdev с паролем pass #разрешает на хосте авторизацию через ssh по ключу #запрещает логин по ssh от пользователя root #копирует предоставленный публичный ключ для пользователя brickdev #Плейбук должен выполняться относительно чистого дистрибутива ОС Debian 12. Для написания и проверки плейбука можно локально развернуть VM с помощью любого удобного инструмента виртуализации (VirtualBox, VmWare Fusion, VmWare Fusion Player, Hyper-V, ...) #Публичный ключ для публикации на хост: #ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDW1sg+ys6EEZd6ZzbDlrMMybOBUALEtERY2/ZKsvgbcAzTERxbtsqu+iNNDBo+sf3L3YuWkd8fLH4SJ3MQV42ySc6ml2tMT0G2r+QIWwFz+nPaD2DY8blgFpsa41TZxwKgLmqEtUVlps9Q6Un5KtJMjTl2MWYKswdxSqHw8em0DNigJolWfzsmoTvd1HXTYdj/PiJECW3nS38PFlL19Av6ipwrbxme2/VyvjolX5F3p/dgLkuUU7UMQ+tlx9gAlN0F/Tf6zMHSubIBC7lOf58zP+IlykdD4leVaNpFckk9hxnKCZpyM7jlwi2YSnYLAOh4v56NTq7c/yG2jX9+lSb #Полученный плейбук и команду для его запуска положить в папку /playbook # Deployment: управляет подами нашего приложения apiVersion: apps/v1 kind: Deployment metadata: name: web-app labels: app: web-app spec: replicas: 4 # Начальное количество подов selector: matchLabels: app: web-app template: metadata: labels: app: web-app spec: containers: - name: web-app-container image: Mindbox-test:latest resources: requests: memory: "128Mi" cpu: "100m" limits: memory: "128Mi" cpu: "500m" # Больше CPU для первых запросов readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 10 # Время для запуска приложения periodSeconds: 5 livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 15 periodSeconds: 20 affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - web-app topologyKey: "kubernetes.io/hostname" # Размещение подов на разных нодах для отказоустойчивости --- # HorizontalPodAutoscaler: автоматически добавляет или убирает поды в зависимости от нагрузки apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: web-app-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: web-app minReplicas: 2 # Минимальное количество подов maxReplicas: 10 # Максимальное количество подов metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # Масштабирование при превышении 50% использования CPU --- # PodDisruptionBudget: гарантирует, что всегда будет доступно минимум 3 пода apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: web-app-pdb spec: minAvailable: 3 # Минимальное количество доступных подов selector: matchLabels: app: web-app Объяснение: 1. Deployment: - replicas: Начинаем с 4 подов, чтобы справляться с пиковыми нагрузками. - resources: Устанавливаем запросы и лимиты для CPU и памяти. Лимиты CPU выше для первых запросов. - readinessProbe и livenessProbe: Проверяют, готово ли приложение к работе и живо ли оно. - affinity: Размещаем поды на разных нодах для отказоустойчивости. 2. HorizontalPodAutoscaler: - Автоматически добавляет или убирает поды в зависимости от использования CPU. Минимум 2 пода, максимум 10. 3. PodDisruptionBudget: - Гарантирует, что всегда будет доступно минимум 3 пода, чтобы приложение продолжало работать при обновлениях и других операциях.