Kubernetes y gcloud: ¿cómo dejar de usar la cuenta de servicio?

Kubernetes y gcloud: ¿cómo dejar de usar la cuenta de servicio?

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.

información relacionada