TGViewer
Библиотека девопса | DevOps, SRE, Sysadmin Библиотека девопса | DevOps, SRE, Sysadmin @devopsslib · 10.4K subscribers
Post #3931 1.38K
⚙️ Как с помощью Kustomize упростить управление конфигурациями

Kustomize — это инструмент для работы с Kubernetes-конфигурациями, который позволяет адаптировать и комбинировать файлы YAML без их дублирования.

Представьте себе, что вам нужно развернуть одно и то же приложение в нескольких средах: разработка, тестирование, продакшн. При этом настройки для каждой среды будут отличаться. С Kustomize вы можете сделать это с минимальными усилиями.

Структура проекта:
my-app/
│
├── base/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
│
└── overlays/
├── dev/
│ ├── kustomization.yaml
│ ├── deployment-patch.yaml
│ └── service-patch.yaml
└── prod/
├── kustomization.yaml
├── deployment-patch.yaml
└── service-patch.yaml


base/: хранит общие для всех окружений файлы конфигураций — это основа, от которой будут наследоваться все остальные окружения.

overlays/: здесь лежат изменения для каждой среды (например, для разработки и продакшн), такие как количество реплик или версия образа.

Пример базовой конфигурации для деплоя:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:v1
ports:
- containerPort: 8080


Здесь у нас базовый деплоймент с двумя репликами и образом Docker my-app:v1. Это конфигурация, которая будет использована во всех окружениях, пока мы не внесем в нее изменения.

Конфигурация для окружения разработки

В папке overlays/dev мы создаем патчи, которые изменяют конфигурацию для разработки. Для разработки нужно:

• Использовать тестовую БД
• Использовать самый последний образ контейнера
• Включить дебаг логгирование
• Поиграться с количеством реплик

Пример патча для деплоя:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3 # Увеличиваем количество реплик для разработки
template:
spec:
containers:
- name: my-app
image: my-app:latest # Используем последний образ для разработки


Также в папке overlays/dev создаем файл kustomization.yaml:
bases:
- ../../base
patchesStrategicMerge:
- deployment-patch.yaml
- service-patch.yaml


Этот файл говорит Kustomize, что конфигурация для окружения dev будет базироваться на файлах из папки base, но с изменениями, определенными в патче.

Пример патча для прода:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2 # В продакшн — только 2 реплики
template:
spec:
containers:
- name: my-app
image: my-app:v1.2.3 # Стабильная версия для продакшн


Теперь, благодаря Kustomize, вы можете использовать одни и те же манифесты, но с разными настройками для каждой среды.

Как применить конфигурации:

После того как мы создали все необходимые файлы, применить конфигурацию можно с помощью команды kustomize build. Например, для разработки:
kustomize build overlays/dev | kubectl apply -f -


Для прода:
kustomize build overlays/prod | kubectl apply -f -


Эти команды соберут все ресурсы, применят соответствующие патчи для окружения и передадут их в Kubernetes.

🐸Библиотека devops'a

#буст
  • 👍 4
  • ❤ 3
More from @devopsslib
  1. Oct 5, 2026SRE-инженеры, общий сбор 21 октября Т-Банк проведет онлайн-встречу «SRE-техтолк». Приглаша…
  2. Sep 29, 2026Для тех, кто работает с Kubernetes и облачной инфраструктурой, в октябре намечается отличн…
  3. Sep 25, 2026🤖 ИИ-агенту теперь можно поставить задачу прямо в GitLab — и не расписывать каждый следую…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 15, 2026👩‍💻 Bash-скрипт для мониторинга сервисов Полноценный мониторинг вроде Zabbix или Prometh…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →