Google 그룹을 AWS용 GKE에 연결

이 문서에서는 AWS용 GKE에 Google 그룹의 구성원으로 연결하는 방법을 설명합니다.

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

시작하기 전에

Google 그룹의 구성원으로 클러스터에 연결하려면 다음 기본 요건을 충족해야 합니다.

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

  2. Connect 게이트웨이를 사용하여 kubectl에 액세스하는 데 필요한 AWS용 GKE 버전 1.25 이상을 사용합니다.

Google 그룹을 통해 클러스터에 연결

Google 그룹을 AWS용 GKE에 연결하도록 승인하려면 다음 단계를 수행합니다.

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

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

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

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

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

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

  5. 연결 게이트웨이를 사용하여 kubectl에 액세스하려는 경우 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에 속하는 사용자는 관리자로 클러스터에 연결할 수 있습니다.