Middle
Helm şablonlarını GitLab'da doğru şekilde nasıl saklamalıyız?
sobes.tech yapay zeka
AI'dan gelen yanıt
Helm şablonlarının GitLab'da ayrı bir Git deposunda saklanması önerilir. Bu, sürümlemeyi, CI/CD boru hatlarını linting ve paketleme için uygulamayı ve erişim yönetimini sağlar.
Depo yapısı şu şekilde olabilir:
my-helm-charts/
├── Chart.yaml // Chart hakkında meta bilgi
├── values.yaml // Varsayılan değerler
├── templates/ // Kubernetes manifest şablonları
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Bağımlı chartler (isteğe bağlı)
└── redis/
└── ...
Otomasyon için GitLab CI/CD kullanılabilir. Örnek .gitlab-ci.yml:
stages:
- lint
- package
- deploy # İsteğe bağlı
variables:
HELM_VERSION: "3.x.x" # Güncel Helm sürümünü belirtin
HELM_REGISTRY: "my-gitlab-registry" # GitLab'daki kayıt adınız
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 içeren bir imaj kullanın
script:
- helm lint ./my-chart-directory # Chart dizinine yol
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # .tgz dosyası oluştur
artifacts:
paths:
- ./*.tgz # Paketlenmiş chart'i artefakt olarak kaydet
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Helm registry'yi yapılandır
- 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'ye push
variables:
# CI_REGISTRY_USER ve CI_REGISTRY_PASSWORD değişkenlerinin ayarlandığından emin olun
GIT_STRATEGY: none # Depoyu tekrar klonlama
# İsteğe bağlı dağıtım aşaması
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # bağımlılıkları yapılandır (örneğin, kubectl, bulut sağlayıcılar)
# # 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 # veya başka bir ortam
# when: manual # veya on_branch, vb.
Paketlenmiş chartleri (.tgz) depolamak için:
- GitLab Paket Registry (Helm OCI chartleri): Tavsiye edilen yöntem. Chartleri doğrudan OCI formatında GitLab'da saklamaya olanak tanır.
- Genel Paketler: Helm OCI desteklenmiyorsa veya başka nedenlerle.
- Özel statik dosya depolama: Örneğin, S3 uyumlu depolama veya GitLab Pages.
Helm deposu olarak eklemek için GitLab Paket Registry (Helm OCI) kullanılırsa:
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<kendi-namespace>/<kendi-helm-chart-proje>
<kendi-namespace> ve <kendi-helm-chart-proje> uygun değerlerle değiştirilmelidir.