Middle
Как правилно да съхранявате Helm шаблоните в GitLab?
sobes.tech AI
Отговор от AI
Препоръчително е Helm шаблоните да се съхраняват в отделен Git репозитори в GitLab. Това позволява версиониране, прилагане на CI/CD пайплайни за линтинг и опаковане, както и управление на достъпа.
Структурата на репозитория може да изглежда така:
my-helm-charts/
├── Chart.yaml // Метаданни за чарта
├── values.yaml // Стойности по подразбиране
├── templates/ // Шаблони за манифести на Kubernetes
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Зависими чарта (по желание)
└── redis/
└── ...
За автоматизация може да се използва GitLab CI/CD. Пример .gitlab-ci.yml:
stages:
- lint
- package
- deploy # По желание
variables:
HELM_VERSION: "3.x.x" # Актуална версия на Helm
HELM_REGISTRY: "my-gitlab-registry" # Името на вашия регистър в GitLab
before_script:
- curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz | tar xz
- mv linux-amd64/helm /usr/local/bin/helm
- helm version
lint_chart:
stage: lint
image: docker.io/alpine/helm:latest # Използвайте образ с Helm
script:
- helm lint ./my-chart-directory # Път към директорията с вашия чарт
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Създаване на архив .tgz
artifacts:
paths:
- ./*.tgz # Запазване на опакования чарт като артефакт
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Настройка на Helm регистъра в GitLab
- HE=helm-registry.$CI_SERVER_HOST helm registry login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- helm push my-chart-*.tgz oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY # Публикуване в OCI регистър
variables:
# Уверете се, че променливите CI_REGISTRY_USER и CI_REGISTRY_PASSWORD са настроени
GIT_STRATEGY: none # Не клонирайте репозитория отново
# Пример за deploy етап (по желание)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Настройка на зависимости (напр. kubectl, облачни доставчици)
# # helm upgrade --install my-release oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY/my-chart --version latest -n my-namespace -f values.yaml
# environment: production # Или друго околна среда
# when: manual # Или on_branch и т.н.
За съхранение на опакованите чарти (.tgz) може да се използва:
- GitLab Package Registry (Helm OCI charts): Препоръчителният начин. Позволява съхраняване на чарти в OCI формат директно в GitLab.
- Общи пакети: Ако Helm OCI не се поддържа или по други причини.
- Частно статично хранилище: Например S3-съвместимо хранилище или GitLab Pages.
При използване на Helm OCI регистър, за да го добавите като Helm репозиториум:
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<your-namespace>/<your-helm-chart-project>
Заменете <your-namespace> и <your-helm-chart-project> с подходящите стойности.