이 페이지에서는 Distributed Cloud에서 사용자를 관리하는 방법을 설명합니다.
Distributed Cloud 클러스터를 만들면 클러스터를 만드는 데 사용한 사용자 계정에만 해당 클러스터에 대한 액세스 권한이 부여됩니다. 더 많은 사용자에게 클러스터 액세스 권한을 부여하려면 다음 중 하나를 수행하면 됩니다.
Kubernetes RBAC를 사용하여 필요한 권한 부여
이 섹션에서는 Kubernetes 역할 기반 액세스 제어 (RBAC)를 사용하여 사용자의 비즈니스 요구사항에 필요한 권한을 사용자의 계정에 부여하는 방법을 설명합니다. 이러한 권한은 여러 역할로 캡슐화됩니다. 사용자 계정에 적절한 역할을 부여한 후 해당 계정을 타겟 Distributed Cloud 클러스터에 추가할 수 있습니다.
Distributed Cloud는 Distributed Cloud 클러스터에서 Kubernetes RBAC와 함께 사용할 Identity and Access Management 그룹 또는 서드 파티 ID 공급업체를 지원하지 않습니다.
사용자에게 역할을 부여하려면 다음 Kubernetes 리소스를 사용해야 합니다.
ClusterRole: 클러스터의 모든 네임스페이스에 권한 집합을 적용할 수 있으며 클러스터 전체 리소스에 대한 액세스 권한도 부여합니다.ClusterRoleBinding:ClusterRole리소스를 사용자 계정에 바인딩합니다.Role: 특정 네임스페이스에 권한 집합을 적용할 수 있습니다.RoleBinding: 특정 네임스페이스의 사용자 계정에Role또는ClusterRole리소스를 바인딩합니다.
클러스터 관리자 권한 부여
Distributed Cloud 클러스터를 만들면 클러스터를 만드는 데 사용한 사용자 계정이 자동으로 클러스터 관리자가 됩니다. 추가 사용자에게 클러스터 관리자 권한을 부여하려면 ClusterRoleBinding 리소스를 만들어 대상 사용자 계정을 cluster-admin 역할에 바인딩하고 클러스터에 적용합니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.
다음 kubectl 명령어를 사용할 수도 있습니다.
kubectl create clusterrolebinding "BINDING_NAME" \ --clusterrole cluster-admin --user "ACCOUNT_NAME"
다음을 바꿉니다.
BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.
애플리케이션 개발자 권한 부여
애플리케이션 개발자에게 대상 클러스터에 워크로드를 배포하는 데 필요한 권한을 부여하려면 다음 단계를 따르세요.
타겟 네임스페이스에서 포드, 서비스, 배포를 만들고 관리할 수 있는 권한을 부여하는
Role리소스를 만들고 클러스터에 적용합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
다음을 바꿉니다.
NAMESPACE: 타겟 네임스페이스의 이름입니다.ROLE_NAME: 이 역할을 고유하게 식별하는 이름입니다.
이전 단계에서 만든 역할에 타겟 사용자 계정을 바인딩하는
RoleBinding리소스를 만들고 클러스터에 적용합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME kind: User name: ACCOUNT_NAME roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.NAMESPACE: 타겟 네임스페이스의 이름입니다.ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.ROLE_NAME: 대상 역할의 이름입니다.
Cloud Build 서비스 에이전트에 권한 부여
Cloud Build 서비스 에이전트에 대상 클러스터에 워크로드를 배포하는 데 필요한 권한을 부여하려면 다음 단계를 따르세요.
타겟 네임스페이스에서 포드, 서비스, 배포를 만들고 관리할 수 있는 권한을 부여하는
Role리소스를 만들고 클러스터에 적용합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
다음을 바꿉니다.
NAMESPACE: 타겟 네임스페이스의 이름입니다.ROLE_NAME: 이 역할을 고유하게 식별하는 이름입니다.
타겟 Cloud Build 서비스 에이전트 계정을 이전 단계에서 만든 역할에 바인딩하고 클러스터에 적용하는
RoleBinding리소스를 만듭니다.apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: PROJECT_ID@cloudbuild.gserviceaccount.com roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.NAMESPACE: 타겟 네임스페이스의 이름입니다.PROJECT_ID: 대상 Google Cloud 프로젝트의 ID입니다.ROLE_NAME: 대상 역할의 이름입니다.
Cloud Build 서비스 에이전트에게 대상 클러스터의 모든 네임스페이스에서 워크로드를 배포하고 관리할 권한을 부여해야 하는 경우 Role 및 RoleBinding 리소스 대신 ClusterRole 및 ClusterRoleBinding 리소스를 만듭니다.
클러스터 정보를 볼 수 있는 권한 부여
Google Cloud 콘솔에서 클러스터에 관한 세부정보를 보는 데 필요한 권한을 부여하려면 다음 단계를 따르세요.
Connect Agent가 Google Cloud 콘솔에서 클러스터 정보를 봐야 하는 사용자를 가장할 수 있는
ClusterRole리소스를 만듭니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ROLE_NAME rules: apiGroups: [""] resources: ["users"] verbs: ["impersonate"] resourceNames: ["ACCOUNT_NAME"]
다음을 바꿉니다.
ROLE_NAME: 대상 역할의 이름입니다.ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.
Connect Agent Service Agent 계정을 이전 단계에서 만든 역할에 바인딩하고 클러스터에 적용하는
ClusterRoleBinding리소스를 만듭니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: ServiceAccount name: ACCOUNT_NAME roleRef: kind: ClusterRole name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.ACCOUNT_NAME: 대상 서비스 사용자 계정의 이름입니다.ROLE_NAME: 대상 역할의 이름입니다.
영향을 받는 사용자마다 별도의 ClusterRole 및 ClusterRoleBinding 리소스 쌍을 만들어야 합니다.
kubectl 명령줄 도구를 사용하여 클러스터 정보를 보는 데 필요한 권한을 다음과 같이 부여할 수도 있습니다.
Connect Agent가 Google Cloud 콘솔에서 클러스터 정보를 봐야 하는 사용자를 가장할 수 있는
ClusterRole리소스를 만듭니다.kubectl create clusterrole "ROLE_NAME" --verb impersonate \ --resource users --resource-name "ACCOUNT_NAME"
다음을 바꿉니다.
ROLE_NAME: 대상 역할의 이름입니다.ACCOUNT_NAME: 대상 서비스 사용자 계정의 이름입니다.
Connect Agent Service Agent 계정을 이전 단계에서 만든 역할에 바인딩하고 클러스터에 적용하는
ClusterRoleBinding리소스를 만듭니다.kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \ "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
다음을 바꿉니다.
BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.ACCOUNT_NAME: 대상 서비스 사용자 계정의 이름입니다.ROLE_NAME: 대상 역할의 이름입니다.
연결 게이트웨이를 사용하여 Distributed Cloud 클러스터에 액세스
연결 게이트웨이를 사용하여 Distributed Cloud 클러스터에 액세스할 수 있습니다. 커넥트 게이트웨이 사용자는 비즈니스 요구사항에 따라 다음 역할 중 하나 이상이 필요합니다.
- Connect Gateway Admin (
roles/gkehub.gatewayAdmin): connect gateway API에 대한 액세스 권한을 부여합니다. 이렇게 하면 클러스터 관리에kubectl명령줄 도구를 사용할 수 있습니다. - 게이트웨이 게이트웨이 편집자 (
roles/gkehub.gatewayEditor): 클러스터에 대한 읽기 및 쓰기 액세스 권한을 부여합니다. - Connect Gateway 리더 (
roles/gkehub.gatewayReader): 클러스터에 대한 읽기 전용 액세스 권한을 부여합니다. - GKE 허브 뷰어 (
roles/gkehub.viewer): 클러스터에서kubeconfig파일을 가져올 수 있는 권한을 부여합니다.
Connect 게이트웨이 사용에 관한 자세한 내용은 다음을 참고하세요.