Если вы используете Helm для управления приложениями в Kubernetes, крайне важно следовать ряду проверенных практик, чтобы обеспечить поддержку, масштабируемость и безопасность ваших чартов.

📦 1. Структура директорий чарта

Соблюдайте стандартную структуру чарта Helm: mychart/   charts/   templates/   values.yaml   Chart.yaml   README.md   Избегайте добавления нестандартных файлов и директорий. Это сделает чарты переносимыми и читаемыми.

🧩 2. Разделяйте общие шаблоны

Используйте _helpers.tpl для определения общих шаблонов, таких как аннотации, метки и имена ресурсов. Это снижает дублирование и упрощает сопровождение:

YAML
{{/* Генерация полного имени */}}

{{- define "mychart.fullname" -}}

{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" -}}

{{- end -}}
Нажмите, чтобы развернуть и увидеть больше

⚙️ 3. Используйте параметры в values.yaml

Делайте чарты гибкими, передавая конфигурации через values.yaml. Никогда не хардкодьте значения в шаблонах.

🧪 4. Валидация values.yaml

Добавляйте проверку обязательных значений с помощью required:

YAML
{{ required "Variable mychart.image.repository is required" .Values.image.repository }}
Нажмите, чтобы развернуть и увидеть больше

🔍 5. Используйте шаблоны if/else разумно

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

🗃️ 6. Не добавляйте чарт в шаблон напрямую

Вместо включения зависимостей в директорию charts/, указывайте их в Chart.yaml и используйте helm dependency update.

🛑 7. Не хардкодьте версии образов

Передавайте версию через values.yaml. Это повышает гибкость CI/CD:

YAML
image:
  repository: nginx
  tag: "1.21.1"
Нажмите, чтобы развернуть и увидеть больше

🔒 8. Управление чувствительными данными Не храните пароли и токены в values.yaml. Используйте секреты Kubernetes или инструменты типа Sealed Secrets или External Secrets.

🔁 9. Helm hooks Helm предоставляет хуки для выполнения задач до/после установки. Используйте их, например, для миграций БД. Пример:

YAML
annotations:
  "helm.sh/hook": pre-install
Нажмите, чтобы развернуть и увидеть больше

🧹 10. Чистка старых релизов Используйте helm uninstall и регулярно проверяйте статус релизов с помощью helm list. Это помогает избегать конфликта имён и мусора.

🧪 11. Тестирование чарта Добавляйте unit-тесты с помощью helm unittest и не забывайте про проверку синтаксиса:  

BASH
helm lint .
Нажмите, чтобы развернуть и увидеть больше

🔄 12. Автоматизация через CI/CD

Интегрируйте Helm в пайплайны CI/CD для установки и обновления чартов — например, с помощью GitLab CI, GitHub Actions, ArgoCD или Flux.

Придерживайтесь этих рекомендаций — и работа с Helm станет надёжной, устойчивой и более предсказуемой. Это особенно важно при масштабировании инфраструктуры и работе в команде.

Авторские права

Автор: Vasiliy Fakunin

Ссылка: https://notes.melancholic.tech/posts/%D0%BB%D1%83%D1%87%D1%88%D0%B8%D0%B5-%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B8-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-helm-%D1%87%D1%82%D0%BE-%D0%BD%D1%83%D0%B6%D0%BD%D0%BE-%D0%B7%D0%BD%D0%B0%D1%82%D1%8C/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша