CNCF 호환 클러스터에 연결

이 문서에서는 CNCF 호환 연결 클러스터에 연결하는 3가지 방법을 설명합니다.

이렇게 등록된 클러스터에 연결하기 위한 세 가지 방법은 Connect 게이트웨이라고 부르는 Google 서비스에 따라 사용 설정됩니다. Connect 게이트웨이에 대한 자세한 내용은 Connect 게이트웨이를 사용하여 등록된 클러스터에 연결을 참조하세요.

시작하기 전에

3가지 방법 중 하나를 수행하기 전에 클러스터를 연결했는지 확인합니다. 자세한 내용은 CNCF 호환 클러스터에 연결을 참조하세요.

방법 2 또는 방법 3을 계속 진행하기 전에 추가적인 기본 요건을 충족해야 합니다. 자세한 내용은 다음 섹션을 참고하세요.

방법 #2를 시작하기 전에

연결 클러스터에 연결하는 방법 #2를 사용하려면 다음 기본 요건을 충족해야 합니다.

  • 최신 버전의 Google Cloud CLI입니다. gcloud CLI 업데이트에 대한 자세한 내용은 gcloud components update를 참조하세요.
  • 연결 클러스터 버전 1.26.0-gke.8, 1.27.0-gke.5, 1.28.0-gke.2 이상입니다.

방법 #3을 시작하기 전에

연결 클러스터에 연결하는 방법 #3을 사용하려면 다음 기본 요건을 충족해야 합니다.

  1. 최신 버전의 Google Cloud CLI가 있어야 합니다. gcloud CLI 업데이트에 대한 자세한 내용은 gcloud components update를 참조하세요.

  2. 연결 클러스터 버전 1.27.0-gke.5, 1.28.0-gke.2 이상을 사용하고 있는지 확인합니다.

  3. 외부 사용자 또는 그룹이 GKE 연결 클러스터 API를 사용할 수 있도록 직원 ID 제휴를 구성합니다.

  4. 선택사항: 외부 사용자 또는 그룹에 적절한 Identity and Access Management(IAM) 역할을 할당합니다. 이 단계는 사용자 또는 그룹에 클러스터를 만들거나 업데이트할 수 있는 권한을 부여하려는 경우에만 필요합니다. 단순히 클러스터에 액세스하는 데에는 필요하지 않습니다.

    참고로 역할은 권한 모음입니다. 항목(사용자, 그룹 또는 서비스 계정)에 역할을 할당하면 역할에 포함된 모든 권한이 항목에 부여됩니다.

    사용자

    개별 사용자의 경우 gkemulticloud.admin 역할을 할당해야 합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE"
    

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • WORKFORCE_POOL_ID: Google Cloud에서 직원 ID 풀을 고유하게 식별하는 ID. ID 형식을 지정할 때는 쿼리 매개변수의 IAM 문서에서 제공하는 권장 가이드라인을 따라야 합니다.
    • SUBJECT_VALUE: 외부 사용자를 고유하게 식별하는 ID. 예를 들어 ID는 alex@cymbalgroup.com 같은 이메일 주소일 수 있습니다.

    그룹

    그룹의 경우 gkemulticloud.admin 역할을 할당해야 합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • WORKFORCE_POOL_ID: Google Cloud에서 직원 ID 풀을 고유하게 식별하는 ID. ID 형식을 지정할 때는 쿼리 매개변수의 IAM 문서에서 제공하는 권장 가이드라인을 따라야 합니다.
    • GROUP_ID: 외부 그룹을 고유하게 식별하는 ID

    GKE 연결 클러스터에 필요한 API 역할 및 권한에 대한 자세한 내용은 API 역할 및 권한을 참조하세요.

방법 #1: Google 사용자로 연결된 클러스터에 연결

연결된 클러스터에 Google 사용자로 연결하려면 다음 단계를 수행합니다.

  1. 다음 명령어를 사용하여 connectgatewaycloudresourcemanager API를 사용 설정합니다.

     gcloud services enable --project=PROJECT_ID \
         connectgateway.googleapis.com \
         cloudresourcemanager.googleapis.com
    

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

  2. RBAC 규칙을 자동 또는 수동으로 설정하고 적용합니다.

    • 자동 메서드: 클러스터를 연결할 때 gcloud container attached clusters register 명령어의 --admin-users 필드에 Google 사용자를 지정하면 해당 사용자에게 클러스터에 대한 관리자 권한이 자동으로 부여됩니다. 따라서 이 단계를 건너뛸 수 있습니다.

    • 수동 방법: Kubernetes YAML 매니페스트를 만들어 개별 Google 사용자의 RBAC 규칙을 수동으로 설정합니다. 자세한 내용은 RBAC 승인 사용을 참조하세요.

  3. 다음 명령어를 사용하여 Kubernetes kubeconfig 구성 파일을 가져옵니다.

    gcloud container fleet memberships get-credentials CLUSTER_NAME
    

    CLUSTER_NAME을 원하는 연결 사용자 인증 정보가 있는 클러스터의 이름으로 바꿉니다.

이 단계를 수행하면 연결된 클러스터에 Google 사용자로 연결할 수 있습니다.

방법 #2: Google 그룹스로 연결된 클러스터에 연결

