OCI 이미지나 Helm 저장소에 대한 구성 동기화 액세스 권한 부여

이 페이지에서는 OCI 이미지 또는 Helm 저장소에 구성 동기화를 인증하는 방법을 설명합니다. 구성 동기화에는 구성을 읽고 클러스터에 적용하며 동기화 상태를 유지할 수 있도록 정보 소스에 대한 읽기 전용 액세스 권한이 필요합니다.

인증 방식 선택

사용하는 인증 방법은 소스 유형에 지원되는 방법에 따라 다릅니다.

다음 표에는 구성 동기화와 함께 사용할 수 있는 인증 방법이 요약되어 있습니다.

메서드 지원되는 소스 설명 제한사항
인증이 필요하지 않음 Git, OCI, Helm 추가 설정은 필요하지 않습니다. 정보 소스가 공개 상태인 경우에만 작동합니다.
SSH 키 쌍 Git 대부분의 Git 제공업체에서 지원됩니다. 키를 관리해야 합니다. OCI 또는 Helm에는 지원되지 않습니다.
token Git, Helm 대부분의 Git 제공업체에서 지원됩니다. 조직에서 SSH 키 사용을 허용하지 않는 경우에 좋은 대안입니다. Helm의 사용자 이름과 비밀번호를 지원합니다. 토큰을 관리해야 합니다. 토큰은 만료될 수 있습니다. OCI에는 지원되지 않습니다.
Kubernetes 서비스 계정 OCI, Helm IAM을 사용하여 Kubernetes 서비스 계정에 Artifact Registry 액세스 권한을 직접 부여합니다. 클러스터에 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있어야 합니다. Git에는 지원되지 않습니다.
Google 서비스 계정 Git Kubernetes 보안 비밀에 사용자 인증 정보를 저장하지 않는 IAM을 사용합니다. Secure Source Manager 및 Cloud Source Repositories에 권장됩니다. 클러스터에 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있어야 합니다. 클러스터에 구성 동기화를 설치하기 전후에 구성이 필요합니다. Secure Source Manager 또는 Cloud Source Repositories 외부에서 호스팅되는 저장소에는 지원되지 않습니다.
GitHub 앱 Git GitHub와 직접 통합합니다. 세분화된 권한을 허용합니다. GitHub에 호스팅된 저장소에만 지원됩니다. 구성 동기화 버전 1.19.1 이상에서만 지원됩니다.

구성 동기화는 다음 인증 방법도 지원하지만 앞의 표에 나열된 옵션 중 하나를 사용할 수 없는 경우에만 이러한 방법을 사용하는 것이 좋습니다.

  • cookiefile:은 일부 Git 제공업체에 지원되지 않을 수 있습니다. OCI 또는 Helm에는 지원되지 않습니다.
  • Compute Engine 기본 서비스 계정(gcenode): GKE용 워크로드 아이덴티티 제휴가 사용 중지된 경우에만 이 방법이 작동하므로 권장되지 않습니다. Git, OCI, Helm에 지원됩니다.
  • Helm 및 OCI용 Google 서비스 계정: 지원되지만 Kubernetes 서비스 계정 메서드에 구성이 덜 필요하므로 권장되지 않습니다.

시작하기 전에

구성 동기화에 정보 소스에 대한 읽기 전용 액세스 권한을 부여하기 전에 다음 태스크를 완료합니다.

OCI 이미지에 대한 액세스 권한 부여

이 섹션에서는 지원되는 인증 방법을 사용하여 구성 동기화에 OCI 이미지에 대한 읽기 전용 액세스 권한을 부여하는 방법을 설명합니다.

구성 동기화를 인증하려면 Artifact Registry에 OCI 이미지를 저장해야 합니다.

Kubernetes 서비스 계정 사용

Kubernetes 서비스 계정으로 인증하려면 클러스터에 GKE용 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴가 사용 설정되어 있어야 합니다.

