표준 클러스터에 대한 액세스 관리

이 문서에서는 gdcloud CLI를 사용하여 Google Distributed Cloud (GDC) 오프라인 환경에서 표준 클러스터의 권한을 관리하는 방법을 설명합니다. 표준 클러스터는 프로젝트 범위의 구성 가능한 Kubernetes 환경으로, 최소한의 기본 서비스가 제공되어 맞춤 워크로드에 더 큰 유연성과 제어 기능을 제공합니다.

표준 클러스터 및 기타 클러스터 유형에 대한 자세한 내용은 Kubernetes 클러스터 구성을 참고하세요.

이 페이지는 GDC 프로젝트 내에서 리소스를 관리하고 보호해야 하는 애플리케이션 운영자 그룹(예: 개발자 운영 또는 데이터 과학자)을 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.

시작하기 전에

  • 조직 IAM 관리자에게 프로젝트 IAM 관리자(project-iam-admin) 역할을 부여해 달라고 요청하세요. 역할에 대한 자세한 내용은 역할 정의를 참고하세요.
  • 아직 설치하지 않았다면 gdcloud CLI를 설치합니다.

표준 클러스터 액세스 권한 부여

프로젝트 IAM 관리자 (project-iam-admin) 역할이 있는 사용자는 다음 단계에 따라 다른 사용자에게 표준 클러스터 내 액세스 권한을 관리하는 데 필요한 역할을 부여합니다.

  1. gdcloud CLI를 사용하여 구성된 ID 프로바이더로 로그인합니다.

  2. 사용자에게 프로젝트의 클러스터 관리자 (cluster-admin) 역할을 부여합니다. 이 명령어는 사용자를 역할에 바인딩하여 표준 클러스터 내에서 액세스를 관리할 수 있도록 합니다.

    역할에 대한 자세한 내용은 사전 정의된 역할 설명프로젝트의 역할 정의를 참고하세요.

    gdcloud projects add-iam-policy-binding PROJECT \
      --role=ROLE \
      --member=user:USER_ACCOUNT
    

    다음 변수를 바꿉니다.

    • PROJECT: 표준 클러스터가 있는 프로젝트의 이름입니다.
    • ROLE: 부여할 역할의 이름입니다(예: cluster-admin 또는 cluster-developer).
    • USER_ACCOUNT: 역할을 부여할 사용자 계정입니다. 여기에는 조직과 연결된 ID 공급업체 접두사 (예: idpprefix-user@example.com)가 포함됩니다. 사용되는 특정 접두사는 조직의 IdP 구성에 따라 다릅니다. 자세한 내용은 ID 공급업체에 연결을 참고하세요.

    다음 예시에서는 ID 제공업체 접두사가 프로젝트 foo의 경우 fop-이라고 가정할 때 user@example.com에 클러스터 관리자 역할을 부여합니다.

    gdcloud projects add-iam-policy-binding foo \
      --role=cluster-admin \
      --member=user:fop-user@example.com
    

표준 클러스터 내에서 액세스 관리

이전 섹션에서 cluster-admin 역할을 부여받은 사용자는 다음 단계를 실행합니다.

  1. gdcloud CLI를 사용하여 구성된 ID 프로바이더로 로그인합니다.

  2. --standard 플래그를 사용하여 표준 클러스터의 kubeconfig 파일을 생성합니다. 표준 클러스터를 타겟팅하려면 이 플래그가 필요합니다.

    export KUBECONFIG=KUBECONFIG_FILE
    gdcloud get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT
    

    다음 변수를 바꿉니다.

    • KUBECONFIG_FILE: kubeconfig 파일의 경로입니다(예: standard-cluster-kubeconfig.yaml).
    • STANDARD_CLUSTER_NAME: 표준 클러스터의 이름입니다.
    • PROJECT: 표준 클러스터가 있는 프로젝트의 이름입니다.
  3. kubectl을 사용하여 표준 클러스터 내에서 권한을 정의합니다.

    cluster-admin 권한이 있는 사용자는 맞춤 RoleClusterRole 객체를 만들 수 있습니다. 이러한 권한을 부여하려면 사용자나 서비스 계정과 같은 특정 주체에 역할을 바인딩하는 해당 RolebindingClusterRoleBinding 객체를 만들면 됩니다.

    다음 예시에서는 kubectl를 사용하여 test 네임스페이스에 test-role라는 샘플 맞춤 Role을 만듭니다.

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: test-role
      namespace: test
    rules:
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - get
    EOF
    

    다음 예시에서는 test 네임스페이스에서 Roletest-role이라는 RoleBinding을 만듭니다. fop- ID 공급업체 접두사가 있는 사용자 alice@example.com과 default 네임스페이스의 my-service-account라는 ServiceAccount에 권한을 부여합니다.

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: test-role-binding
      namespace: test
    subjects:
    - kind: User
      name: fop-alice@example.com
      apiGroup: rbac.authorization.k8s.io
    - kind: ServiceAccount
      name: my-service-account
      namespace: default
    roleRef:
      kind: Role
      name: test-role
      apiGroup: rbac.authorization.k8s.io
    EOF