Google Kubernetes Engine (GKE)에 배포하면 기본 Google Cloud Deploy 실행 서비스 계정이 대상 클러스터의 모든 네임스페이스에 액세스할 수 있습니다. 서비스 계정을 1개의 네임스페이스에만 배포하도록 구성할 수 있습니다.
실행 서비스 계정에
roles/container.developer
IAM 역할이 없는지 확인합니다.서비스 계정에
roles/container.clusterViewer
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"
이 역할은 서비스 계정이 클러스터에서 인증하도록 허용하지만 그 외에는 다른 작업을 하지 않습니다.
네임스페이스에 관리자 액세스 권한을 부여하는 Kubernetes RBAC 역할을 만듭니다.
이 예시에서 RBAC 역할에는
clouddeploy.developer
IAM 역할과 동일한 광범위한 권한이 있습니다. 권한 에스컬레이션의 위험을 최소화하려면 이러한 권한을 애플리케이션에 필요한 최소 수준으로 변경하는 것이 좋습니다. 자세한 내용은 GKE RBAC 문서를 참조하세요.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]
선택한 네임스페이스의 RBAC 역할을 Google Cloud Deploy 실행 서비스 계정에 결합하는
RoleBinding
를 만듭니다.kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE subjects: # Google Cloud user account - kind: User name: SERVICE_ACCOUNT roleRef: kind: Role name: admin apiGroup: rbac.authorization.k8s.io
이 매니페스트는
admin
역할을 실행 서비스 계정에 바인딩하는 RBAC 정책을 정의합니다.NAMESPACE
는 서비스 계정에 액세스 권한을 부여할 네임스페이스입니다. 서비스 계정은 클러스터의 다른 네임스페이스에 액세스할 수 없습니다.클러스터에 RBAC 매니페스트를 적용합니다.
kubectl apply -f YAML_NAME