Sobes.tech
Middle

Kaip teisingai saugoti Helm šablonus GitLab?

sobes.tech AI

Atsakymas iš AI

Rekomenduojama Helm šablonus saugoti atskirame Git repozitorijoje GitLab'e. Tai leidžia juos valdyti versijomis, naudoti CI/CD pipeline lintingui ir pakavimui, taip pat valdyti prieigą.

Repo struktūra gali atrodyti taip:

my-helm-charts/
├── Chart.yaml          // Chart metaduomenys
├── values.yaml         // Numatyti reikšmės
├── templates/          // Kubernetes manifestų šablonai
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── charts/             // Priklausomi šablonai (neprivaloma)
    └── redis/
        └── ...

Automatizacijai galima naudoti GitLab CI/CD. Pavyzdys .gitlab-ci.yml:

stages:
  - lint
  - package
  - deploy # Neprivaloma

variables:
  HELM_VERSION: "3.x.x" # Aktualus Helm versija
  HELM_REGISTRY: "my-gitlab-registry" # Jūsų registras

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 vaizdas
  script:
    - helm lint ./my-chart-directory # Jūsų chart katalogo kelias

package_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    - helm package ./my-chart-directory # Sukurti .tgz archyvą
  artifacts:
    paths:
      - ./*.tgz # Išsaugoti paketą

publish_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    # Helm registrą nustatyti GitLab'e
    - 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 # Pusht į OCI
  variables:
    # Užtikrinkite, kad CI_REGISTRY_USER ir CI_REGISTRY_PASSWORD yra nustatyti
    GIT_STRATEGY: none # Niekada nekopijuoti iš naujo

# Pavyzdinis deploy etapas (neprivaloma)
# deploy_chart:
#   stage: deploy
#   image: alpine/helm:latest
#   script:
#     # Priklausomybių nustatymas (pvz., kubectl, debesų teikėjai)
#     # 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 # Arba kita aplinka
#   when: manual # Arba on_branch ir t.t.

Paketo šablonų (.tgz) saugojimui:

  • GitLab Package Registry (Helm OCI charts): Rekomenduojamas būdas. Leidžia saugoti šablonus OCI formatu tiesiog GitLab'e.
  • Bendri paketai: Jei Helm OCI nepalaikomas arba dėl kitų priežasčių.
  • Privatus statinis failų saugykla: Pvz., S3 suderinama saugykla arba GitLab Pages.

Naudojant Helm OCI registrą, jį galima pridėti kaip Helm saugyklą:

helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<your-namespace>/<your-helm-chart-project>

Pakeiskite <your-namespace> ir <your-helm-chart-project> atitinkamomis reikšmėmis.