Artifact Registry에 Helm 차트 저장

Helm은 Kubernetes의 패키지 관리자입니다. 배포할 Kubernetes 리소스 집합을 정의하는 차트를 사용합니다.

이 빠른 시작에서는 다음 방법을 보여줍니다.

  • Artifact Registry에서 비공개 저장소 만들기
  • 샘플 차트 만들기
  • 저장소로 인증
  • 저장소로 차트 내보내기
  • 차트 배포

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. API Artifact Registry, Google Kubernetes Engine 사용 설정

    API 사용 설정

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. API Artifact Registry, Google Kubernetes Engine 사용 설정

    API 사용 설정

셸 선택

이 빠른 시작을 완료하려면 Cloud Shell 또는 로컬 셸을 사용하세요.

Cloud Shell
Cloud Shell은 Google Cloud에서 호스팅되는 리소스를 관리하는 데 사용되는 셸 환경입니다. Docker, Helm, Google Cloud의 기본 명령줄 인터페이스인 Google Cloud CLI가 사전에 설치되어 있습니다.
로컬 셸
로컬 셸을 사용하려는 경우 환경에 Docker 및 gcloud CLI를 설치해야 합니다.

Cloud Shell 시작

Cloud Shell을 시작하려면 다음 단계를 수행하세요.

  1. Google Cloud Console로 이동.

    Google Cloud console

  2. Cloud Shell 활성화 버튼  을 클릭합니다.

    Console 하단의 프레임에서 Cloud Shell 세션이 열립니다. 이 셸을 사용하여 gcloud 명령어를 실행합니다.

  3. Helm 3.8.0 이상을 설치합니다. 이전 버전의 Helm에서는 OCI 형식의 차트가 실험용 기능으로 지원됩니다.

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

로컬 셸 설정

gcloud CLI 및 Helm을 설치하려면 다음 단계를 수행합니다.

  1. gcloud CLI를 설치합니다. 기존 설치를 업데이트하려면 gcloud components update 명령어를 실행합니다.

  2. Helm 3.8.0 이상을 설치합니다. 이전 버전의 Helm에서는 OCI 형식의 차트가 실험용 기능으로 지원됩니다.

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

저장소 만들기

이 빠른 시작의 샘플 차트를 저장할 Docker 저장소를 만듭니다.

콘솔

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

    저장소 페이지 열기

  2. 저장소 만들기를 클릭합니다.

  3. quickstart-helm-repo를 저장소 이름으로 지정합니다.

  4. 형식으로 Docker를 선택합니다.

  5. 위치 유형에서 리전을 선택한 후 us-central1 위치를 선택합니다.

  6. 만들기를 클릭합니다.

저장소가 저장소 목록에 추가됩니다.

gcloud

  1. 다음 명령어를 실행하여 'docker 저장소'라고 기술된 us-central1 위치에 quickstart-helm-repo라는 이름의 새 Docker 저장소를 만듭니다.

    gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \
    --location=us-central1 --description="Helm repository"
    
  2. 다음 명령어를 실행하여 저장소가 생성되었는지 확인합니다.

    gcloud artifacts repositories list
    

Artifact Registry 명령어에 대한 자세한 내용을 보려면 gcloud artifacts 명령어를 실행하세요.

차트 만들기

이 빠른 시작에서는 hello-chart라는 샘플 차트를 만듭니다.

  1. 차트를 만들 디렉터리로 변경합니다.
  2. 다음 명령어를 실행하여 차트를 만듭니다.

    helm create hello-chart
    

    Helm은 기본 차트 파일 세트를 사용하여 이름이 hello-chart인 디렉터리를 만듭니다. 파일 중 하나는 차트에 대한 정보가 포함된 Chart.yaml입니다.

  3. 차트를 보관 파일로 패키징합니다.

    helm package hello-chart/
    

    Helm은 Chart.yaml의 차트 이름과 버전 번호를 사용하여 hello-chart-0.1.0.tgz라는 보관 파일을 만듭니다.

저장소로 인증

이미지를 푸시하거나 설치하려면 먼저 Helm이 Artifact Registry에 인증해야 합니다.

Helm은 기존 레지스트리를 사용해 Docker 구성 파일을 설정할 수 있습니다. Artifact Registry에서 사용하도록 Docker를 아직 구성하지 않았으면 이 빠른 시작의 액세스 토큰으로 인증하면 됩니다.

인증에 대한 자세한 내용은 Helm 인증 설정을 참조하세요.

Docker 구성으로 인증

기본적으로 Helm은 Docker 구성 파일 config.json의 레지스트리 설정을 지원합니다. Helm은 기본 위치 또는 DOCKER_CONFIG 환경 변수에서 지정된 위치에서 레지스트리 설정을 찾습니다.

