이 문서에서는 gdcloud CLI를 사용하여 Google Distributed Cloud (GDC) 오프라인 환경에서 표준 클러스터의 권한을 관리하는 방법을 설명합니다. 표준 클러스터는 프로젝트 범위의 구성 가능한 Kubernetes 환경으로, 최소한의 기본 서비스가 제공되어 맞춤 워크로드에 더 큰 유연성과 제어 기능을 제공합니다.
표준 클러스터 및 기타 클러스터 유형에 대한 자세한 내용은 Kubernetes 클러스터 구성을 참고하세요.
이 페이지는 GDC 프로젝트 내에서 리소스를 관리하고 보호해야 하는 애플리케이션 운영자 그룹(예: 개발자 운영 또는 데이터 과학자)을 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.
시작하기 전에
- 조직 IAM 관리자에게 프로젝트 IAM 관리자(
project-iam-admin) 역할을 부여해 달라고 요청하세요. 역할에 대한 자세한 내용은 역할 정의를 참고하세요. - 아직 설치하지 않았다면 gdcloud CLI를 설치합니다.
표준 클러스터 액세스 권한 부여
프로젝트 IAM 관리자 (project-iam-admin) 역할이 있는 사용자는 다음 단계에 따라 다른 사용자에게 표준 클러스터 내 액세스 권한을 관리하는 데 필요한 역할을 부여합니다.
gdcloud CLI를 사용하여 구성된 ID 프로바이더로 로그인합니다.
사용자에게 프로젝트의 클러스터 관리자 (
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 역할을 부여받은 사용자는 다음 단계를 실행합니다.
gdcloud CLI를 사용하여 구성된 ID 프로바이더로 로그인합니다.
--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: 표준 클러스터가 있는 프로젝트의 이름입니다.
kubectl을 사용하여 표준 클러스터 내에서 권한을 정의합니다.cluster-admin권한이 있는 사용자는 맞춤Role및ClusterRole객체를 만들 수 있습니다. 이러한 권한을 부여하려면 사용자나 서비스 계정과 같은 특정 주체에 역할을 바인딩하는 해당Rolebinding및ClusterRoleBinding객체를 만들면 됩니다.다음 예시에서는
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네임스페이스에서Role의test-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