Skip to content

Meruyert98/Helm_charts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

📦 MyApp Helm Chart

Этот Helm Chart предназначен для деплоя приложения MyApp в Kubernetes кластере. С его помощью можно управлять развертыванием приложения в разных окружениях (development, staging, production), используя единый chart и специфичные настройки для каждого окружения.

🛠 Структура проекта

ui/
├── charts/               # Зависимости (если есть)
├── templates/            # Шаблоны Kubernetes-манифестов
│   ├── deployment.yaml   # Деплоймент
│   ├── _helpers.tpl      # Файл с вспомогательными шаблонами
│   ├── configmap.xml     # XML-файл конфигурации
│   ├── configmap.yaml    # YAML-файл для ConfigMap
│   ├── service.yaml      # Сервис
│   └── hpa.yaml          # YAML-файл для горизонтального автоскейлинга
├── values.yaml           # Общие значения по умолчанию
├── values-dev.yaml       # Параметры для окружения Development
├── values-test.yaml   # Параметры для окружения Staging
├── values-prod.yaml      # Параметры для окружения Production
└── Chart.yaml            # Основной файл описания Helm Chart

📋 Установка

1. Установка для конкретного окружения Для установки приложения в определённом окружении используйте соответствующий файл values с флагом -f.

Пример для окружения Development:

helm install ui-dev ./singlecharts-multienv/ui -f ./singlecharts-multienv/ui/values-dev.yaml --namespace dev --create-namespace

Пример для окружения Staging:

helm install ui-qa ./singlecharts-multienv/ui -f ./singlecharts-multienv/ui/values-qa.yaml --namespace qa --create-namespace

Пример для окружения Production:

helm install ui-prod ./singlecharts-multienv/ui -f ./singlecharts-multienv/ui/values-prod.yaml --namespace prod --create-namespace

Описание параметров

  • ui-qa / ui-dev / ui-prod — Имя релиза для каждого окружения.
  • ./singlecharts-multienv/ui — Путь к Helm-чарту.
  • -f ./singlecharts-multienv/ui/values-{environment}.yaml — Указывает файл конфигурации, соответствующий каждому окружению.
  • --namespace {environment} — Пространство имен, куда будет установлено приложение (qa, dev, или prod).
  • --create-namespace — Создает пространство имен, если оно еще не существует.

Проверка развертывания Для проверки статуса каждого релиза используйте:

helm status ui-qa -n qa
helm status ui-dev -n dev
helm status ui-prod -n prod

А для просмотра всех ресурсов в каждом пространстве имен:

kubectl get all -n qa
kubectl get all -n dev
kubectl get all -n prod

2. Обновление релиза Для обновления релиза в определённом окружении используйте команду upgrade с нужным values файлом.

Если релиз уже установлен, используйте helm upgrade вместо helm install для обновления:

helm upgrade ui-qa ./singlecharts-multienv/ui -f ./singlecharts-multienv/ui/values-qa.yaml --namespace qa
helm upgrade ui-dev ./singlecharts-multienv/ui -f ./singlecharts-multienv/ui/values-dev.yaml --namespace dev
helm upgrade ui-prod ./singlecharts-multienv/ui -f ./singlecharts-multienv/ui/values-prod.yaml --namespace prod

Это позволит обновить конфигурации каждого окружения без повторной установки.

3. Удаление релиза Для удаления релиза из кластера выполните команду:

helm uninstall ui-dev --namespace dev
helm uninstall ui-qa --namespace qa
helm uninstall ui-prod --namespace prod

⚙️ Конфигурация окружений

Каждый файл values-<env>.yaml содержит настройки, специфичные для окружения:

  • values-dev.yaml: настройки для окружения разработки.
  • values-test.yaml: настройки для промежуточного окружения.
  • values-prod.yaml: настройки для окружения продакшн.

Пример: values-dev.yaml

# Основные параметры приложения
app:
  replicas: 1                 # Количество реплик для разработки
  env: dev                     # Окружение: разработка
  container:
    image: meruyerts/ui        # Docker-образ контейнера

  computerc:                   # Ресурсы для контейнера
    limits:
      cpu: 0.2                 # Лимит на использование CPU - 0.2 ядра
      memory: 500Mi            # Лимит на использование памяти - 500 MiB
    requests:
      cpu: 0.2                 # Запрос на CPU - 0.2 ядра
      memory: 500Mi            # Запрос на память - 500 MiB

