Sobes.tech
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" # Ձեր ռեգիստրի անունը

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_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> համապատասխան արժեքներով։