워크로드 아이덴티티 사용

이 페이지에서는 워크로드 아이덴티티를 사용 설정하여 Google Cloud API를 사용하도록 Cloud Run for Anthos on Google Cloud 서비스를 인증하는 방법을 설명합니다.

GKE 클러스터 내에서 컴퓨팅 API, 스토리지 및 데이터베이스 API 또는 머신러닝 API와 같은 Google Cloud API를 사용하려면 권한이 있어야 하고 워크로드 아이덴티티를 사용 설정하고 Kubernetes 서비스 계정이 Google 서비스 계정 역할을 하도록 binding하여 Cloud Run for Anthos 서비스를 인증해야 합니다.

클러스터에서 워크로드 아이덴티티 사용 설정

Cloud Run for Anthos에서 워크로드 아이덴티티를 설정하려면 다음 안내를 참조하여 클러스터에서 사용 설정하세요. 그렇지 않으면 다음 섹션으로 건너뛰세요.

새 클러스터에서 워크로드 아이덴티티 사용 설정 또는 기존 클러스터에서 워크로드 아이덴티티 사용 설정

워크로드 아이덴티티로 클러스터의 측정항목 사용 설정

워크로드 아이덴티티를 사용 설정할 때 Cloud Run for Anthos는 버전 요청 수 또는 요청 지연 시간과 같은 특정 측정항목을 Google Cloud 운영 제품군에 보고하지 않지만 CPU 및 메모리에 대한 측정항목은 계속 보고합니다.

모든 측정항목을 사용 설정하려면 Cloud Run for Anthos 서비스와 연결된 Google 서비스 계정(GSA)에 모니터링 측정항목 작성자 역할을 부여하여 Cloud Monitoring에 측정항목을 기록할 권한을 수동으로 설정해야 합니다.

서비스의 GSA에 모니터링 측정항목 작성자 역할 권한을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
--role=roles/monitoring.metricWriter

다음과 같이 바꿉니다.

  • PROJECT_ID를 KSA를 호스팅하는 클러스터 프로젝트의 프로젝트 ID로 바꿉니다.
  • GSA_PROJECT를 클러스터에 없는 GSA의 프로젝트 ID로 바꿉니다. 조직의 모든 GSA를 사용할 수 있습니다.

자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.

서비스 계정 binding

Kubernetes 서비스 계정(KSA)이 Google 서비스 계정(GSA) 역할을 하도록 관계를 설정해야 합니다. KSA로 실행되는 모든 워크로드는 Google Cloud APIs에 액세스할 때 GSA로 자동 인증됩니다.

  1. Kubernetes 서비스 계정(KSA)이 없으면 Cloud Run for Anthos 서비스와 동일한 Kubernetes 네임스페이스에 계정을 만듭니다. 그렇지 않으면 다음 단계로 건너뜁니다.

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  2. KSA로 실행되는 워크로드가 Google Cloud API에 액세스할 때 GSA로 자동 인증되도록 KSA와 GSA 간의 관계를 만듭니다.

    1. KSA가 GSA 역할을 하도록 승인합니다.

      gcloud iam service-accounts add-iam-policy-binding \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
      GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com
    2. binding을 활용하도록 클러스터를 업데이트합니다.

      kubectl annotate serviceaccount \
      --namespace K8S_NAMESPACE \
       KSA_NAME \
       iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com

새 ID로 새 서비스 배포

배포하려는 서비스의 클러스터와 네임스페이스 내에 있는 KSA를 사용하여 서비스를 배포합니다. 서비스 계정이 클러스터와 다른 프로젝트에 속할 수 있습니다.

콘솔

  1. Cloud Run for Anthos on Google Cloud로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 컨테이너를 클릭합니다.

    이미지

  4. 서비스 계정 드롭다운을 클릭하고 원하는 서비스 계정을 선택합니다.

  5. 만들기 또는 배포를 클릭합니다.

gcloud

다음 명령어로 기존 서비스를 업데이트하여 새 런타임 서비스 계정을 만들 수 있습니다.

gcloud kuberun core services update SERVICE --service-account SERVICE_ACCOUNT

다음과 같이 바꿉니다.

  • SERVICE를 서비스 이름으로 바꿉니다.
  • SERVICE_ACCOUNT를 새 ID와 연결된 서비스 계정으로 바꿉니다. 배포 중에 다음 명령어를 사용하여 서비스 계정을 설정할 수도 있습니다.
gcloud kuberun core services create --image IMAGE_URL --service-account SERVICE_ACCOUNT

다음과 같이 바꿉니다.

  • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/myproject/my-image:latest)로 바꿉니다.
  • SERVICE_ACCOUNT를 새 ID와 연결된 서비스 계정으로 바꿉니다.

YAML

YAML 파일을 사용하여 기존 서비스의 구성을 수정하려면 현재 구성의 복사본을 가져오고 변경사항을 수정하여 로컬 파일에 저장한 다음 해당 변경사항을 서비스에 배포합니다.

  1. YAML로 표시한 다음 서비스 구성을 로컬 파일(예: service.yaml)에 복사합니다.

    gcloud kuberun core services describe SERVICE --format yaml

    SERVICE를 Cloud Run for Anthos 서비스 이름으로 바꿉니다.

  2. 로컬 파일에서 serviceAccountName: 속성을 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: SERVICE_ACCOUNT

    바꾸기

    • SERVICE를 Cloud Run for Anthos on Google Cloud 서비스 이름으로 바꿉니다.
    • SERVICE_ACCOUNT를 새 ID와 연결된 서비스 계정으로 바꿉니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud beta run services replace service.yaml