Kubernetes 서비스 계정을 사용하여 구성 동기화에 OCI 이미지에 대한 읽기 전용 액세스 권한을 부여하려면 다음 단계를 완료합니다.

  1. 정책 바인딩을 만드는 데 필요한 권한을 얻으려면 관리자에게 서비스 계정에 대한 서비스 계정 관리자(roles/iam.serviceAccountAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  2. GKE용 워크로드 아이덴티티 제휴 풀이 포함된 Kubernetes 서비스 계정에 Artifact Registry 리더(roles/artifactregistry.reader) IAM 역할을 부여합니다.

    • 프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • 서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • FLEET_HOST_PROJECT_ID: GKE용 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 프로젝트 ID와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 클러스터가 등록된 Fleet의 프로젝트 ID입니다.
    • REPOSITORY: 이미지 ID
    • LOCATION: 저장소의 리전 또는 멀티 리전 위치입니다.

구성 동기화를 설치할 때 Kubernetes 서비스 계정(k8sserviceaccount)을 인증 유형으로 사용합니다.

Compute Engine 기본 서비스 계정 사용

GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있지 않은 경우 Google 서비스 계정 대신 Compute Engine 서비스 계정을 사용하여 인증할 수 있습니다.

Compute Engine 기본 서비스 계정을 사용하여 저장소에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여하려면 Compute Engine 서비스 계정에 Artifact Registry에 대한 읽기 권한을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • PROJECT_NUMBER: 프로젝트 번호

구성 동기화를 설치할 때 Compute Engine 서비스 계정(gcenode)을 인증 유형으로 사용합니다.

Helm 저장소에 대한 액세스 권한 부여

이 섹션에서는 저장소에 저장된 Helm 차트에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여하는 방법을 설명합니다.

토큰 사용

토큰을 사용하여 Helm 저장소에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여하려면 Helm 저장소 사용자 이름과 비밀번호를 사용하는 보안 비밀을 만듭니다.

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

다음을 바꿉니다.

  • SECRET_NAME: 보안 비밀 이름
  • USERNAME: Helm 저장소 사용자 이름
  • PASSWORD: Helm 저장소 비밀번호

구성 동기화를 설치할 때 토큰(token)을 인증 유형으로 사용합니다. spec.helm.secretRef.name 필드에 보안 비밀 이름도 지정해야 합니다.

Kubernetes 서비스 계정 사용

Kubernetes 서비스 계정을 사용하여 인증하려면 다음 요구사항을 충족해야 합니다.

Kubernetes 서비스 계정을 사용하여 Helm 저장소에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여하려면 다음 단계를 완료합니다.

  1. 정책 바인딩을 만드는 데 필요한 권한을 얻으려면 관리자에게 서비스 계정에 대한 서비스 계정 관리자(roles/iam.serviceAccountAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  2. Kubernetes 서비스 계정을 사용하여 Helm 저장소에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여하려면 GKE용 워크로드 아이덴티티 제휴 풀이 포함된 Kubernetes 서비스 계정에 Artifact Registry 리더(roles/artifactregistry.reader) IAM 역할을 부여합니다.

    • 프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • 서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • FLEET_HOST_PROJECT_ID: GKE용 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 프로젝트 ID와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 클러스터가 등록된 Fleet의 프로젝트 ID입니다.
    • REPOSITORY: 이미지 ID
    • LOCATION: 저장소의 리전 또는 멀티 리전 위치입니다.

구성 동기화를 설치할 때 Kubernetes 서비스 계정(k8sserviceaccount)을 인증 유형으로 사용합니다.

Compute Engine 기본 서비스 계정 사용

GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있지 않은 경우 Google 서비스 계정 대신 Compute Engine 서비스 계정을 사용하여 인증할 수 있습니다.

Compute Engine 기본 서비스 계정을 사용하여 저장소에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여하려면 Compute Engine 서비스 계정에 Artifact Registry에 대한 읽기 권한을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • PROJECT_NUMBER: 프로젝트 번호

구성 동기화를 설치할 때 Compute Engine 서비스 계정(gcenode)을 인증 유형으로 사용합니다.

다음 단계