Helm 차트 관리

이 페이지에서는 차트 내보내기(업로드), 가져오기(다운로드), 나열, 태그 지정, 삭제를 포함하여 OCI 컨테이너 이미지로 저장된 Helm 3 차트를 관리하는 방법을 설명합니다.

시작하기 전에

  1. 대상 저장소가 없으면 새 저장소를 만듭니다. Docker를 저장소 형식으로 선택합니다.
  2. 저장소에 대해 필요한 권한이 있는지 확인합니다.
  3. (선택사항) Google Cloud CLI 명령어의 기본값을 구성합니다.
  4. Helm 3.8.0 이상을 설치합니다. 이전 버전의 Helm에서는 OCI 형식의 차트가 실험용 기능으로 지원됩니다.

    helm version을 실행하여 버전을 확인합니다.

  5. Artifact Registry로 인증하도록 Helm을 구성합니다.

차트 만들기 또는 가져오기

이 문서에서는 차트 이미지 관리를 중점적으로 설명하며 사용자가 기존 차트를 가지고 있거나 차트 만들기에 익숙하다고 가정합니다. Artifact Hub에서 차트를 만들거나 공개적으로 사용 가능한 차트를 가져오는 방법에 대한 자세한 내용은 Helm 문서의 다음 정보를 참조하세요.

  • Helm 사용에서는 공개 Artifact Hub에서 차트를 가져온 후 설치하기 전에 차트를 맞춤설정하는 방법을 설명합니다.
  • 차트에서는 차트와 차트를 만드는 방법을 설명합니다.
  • 차트 권장사항 가이드에서는 규칙과 권장사항을 설명합니다.

차트 패키징

Artifact Registry로 차트를 내보내려면 먼저 차트 보관 파일로 패키징해야 합니다.

  1. 차트가 포함된 디렉터리로 변경합니다.

  2. 차트를 패키징합니다.

    helm package CHART-PATH
    

    CHART-PATHChart.yaml 파일이 포함된 디렉터리의 경로로 바꿉니다.

Helm은 보관 파일 이름의 차트 이름과 버전을 사용합니다. 예를 들어 차트 이름이 my-chart이고 버전 번호가 0.1.0인 차트가 있으면 패키지 이름은 my-chart-0.1.0.tgz입니다.

이제 차트를 Artifact Registry로 내보낼 수 있습니다.

차트 내보내기

차트를 패키징한 후 차트를 Artifact Registry로 내보낼 수 있습니다.

차트를 내보내려면 다음 명령어를 실행합니다.

helm push my-chart-0.1.0.tgz oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

다음 값을 바꿉니다.

  • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT은 Google Cloud 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • REPOSITORY는 저장소 이름입니다.

Helm은 OCI 컨테이너 이미지 이름과 태그에 Chart.yaml의 정보를 사용합니다. 다음 명령어 예를 살펴보세요.

helm push my-chart-0.1.0.tgz oci://us-east4-docker.pkg.dev/my-project/my-repo

Helm은 0.1.0 태그를 사용하여 차트 보관 파일을 my-chart 이미지로 업로드합니다.

내보내기 작업이 성공했는지 확인하려면 저장소의 이미지를 나열합니다.

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

차트 가져오기

차트를 가져오려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하여 차트 보관 파일을 가져옵니다.

    helm pull oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
        --version VERSION
    

    차트 보관 파일을 가져와서 콘텐츠를 추출하려면 --untar 플래그를 추가합니다.

    helm pull oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
        --version VERSION \
        --untar
    

    다음 값을 바꿉니다.

    • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
    • PROJECT은 Google Cloud 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
    • REPOSITORY는 이미지가 저장된 저장소의 이름입니다.
    • IMAGE는 저장소의 이미지 이름입니다.
    • VERSION은 차트의 시맨틱 버전입니다. 이 플래그는 필수 항목입니다. Helm은 태그를 사용한 차트 가져오기를 지원하지 않습니다.

차트 설치

helm install 명령어를 사용하여 Artifact Registry에 저장된 차트를 설치합니다.

helm install RELEASE \
    oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
    --version VERSION

다음 예시는 us-east4-docker.pkg.dev/nyap-test/helm-repo/my-chart 차트의 0.1.0 버전을 사용하여 release1이라는 출시 버전을 설치합니다.

helm install release1 oci://us-east4-docker.pkg.dev/nyap-test/helm-repo/my-chart --version 0.1.0

차트 나열

Google Cloud 콘솔 또는 명령줄을 사용하여 차트를 나열할 수 있습니다. 컨테이너 이미지와 차트를 동일한 Docker 저장소에 저장하면 두 아티팩트 유형이 모두 목록에 표시됩니다.