이 방법을 사용하면 연결된 클러스터에 Google 그룹의 구성원으로 연결할 수 있습니다. 즉, Google 그룹에 클러스터에 대한 액세스 권한을 부여하면 해당 Google 그룹에 속한 모든 사용자가 클러스터에 액세스할 수 있습니다.

Google 그룹을 사용하여 클러스터 액세스 권한을 부여하는 것이 개별 사용자에 대해 별도의 승인을 생성하는 것보다 더 효율적입니다. 예를 들어 클러스터 관리자 그룹에 사용자 50명, 편집자 그룹에 사용자 75명, 리더 그룹에 사용자 100명을 추가한다고 가정해 보겠습니다. 이 문서에 설명된 메서드 #1을 사용하려면 사용자 225명에 대해 Kubernetes 매니페스트 파일에 RBAC 규칙을 만들어야 합니다. 하지만 메서드#2는 3개의 Google 그룹에 대한 RBAC 규칙만 만들면 되므로 시간이 절약됩니다.

Google 그룹을 연결된 클러스터에 연결하도록 승인하려면 다음 단계를 수행합니다.

  1. 다음 명령어를 사용하여 connectgatewaycloudresourcemanager API를 사용 설정합니다.

      gcloud services enable --project=PROJECT_ID \
          connectgateway.googleapis.com \
          cloudresourcemanager.googleapis.com
    

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

  2. 프로젝트 도메인에 gke-security-groups라는 그룹이 없으면 이 그룹을 그룹으로 만듭니다.

  3. 클러스터 인증을 위해 gke-security-groups 그룹 내에 하위 그룹을 하나 이상 만듭니다.

  4. 새로 만든 하위 그룹에 사용자를 추가합니다.

  5. Google 그룹스에 IAM 역할 부여

    1. 그룹에 적합한 역할을 선택합니다. 이 역할은 그룹이 연결 게이트웨이와 상호작용하는 방법을 결정합니다. 역할은 roles/gkehub.gatewayAdmin, roles/gkehub.gatewayEditor, roles/gkehub.gatewayReader 중 하나일 수 있습니다. (여기에서는 연결된 클러스터에 대한 권한을 부여하지 않습니다. 이 단계는 나중에 나옵니다.) 여기에서는 그룹 사용자가 연결 게이트웨이를 조작할 수 있는 방법만 결정합니다.

    2. 다음 명령어를 실행하여 그룹에 역할을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=group:GROUP_NAME@DOMAIN \
        --role=GATEWAY_ROLE
      

      다음을 바꿉니다.

      • PROJECT_ID: Google 프로젝트 ID입니다.
      • GROUP_NAME: 액세스 권한을 부여할 그룹의 이름입니다.
      • DOMAIN: Google Workspace 도메인
      • GATEWAY_ROLE: 선택한 역할. 예를 들면 roles/gkehub.gatewayAdmin, roles/gkehub.gatewayEditor 또는 roles/gkehub.gatewayReader입니다.
  6. Kubernetes 매니페스트에서 각 Google 그룹이 클러스터에 대해 갖는 권한의 종류를 정의합니다. 예를 들어 다음 매니페스트는 Google 그룹 cluster-admin-team에 클러스터 관리자 역할을 부여합니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: cluster-admin-team@example.com
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    
  7. 다음 명령어를 실행하여 매니페스트를 파일에 저장하고 이를 클러스터에 적용합니다.

    kubectl apply -kubeconfig=KUBECONFIG_PATH -f FILENAME
    

    다음을 바꿉니다.

    • KUBECONFIG_PATH: kubeconfig 파일에 대한 경로
    • FILENAME: 만든 매니페스트 파일의 이름

이 단계를 수행하면 특정 Google 그룹에 속하는 사용자가 연결된 클러스터에 연결할 수 있습니다. 이 예시에서 Google 그룹 cluster-admin-team에 속하는 사용자는 관리자로 클러스터에 연결할 수 있습니다.

방법 #3: 클러스터를 연결하거나 업데이트할 때 외부 ID에 액세스 권한 부여

방법 #3은 클러스터를 연결하거나 업데이트할 때 외부 ID에 액세스 권한을 부여합니다.

CNCF 호환 클러스터를 연결하려면 CNCF 호환 클러스터 연결의 단계를 수행합니다. CNCF 호환 클러스터를 업데이트하려면 CNCF 호환 클러스터 업데이트의 단계를 수행합니다.

클러스터를 등록하거나 업데이트하기 위해 gcloud CLI 명령어를 실행할 때는 다음과 같이 admin-users 및/또는 admin-groups 매개변수를 지정합니다.

gcloud container attached clusters [register|update] CLUSTER_NAME \
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름
  • WORKFORCE_POOL_ID: Google Cloud에서 직원 ID 풀을 고유하게 식별하는 ID. ID 형식을 지정할 때는 쿼리 매개변수의 IAM 문서에서 제공하는 권장 가이드라인을 따라야 합니다.
  • SUBJECT_VALUE: 외부 사용자를 고유하게 식별하는 ID. 예를 들어 ID는 alex@cymbalgroup.com 같은 이메일 주소일 수 있습니다.
  • GROUP_ID: 외부 그룹을 고유하게 식별하는 ID

다음 단계

Cloud ID를 사용하여 Google Cloud 콘솔에서 클러스터를 관리하려면 Google Cloud ID를 사용하여 로그인을 참조하세요.