Cuando realizas la implementación en Google Kubernetes Engine (GKE), la cuenta de servicio de ejecución predeterminada de Cloud Deploy tiene acceso a todos los espacios de nombres del clúster de destino. Puedes configurar esa cuenta de servicio para que se implemente en un solo espacio de nombres.
Asegúrate de que la cuenta de servicio de ejecución no tenga el rol de IAM
roles/container.developer.Otorga a la cuenta de servicio el rol
roles/container.clusterViewer.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"Este rol permite que la cuenta de servicio se autentique en el clúster, pero no que realice ninguna otra acción.
Crea un rol de RBAC de Kubernetes que otorgue acceso de administrador al espacio de nombres.
El rol de RBAC de este ejemplo tiene permisos amplios, equivalentes al rol de IAM
clouddeploy.developer. Para minimizar el riesgo de elevación de privilegios, te recomendamos que cambies estos permisos al mínimo requerido para tus aplicaciones. Para obtener instrucciones, consulta la documentación de RBAC para GKE.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]Crea un
RoleBindingque vincule ese rol de RBAC en el espacio de nombres que elegiste a la cuenta de servicio de ejecución de 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.ioEste manifiesto define una vinculación de política de RBAC que vincula el rol
admina tu cuenta de servicio de ejecución.NAMESPACEes el espacio de nombres para el que deseas otorgar acceso a la cuenta de servicio. La cuenta de servicio no puede acceder a ningún otro espacio de nombres del clúster.Aplica el manifiesto de RBAC al clúster:
kubectl apply -f YAML_NAME