이 페이지에서는 VMware용 Google Distributed Cloud(소프트웨어만 해당) 관리 클러스터에서 Google의 Artifact Registry를 워크로드 이미지를 저장하는 데 사용할 수 있는 비공개 Docker 레지스트리로 구성하는 방법을 설명합니다. 비공개 레지스트리를 워크로드 이미지 저장소로 구성하면 클러스터를 만들거나 업그레이드할 때 Google Distributed Cloud 시스템 이미지 또한 비공개 레지스트리에 저장됩니다.
Artifact Registry는 여러 가지 인증 방법을 지원하지만, Artifact Registry를 비공개 레지스트리로 사용하려면 서비스 계정 키를 인증에 사용해야 합니다. 이 페이지에서는 관리자 클러스터 구성 파일의 privateRegistry 섹션에 필요한 주소, 사용자 인증 정보, CA 인증서를 가져오는 방법을 설명합니다.
사용자 인증 정보 파일 구성
- 레지스트리에 대한 인증을 아직 구성하지 않았으면 Docker용 Artifact Registry 인증 구성의 안내에 따라 서비스 계정을 사용해 인증을 구성해야 합니다. 인증에 JSON 키 파일이 포함된 서비스 계정을 사용해야 합니다. 
- 다음 예시에 표시된 것처럼 사용자 인증 정보 구성 파일인 - admin-creds.yaml을 만듭니다.- username은- "_json_key"여야 합니다.- name필드에는 임의의 값을 사용할 수 있지만, 이후- privateRegistry.entry필드에 추가할 값과 일치해야 합니다.- apiVersion: v1 kind: "CredentialFile" items: - name: "private-registry-creds" username: "_json_key" password:
- 레지스트리용 서비스 계정의 JSON 키 파일이 있는 디렉터리에서 해당 키 파일에 대해 - cat를 실행하여 해당 콘텐츠를 출력합니다.
- 전체 JSON 키 콘텐츠를 복사하고 - password필드에 붙여넣습니다. JSON 키에는 큰따옴표가 포함되어 있으므로, 키 콘텐츠를 작은따옴표로 감싸야 합니다. 예를 들면 다음과 같습니다.- apiVersion: v1 kind: "CredentialFile" items: - name: "private-registry-creds" username: "_json_key" password: '{ "type": "service_account", "project_id": "example-project-12345", "private_key_id": "d2661ccb21e686658c6552cf1e0166b857091b2e", "private_key": "-----BEGIN PRIVATE ... -----END PRIVATE KEY-----\n", "client_email": "test-537@example-project-12345.iam.gserviceaccount.com", "client_id": "111772984510027821291", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test-537%40example-project-12345.iam.gserviceaccount.com", "universe_domain": "googleapis.com" } '
관리자 클러스터 구성 파일에서 privateRegistry 구성
비공개 레지스트리를 사용하려면 관리자 클러스터를 만들 때 privateRegistry 섹션을 구성해야 합니다. 클러스터를 만든 후에는 privateRegistry.address를 변경할 수 없지만 다른 설정은 수정 가능하며, 필요에 따라 업데이트할 수 있습니다.
- 다음 명령어를 실행하여 레지스트리 주소를 가져옵니다. - gcloud artifacts repositories describe REGISTRY_NAME \ --project=PROJECT_ID --location=REGION- 다음을 바꿉니다. - REGISTRY_NAME: 레지스트리의 이름입니다.
- PROJECT_ID: 레지스트리가 생성된 프로젝트의 ID입니다.
- LOCATION: 레지스트리가 생성된 리전입니다(예:- us-west2).
 - 출력은 다음과 비슷합니다. - Encryption: Google-managed key Repository Size: 0.000MB cleanupPolicyDryRun: true createTime: '2025-01-28T03:27:57.701672Z' dockerConfig: {} format: DOCKER mode: STANDARD_REPOSITORY name: projects/example-project-12345/locations/us-west2/repositories/test registryUri: us-west2-docker.pkg.dev/example-project-12345/test satisfiesPzi: true updateTime: '2025-01-28T03:27:57.701672Z' vulnerabilityScanningConfig: enablementConfig: INHERITED enablementState: SCANNING_ACTIVE lastEnableTime: '2025-01-28T03:27:49.385246079Z'- privateRegistry.address출력에서- registryUri값을 사용합니다.
- 다음 명령어를 실행하여 Artifact Registry 엔드포인트의 CA 인증서를 추출하고 이를 - ar-ca.pem이라는 파일에 저장합니다.- true | openssl s_client -connect REGION-docker.pkg.dev:443 -showcerts 2>/dev/null| sed -ne '/-BEGIN/,/-END/p' > ar-ca.pem
- 다음과 같이 - privateRegistry섹션을 작성합니다.- privateRegistry: address: "REGISTRY_ADDRESS" credentials: fileRef: path: "CREDENTIAL_FILE_PATH" entry: "private-registry-creds" caCertPath: "CA_CERT_PATH" componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_KEY_PATH"- 다음을 바꿉니다. - REGISTRY_ADDRESS:- registryUri값입니다.
- CREDENTIAL_FILE_PATH:- admin-creds.yaml파일의 전체 또는 상대 경로입니다.
- CA_CERT_PATH:- ar-ca.pem파일의 전체 또는 상대 경로입니다.
- COMPONENT_ACCESS_KEY_PATH: 구성요소 액세스 서비스 계정 키 파일의 전체 또는 상대 경로입니다.