Sobes.tech
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.