Artifact Registry로 인증하기 위해 사용자 인증 정보 도우미로 Docker를 구성한 경우 Helm은 Artifact Registry Docker 저장소에 기존 구성을 사용합니다.

액세스 토큰으로 인증

액세스 토큰으로 인증하려면 다음 안내를 따르세요.

  1. Helm을 사용하여 Artifact Registry에 인증할 때 액세스 토큰을 사용자 인증 정보로 가져옵니다.

    Linux/Mac OS

    다음 명령어를 실행합니다.

    gcloud auth print-access-token | helm registry login -u oauth2accesstoken \
    --password-stdin https://us-central1-docker.pkg.dev
    

    Windows

    다음 명령어를 실행합니다.

    gcloud auth print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://us-central1-docker.pkg.dev/PROJECT-ID/REPOSITORY
    

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

    • oauth2accesstoken은 액세스 토큰으로 인증할 때 사용할 사용자 이름입니다.
    • gcloud auth print-access-token은 액세스 토큰을 가져오는 gcloud 명령어입니다. 액세스 토큰은 인증에 사용되는 비밀번호입니다.

이제 Helm이 Artifact Registry로 인증됩니다. 이제 저장소에 차트를 내보내기할 수 있습니다.

Artifact Registry로 차트 내보내기

차트 보관 파일을 만들고 Artifact Registry 저장소에 인증한 후에 차트를 저장소로 내보낼 수 있습니다.

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

helm push hello-chart-0.1.0.tgz oci://us-central1-docker.pkg.dev/PROJECT/quickstart-helm-repo

PROJECT를 Google Cloud 프로젝트 ID로 바꿉니다.

Helm은 이미지에 대해 Chart.yaml 값을 사용합니다.

  • 차트 이름은 이미지 이름입니다(hello-chart).
  • 차트 버전은 이미지 태그입니다(0.1.0).

Helm은 다음 예시와 비슷한 결과를 반환합니다.

Login Succeeded
Pushed: us-central1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart:0.1.0
Digest: sha256:67a72...

다음 명령어를 실행하여 차트가 이제 저장소에 저장되었는지 확인합니다.

gcloud artifacts docker images list us-central1-docker.pkg.dev/PROJECT/quickstart-helm-repo

명령어 결과는 다음 예시와 비슷합니다.

Listing items under project my-project, location us-central1, repository quickstart-helm-repo.

IMAGE: us-central1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart
DIGEST: sha256:67a72...
CREATE_TIME: 2021-11-08T22:59:57
UPDATE_TIME: 2021-11-08T22:59:57

이제 Artifact Registry에 저장된 차트를 사용하여 버전을 배포할 수 있습니다.

차트 배포

Helm에서는 애플리케이션의 배포된 인스턴스를 버전이라고 합니다. Helm 구성에 저장소를 추가한 후 차트의 버전을 배포할 수 있습니다.

  1. 다음 명령어를 사용하여 배포에 chart-cluster라는 클러스터를 만듭니다.

    gcloud container clusters create --zone us-central1-a chart-cluster
    

    클러스터가 생성되면 명령어가 다음 예시와 비슷한 요약을 반환합니다.

    kubeconfig entry generated for chart-cluster.
    NAME: chart-cluster
    LOCATION: us-central1-a
    MASTER_VERSION: 1.20.10-gke.1600
    MASTER_IP: 34.66.36.211
    MACHINE_TYPE: e2-medium
    NODE_VERSION: 1.20.10-gke.1600
    NUM_NODES: 3
    STATUS: RUNNING
    
  2. kubectl이 클러스터에 액세스할 수 있도록 클러스터 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials --zone us-central1-a chart-cluster
    
  3. 다음 명령어를 실행하여 로컬에서 추출된 차트 파일을 사용하여 hello-chart 버전을 배포합니다.

    helm install hello-chart oci://us-central1-docker.pkg.dev/PROJECT/quickstart-helm-repo/hello-chart --version 0.1.0
    

    이 명령어는 배포 요약을 반환합니다.

    NAME: hello-chart
    LAST DEPLOYED: Mon Nov  8 23:15:13 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    

직접 만들어 Artifact Registry로 푸시한 차트를 사용하여 버전을 배포했습니다.

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

  1. 다음 명령어를 사용해 자신이 만든 저장소를 삭제합니다.

    gcloud artifacts repositories delete quickstart-helm-repo --location=us-central1
    
  2. 자신이 만든 클러스터를 삭제합니다.

    gcloud container clusters delete --zone=us-central1-a chart-cluster
    

다음 단계