当您部署到 Google Kubernetes Engine (GKE) 时,默认的 Cloud Deploy 执行服务账号可以访问目标集群中的所有命名空间。您可以将该服务账号配置为仅部署到一个命名空间。
了解有关设置 RBAC 政策的更多说明。确保执行服务账号没有
roles/container.developerIAM 角色。向服务账号授予
roles/container.clusterViewer角色。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"此角色允许服务账号在集群上进行身份验证,但不能执行其他操作。
创建 Kubernetes RBAC 角色,以授予对命名空间的管理员访问权限。
此示例中的 RBAC 角色具有广泛的权限,相当于
clouddeploy.developerIAM 角色。为最大限度地降低权限升级的风险,我们建议您将这些权限更改为应用所需的最低权限。如需查看相关说明,请参阅 GKE 的 RBAC 文档。kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]创建
RoleBinding,将所选命名空间中的 RBAC 角色绑定到 Cloud Deploy 执行服务账号: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此清单定义了一个 RBAC 政策,用于将
admin角色绑定到您的执行服务账号。NAMESPACE是您要向服务账号授予访问权限的命名空间。该服务账号无法访问集群上的任何其他命名空间。将 RBAC 清单应用于集群:
kubectl apply -f YAML_NAME