Trabajo con varios servicios de Google Cloud. Algunos de los depósitos de Cloud Storage donde trabajo están en el proyecto A, al que se puede acceder desde mi propia cuenta, y algunos están en el proyecto B, al que solo puedo acceder con una cuenta de servicio. Activé la cuenta de servicio apropiada con
gcloud auth activate-service-account --key-file mykey.json
Durante los inicios de sesión posteriores solo usé
gcloud config set account service_account
También necesitaba cambiar mi proyecto activo, para lo cual usé el comando
gcloud config set project project-B
La cuenta de servicio funcionó perfectamente bien, permitiéndome acceder a un bitbucket particular almacenado en Google Cloud Storage, pero luego necesité usar Argo para enviar un flujo de trabajo de Kubernetes, así que volví a mi cuenta y proyecto con los comandos.
gcloud config set account my_account
gcloud config set project project-A
Al usar la "lista de autenticación de gcloud", puedo ver que my_account está activa
ACTIVE ACCOUNT
service_account.iam.gserviceaccount.com
* my_account
Pero recibí el siguiente error cuando intenté enviar y ejecutar "kubectl -n default get services":
Error from server (Forbidden): services is forbidden: User "service_account.iam.gserviceaccount.com" cannot list resource "services" in API group "" in the namespace "default": Required "container.services.list" permission.
Recibo el mismo error cuando uso my_namespace en lugar del predeterminado. Esto me confunde bastante porque los comandos de gcloud como "gsutil ls" funcionan como si estuviera en la cuenta y el proyecto correctos. ¿Por qué Kubernetes sigue pensando que estoy usando una cuenta de servicio y cómo puedo hacer para que deje de usarla para poder hacer lo que necesito con Kubernetes nuevamente? Los comandos y canalizaciones que intento ejecutar funcionaron perfectamente bien antes de activar la cuenta de servicio.
Respuesta1
Resulta que solo necesitaba correr
gcloud container clusters get-credentials mycluster
Inicialmente, pensé que también necesitaría solucionar este problema eliminando mi archivo kubeconfig y
~/.kube/config
luego ejecutando el comando get-credentials, pero como se señaló en los comentarios, resulta que el comando get-credentials era todo lo que era necesario.
El problema parece surgir específicamente al ejecutar comandos argo mientras la cuenta de servicio de gcloud está activa: el comando fallaría primero, luego todos los comandos kubectl posteriores devolverían este error de permisos. Si cambiara a la cuenta de servicio, ejecutara los comandos de gcloud y luego volviera a mi cuenta, no afectaría el comportamiento de kubectl.