Helm 인증 설정

이 페이지에서는 Artifact Registry 저장소로 인증하도록 Helm을 구성하는 방법을 설명합니다.

시작하기 전에

  1. 차트의 저장소가 없으면 새 저장소를 만듭니다. Docker를 저장소 형식으로 선택합니다.
  2. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

    gcloud init
  3. (선택사항) Google Cloud CLI 명령어의 기본값을 구성합니다.
  4. Helm 3.8.0 이상을 설치합니다. 이전 버전의 Helm에서는 OCI 형식의 차트가 실험용 기능으로 지원됩니다.

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

인증 방식 선택

대부분의 경우 Artifact Registry에 인증하는 데 서비스 계정을 사용하는 것이 좋습니다.

다음과 같은 인증 방식을 사용할 수 있습니다.

Docker용으로 구성된 Artifact Registry 사용자 인증 정보 사용
기본적으로 Helm은 Docker에 사용하는 것과 동일한 사용자 인증 정보로 인증할 수 있습니다.
액세스 토큰
애플리케이션 기본 사용자 인증 정보는 서비스 계정에서 Google Cloud 리소스에 액세스하는 데 사용하는 단기 액세스 토큰을 제공합니다.
JSON 키 파일

서비스 계정의 사용자 인증 정보로 사용할 수 있는 사용자 관리형 키-쌍입니다. 사용자 인증 정보는 장기적이므로 사용 가능한 모든 인증 방법 중 보안 수준이 가장 낮은 옵션입니다.

가능하면 액세스 토큰을 사용하여 아티팩트에 대한 승인되지 않은 액세스 위험을 줄이세요.

Docker 구성 사용

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

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

액세스 토큰 사용

액세스 토큰은 Google Cloud 리소스에 액세스 권한을 제공하는 단기 토큰입니다. 토큰은 단기적이므로 Artifact Registry 저장소와 연결하는 데 사용하기 한 시간 전에 요청해야 합니다.

Google Cloud는 애플리케이션 기본 사용자 인증 정보를 사용하여 액세스 토큰을 가져옵니다.

액세스 토큰을 사용하려면 다음 안내를 따르세요.

  1. 애플리케이션 대신 작동하도록 서비스 계정을 만들거나 자동화에 사용할 기존 서비스 계정을 선택합니다.

    Artifact Registry로 인증을 설정하려면 서비스 계정 키 파일의 위치가 필요합니다. 기존 계정의 경우 서비스 계정 페이지에서 키를 보고 새 키를 만들 수 있습니다.

    서비스 계정 페이지로 이동

  2. 저장소 액세스 권한을 부여하기 위해 서비스 계정에 적절한 Artifact Registry 역할을 부여합니다.

  3. 저장소와 연결할 때 Artifact Registry 사용자 인증 정보 도우미가 키를 가져올 수 있도록 서비스 계정 키 파일 위치를 변수 GOOGLE_APPLICATION_CREDENTIALS에 할당합니다.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    여기서 KEY-FILE은 서비스 계정 키 파일의 경로입니다.

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

    Linux/macOS

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

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

    Windows

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

    gcloud auth application-default print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://LOCATION-docker.pkg.dev
    

    위치

    • oauth2accesstoken은 액세스 토큰으로 인증할 때 사용할 사용자 이름입니다.
    • gcloud auth application-default print-access-token은 서비스 계정에 대해 액세스 토큰을 가져오는 Google Cloud CLI 명령어입니다. 액세스 토큰은 인증에 사용되는 비밀번호입니다.
    • LOCATION은 이미지가 저장된 저장소의 리전 또는 멀티 리전 위치입니다.

이제 Helm이 Artifact Registry로 인증됩니다.

JSON 키 파일 사용

서비스 계정의 유효한 비공개 키에 액세스할 수 있는 사용자는 누구나 서비스 계정을 통해 리소스에 액세스할 수 있습니다. 서비스 계정에 대한 키의 액세스 수명주기(즉, 서비스 계정이 액세스한 데이터)는 키를 다운로드한 사용자의 수명주기와 관계가 없습니다.

다음 가이드라인을 사용하여 저장소에 대한 액세스를 제한합니다.

  • 저장소와 상호작용하는 데만 사용되는 전용 서비스 계정을 만듭니다.
  • 서비스 계정에 필요한 액세스 권한에 대한 특정 Artifact Registry 역할을 부여합니다. 예를 들어 아티팩트를 다운로드만 하는 서비스 계정에는 Artifact Registry 리더 역할만 필요합니다.
  • 프로젝트 수준 대신 각 저장소의 전용 서비스 계정에 대한 권한을 구성합니다. 그러면 저장소 컨텍스트를 기준으로 액세스를 지정할 수 있습니다. 예를 들어 개발 빌드에 사용되는 서비스 계정에는 프로덕션 저장소에 대한 Artifact Registry 리더 역할이 있고 스테이징 저장소에 대한 Artifact Registry 작성자 역할이 있을 수 있습니다.
  • 서비스 계정 키 관리 권장사항을 따릅니다.

Artifact Registry 저장소에서만 사용할 수 있도록 새 서비스 계정과 서비스 계정 키를 만들려면 다음 안내를 따르세요.

  1. 애플리케이션 대신 작동하도록 서비스 계정을 만들거나 자동화에 사용할 기존 서비스 계정을 선택합니다.

    Artifact Registry로 인증을 설정하려면 서비스 계정 키 파일의 위치가 필요합니다. 기존 계정의 경우 서비스 계정 페이지에서 키를 보고 새 키를 만들 수 있습니다.

    서비스 계정 페이지로 이동

  2. 원하는 경우 키 파일의 모든 콘텐츠를 base64로 인코딩할 수 있습니다.

    Linux

    base64 FILE-NAME > NEW-FILE-NAME
    

    macOS

    base64 -i FILE-NAME -o NEW-FILE-NAME
    

    Windows

    Base64.exe -e FILE-NAME > NEW-FILE-NAME
    

    여기서 FILE-NAME은 원래 키 파일 이름이고 NEW-FILE-NAME은 base64로 인코딩된 키 파일입니다.

  3. 저장소 액세스 권한을 부여하기 위해 서비스 계정에 적절한 Artifact Registry 역할을 부여합니다.

  4. 서비스 계정 키를 사용하여 인증합니다.

    Linux/Mac OS

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

    cat KEY-FILE | helm registry login -u KEY-TYPE --password-stdin \
    https://LOCATION-docker.pkg.dev
    

    Windows

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

    helm registry login -u KEY-TYPE --password-stdin https://LOCATION-docker.pkg.dev < KEY-FILE
    

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

    • KEY-TYPE은 다음 중 하나입니다.
      • _json_key - 파일을 만들 때 제공된 JSON 형식의 서비스 계정 키를 사용하는 경우
      • _json_key_base64 - 파일의 모든 콘텐츠를 base64로 인코딩한 경우
    • KEY-FILE은 JSON 형식의 서비스 계정 키 파일 이름입니다.
    • LOCATION은 이미지가 저장된 저장소의 리전 또는 멀티 리전 위치입니다.

이제 Helm이 Artifact Registry로 인증됩니다.

다음 단계