콘솔

저장소의 이미지를 보려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 컨테이너 이미지가 있는 저장소를 클릭합니다.

  3. 이미지를 클릭하여 버전을 확인합니다.

gcloud

기본값이 구성된 경우 기본 프로젝트, 저장소, 위치의 모든 이미지를 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts docker images list

특정 위치에 있는 저장소의 모든 이미지를 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

특정 이미지의 모든 다이제스트 및 태그를 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--include-tags

다음 값을 바꿉니다.

  • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT는 Google Cloud 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • REPOSITORY는 이미지가 저장된 저장소의 이름입니다.
  • IMAGE는 저장소의 이미지 이름입니다.
  • --include-tags는 다이제스트와 태그를 포함하여 모든 버전의 이미지를 표시합니다. 이 플래그를 생략하면 반환되는 목록에 최상위 컨테이너 이미지만 포함됩니다.

예를 들어 다음과 같은 특성을 지닌 이미지라고 가정해 보겠습니다.

  • 저장소 위치: us
  • 저장소 이름: my-repo
  • 프로젝트 ID: my-project
  • 이미지 이름: my-image

전체 저장소 이름은 다음과 같습니다.

us-docker.pkg.dev/my-project/my-repo

전체 이미지 이름은 다음과 같습니다.

us-docker.pkg.dev/my-project/my-repo/my-image

이미지 이름 형식에 대한 자세한 내용은 저장소 및 이미지 이름을 참조하세요.

파일 나열

저장소의 파일, 지정된 컨테이너 이미지의 모든 버전에 있는 파일, 이미지의 특정 버전에 있는 파일을 나열할 수 있습니다.

다음 모든 명령어에 대해 --limit 플래그를 명령어에 추가하여 반환할 최대 파일 수를 설정할 수 있습니다.

기본값이 구성된 경우 기본 프로젝트, 저장소, 위치의 모든 파일을 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts files list

지정된 프로젝트, 저장소, 위치의 파일을 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

특정 컨테이너 이미지의 모든 버전에 대한 파일을 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

특정 컨테이너 이미지 버전의 파일을 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION
특정 태그의 파일을 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --tag=TAG

다음 값을 바꿉니다.

  • LOCATION: 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT: Google Cloud 프로젝트 ID 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • REPOSITORY: 이미지가 저장된 저장소의 이름입니다.
  • PACKAGE: 이미지의 이름입니다.
  • VERSION: sha256:으로 시작하는 문자열인 이미지 다이제스트입니다.
  • TAG: 컨테이너 이미지와 연결된 태그입니다.

이미지 삭제

Artifact Registry 저장소에서 전체 컨테이너 이미지를 삭제하거나 태그 또는 다이제스트와 연결된 특정 이미지 버전을 삭제할 수 있습니다. 이미지를 삭제한 후에는 작업을 실행취소할 수 없습니다.

Artifact Registry에 저장된 이미지를 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 이미지 이름을 클릭하여 이미지의 버전을 확인합니다.

  3. 삭제할 버전을 선택합니다.

  4. 삭제를 클릭합니다.

  5. 확인 대화상자에서 삭제를 클릭합니다.

gcloud

이미지와 이미지의 모든 태그를 삭제하려면 다음 명령어를 실행합니다.

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE --delete-tags

특정 이미지 버전을 삭제하려면 다음 명령어 중 하나를 사용합니다.

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG [--delete-tags]

또는

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE@IMAGE-DIGEST [--delete-tags]

각 항목의 의미는 다음과 같습니다.

  • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT는 Google Cloud 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • REPOSITORY는 이미지가 저장된 저장소의 이름입니다.
  • IMAGE는 저장소의 이미지 이름입니다.
  • TAG은 삭제할 버전의 태그입니다. 여러 태그가 동일한 이미지 버전과 연결되어 있는 경우 먼저 태그를 삭제하지 않고 이미지 버전을 삭제하기 위해 --delete-tags를 포함해야 합니다.
  • IMAGE-DIGEST은 삭제할 버전의 sha256 해시 값입니다. 태그가 이미지 다이제스트와 연결된 경우 먼저 태그를 삭제하지 않고 이미지 버전을 삭제하기 위해 --delete-tags를 포함해야 합니다.
  • --delete-tags은 이미지 버전에 적용된 모든 태그를 삭제합니다. 이 플래그를 사용하면 다음과 같은 경우에 이미지 버전을 강제로 삭제할 수 있습니다.
    • 태그를 지정했지만 이미지 버전과 연결된 다른 태그가 있습니다.
    • 태그가 하나 이상 있는 이미지 다이제스트를 지정했습니다.

다음 단계