# Настройки Horizontal Pod Autoscaler (HPA)
hpa:
  enabled: false               # HPA отключен для окружения разработки

# Конфигурация файла config.yaml
config:
  name: config.yaml            # Название файла конфигурации
  data:
    timeout: 10s               # Тайм-аут для операций в режиме разработки
    logfile: /app/var/log.txt  # Путь к файлу логов
    database:
      ip: 10.20.30.40          # IP-адрес базы данных для разработки
      name: ui-dev             # Название базы данных для разработки

# Дополнительный конфигурационный файл app.xml
configxml:
  name: app.xml                # Название файла конфигурации XML

Пример: values-qa.yaml

# Основные параметры приложения
app:
  replicas: 2                 # Количество реплик для QA окружения
  env: qa                      # Окружение: QA
  container:
    image: meruyerts/ui        # Docker-образ контейнера

  computerc:                   # Ресурсы для контейнера
    limits:
      cpu: 1                   # Лимит на использование CPU - 1 ядро
      memory: 2Gi              # Лимит на использование памяти - 2 GiB
    requests:
      cpu: 1                   # Запрос на CPU - 1 ядро
      memory: 2Gi              # Запрос на память - 2 GiB

# Настройки Horizontal Pod Autoscaler (HPA)
hpa:
  enabled: false               # HPA отключен для QA окружения

# Конфигурация файла config.yaml
config:
  name: config.yaml            # Название файла конфигурации
  data:
    timeout: 5s                # Тайм-аут для операций в QA
    logfile: /app/var/log.txt  # Путь к файлу логов
    database:
      ip: 120.20.30.40         # IP-адрес базы данных для QA
      name: ui-qa              # Название базы данных для QA

# Дополнительный конфигурационный файл app.xml
configxml:
  name: app.xml                # Название файла конфигурации XML

Пример: values-prod.yaml

# Реплики приложения и переменные окружения
app:
  replicas: 6                # Количество реплик приложения
  env: prod                   # Окружение: продакшн
  container:
    image: meruyerts/ui       # Docker-образ контейнера

  computerc:                  # Ресурсы для контейнера
    limits:
      cpu: 4                  # Лимит на использование CPU - 4 ядра
      memory: 16Gi            # Лимит на использование памяти - 16 GiB
    requests:
      cpu: 4                  # Запрос на CPU - 4 ядра
      memory: 16Gi            # Запрос на память - 16 GiB

# Настройка Horizontal Pod Autoscaler (HPA)
hpa:
  enabled: true               # Включение HPA
  maxReplicas: 10             # Максимальное количество реплик
  minReplicas: 4              # Минимальное количество реплик
  cpuutil: 90                 # Целевое использование CPU для HPA (в процентах)

# Конфигурация файла config.yaml
config:
  name: config.yaml           # Название файла конфигурации
  data:
    timeout: 2s               # Тайм-аут для операций
    logfile: /app/var/log.txt # Путь к файлу логов
    database:
      ip: 120.21.31.10        # IP-адрес базы данных
      name: ui-prod           # Название базы данных

# Дополнительный конфигурационный файл app.xml
configxml:
  name: app.xml               # Название файла конфигурации XML

📄 Описание параметров

  • app.replicas: Количество реплик приложения.
  • app.container.image: Docker-образ приложения.
  • app.computerc: Минимальные запросы и лимиты для CPU и памяти, чтобы обеспечить стабильную работу.
  • hpa.enabled: Авто-масштабирование отключено для dev и qa, так как разработка требует фиксированной и минимальной конфигурации. Настройка Horizontal Pod Autoscaler, который будет динамически масштабировать поды в зависимости от загрузки CPU.
  • config: Конфигурационный файл config.yaml с параметрами timeout, пути к логам logfile и настройки для базы данных.
  • configxml: Имя XML-файла конфигурации app.xml.

🔄 Параметры, которые можно изменить через CLI

Некоторые параметры можно изменить без использования отдельных файлов values, используя флаг --set.

helm install myapp ./myapp-chart --set replicaCount=2 --set image.tag="staging"

🧩 Примечания

1. Единый Chart: Использование одного chart для всех окружений упрощает управление и поддержание консистентности. 2. Гибкость: Благодаря файлам values можно адаптировать конфигурации для различных окружений, что удобно для CI/CD. 3. Параметры через CI/CD: В CI/CD пайплайнах можно динамически подставлять нужный файл values, соответствующий ветке или окружению.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages