패키지 레지스트리의 Helm 차트

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated Status: Beta

경고: GitLab의 Helm 차트 레지스트리는 개발 중이며 기능이 제한적이기 때문에 프로덕션 환경에서 사용하기에 준비되지 않았습니다. 이 Epic에서 남은 작업과 프로덕션 사용 준비까지의 일정에 대해 자세히 설명하고 있습니다.

프로젝트의 패키지 레지스트리에 Helm 패키지를 게시한 다음, 필요할 때마다 해당 패키지를 설치하세요.

Helm 패키지 관리자 클라이언트가 사용하는 구체적인 API 엔드포인트에 대한 문서는 Helm API 문서를 참조하세요.

Helm 패키지 빌드

다음과 같은 주제에 관한 Helm 문서에서 더 알아보세요:

Helm 저장소에 인증하기

Helm 저장소에 인증하려면 다음 중 하나가 필요합니다:

패키지 게시

차트 또는 버전이 중복되는 Helm 차트를 게시할 수 있습니다. 중복이 있는 경우 GitLab은 항상 최신 버전의 차트를 반환합니다.

빌드되면 차트를 원하는 채널로 curl 또는 helm cm-push를 사용하여 업로드할 수 있습니다:

  • curl을 사용하는 경우:

    curl --fail-with-body --request POST \
         --form 'chart=@mychart-0.1.0.tgz' \
         --user <username>:<access_token> \
         https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/api/<channel>/charts
    
    • <username>: GitLab 사용자 이름 또는 배포 토큰 사용자 이름
    • <access_token>: 개인 액세스 토큰 또는 배포 토큰
    • <project_id>: 프로젝트 ID (예: 42) 또는 프로젝트의 URL 인코딩된 경로 (예: group%2Fproject)
    • <channel>: 채널 이름 (예: stable)
  • helm cm-push 플러그인을 사용하는 경우:

    helm repo add --username <username> --password <access_token> project-1 https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/<channel>
    helm cm-push mychart-0.1.0.tgz project-1
    
    • <username>: GitLab 사용자 이름 또는 배포 토큰 사용자 이름
    • <access_token>: 개인 액세스 토큰 또는 배포 토큰
    • <project_id>: 프로젝트 ID (예: 42)
    • <channel>: 채널 이름 (예: stable)

릴리스 채널

GitLab에서 채널에 Helm 차트를 게시할 수 있습니다. 채널은 Helm 차트 저장소를 구분하는 데 사용할 수 있는 방법입니다. 예를 들어 stabledevel 채널을 사용하여 사용자가 stable 저장소를 추가하고 devel 차트가 격리되도록 할 수 있습니다.

CI/CD를 사용하여 Helm 패키지 게시

GitLab CI/CD를 통해 자동으로 Helm 패키지를 게시하려면 명령어에서 개인 액세스 토큰 대신 CI_JOB_TOKEN을 사용할 수 있습니다.

예:

image: curlimages/curl:latest

stages:
  - upload

upload:
  stage: upload
  script:
    - 'curl --fail-with-body --request POST --user gitlab-ci-token:$CI_JOB_TOKEN --form "chart=@mychart-0.1.0.tgz" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/api/<channel>/charts"'
  • <username>: GitLab 사용자 이름 또는 배포 토큰 사용자 이름
  • <access_token>: 개인 액세스 토큰 또는 배포 토큰
  • <channel>: 채널 이름 (예: stable)

패키지 설치

요청한 패키지의 경우 GitLab은 생성된 가장 최근 1000개의 패키지만 고려합니다. 각 패키지에 대해 최신의 패키지 파일만 반환됩니다.

차트의 최신 버전을 설치하려면 다음 명령어를 사용하세요:

helm repo add --username <username> --password <access_token> project-1 https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/<channel>
helm install my-release project-1/mychart
  • <username>: GitLab 사용자 이름 또는 배포 토큰 사용자 이름
  • <access_token>: 개인 액세스 토큰 또는 배포 토큰
  • <project_id>: 프로젝트 ID (예: 42)
  • <channel>: 채널 이름 (예: stable)

저장소가 이전에 추가된 경우 가장 최신의 차트로 Helm 클라이언트를 업데이트해야 할 수 있습니다.

helm repo update

이를 통해 가장 최신의 차트로 Helm 클라이언트를 업데이트할 수 있습니다.

자세한 내용은 Helm 사용을 참조하세요.

문제 해결

패키지 레지스트리에 업로드한 후 차트가 보이지 않음

관련된 오류를 확인하려면 Sidekiq 로그를 확인하세요. Validation failed: Version is invalid 오류가 표시되면 Chart.yaml 파일의 버전이 Helm Chart 버전 지정 규격에 따르지 않았기 때문입니다. 오류를 해결하려면 올바른 버전 구문을 사용하고 차트를 다시 업로드하세요.

UI에서 패키지 처리 오류에 대한 더 나은 오류 메시지를 제공하기 위한 지원은 이슈 330515에서 제안되었습니다.

helm push로 인한 오류

Helm 3.7에서 helm-push 플러그인의 중단 변경 사항이 소개되었습니다. Chart Museum 플러그인을 업데이트하여 helm cm-push를 사용할 수 있습니다.