Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la CLI de gcloud, obtén la versión más reciente ejecutando el comando
gcloud components update. Es posible que las versiones anteriores de la interfaz de línea de comandos de gcloud no admitan la ejecución de los comandos de este documento.
Roles obligatorios
Para obtener los permisos que necesitas para gestionar cuentas de servicio y roles de gestión de identidades y accesos, pide a tu administrador que te asigne los siguientes roles de gestión de identidades y accesos:
-
Administrador de seguridad (
roles/iam.securityAdmin) en el proyecto del clúster -
Configura las cuentas de servicio en un proyecto independiente:
Administrador de seguridad (
roles/iam.securityAdmin) en el proyecto de la cuenta de servicio
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Concede el rol mínimo necesario para GKE
GKE usa cuentas de servicio de gestión de identidades y accesos que están asociadas a tus nodos para ejecutar tareas del sistema, como el registro y la monitorización. Como mínimo, estas cuentas de servicio de nodo deben tener el rol Cuenta de servicio de nodo predeterminada de Kubernetes Engine (roles/container.defaultNodeServiceAccount) en tu proyecto. De forma predeterminada, GKE usa la cuenta de servicio predeterminada de Compute Engine, que se crea automáticamente en tu proyecto, como cuenta de servicio del nodo.
Si tu organización aplica la
restricción de política de organización iam.automaticIamGrantsForDefaultServiceAccounts, es posible que la cuenta de servicio predeterminada de Compute Engine de tu proyecto no obtenga automáticamente los permisos necesarios para GKE.
En las siguientes secciones se explica cómo asignar el rol roles/container.defaultNodeServiceAccount a la cuenta de servicio predeterminada de Compute Engine o a una cuenta de servicio personalizada que crees.
Configurar la cuenta de servicio predeterminada de Compute Engine
Para asignar el rol roles/container.defaultNodeServiceAccount a la cuenta de servicio predeterminada de Compute Engine, sigue estos pasos:
Consola
- Ve a la página Bienvenida:
- En el campo Número de proyecto, haga clic en Copiar en el portapapeles.
- Ve a la página Gestión de identidades y accesos:
- Haz clic en Conceder acceso.
- En el campo Nuevos principales, especifique el siguiente valor:
SustituyePROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERpor el número de proyecto que has copiado. - En el menú Seleccionar un rol, elige el rol Cuenta de servicio de nodo predeterminada de Kubernetes Engine.
- Haz clic en Guardar.
gcloud
- Busca el Google Cloud número de proyecto:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Sustituye
PROJECT_IDpor el ID del proyecto.El resultado debería ser similar al siguiente:
12345678901
- Asigna el rol
roles/container.defaultNodeServiceAccounta la cuenta de servicio predeterminada de Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Sustituye
PROJECT_NUMBERpor el número de proyecto del paso anterior.
Configurar una cuenta de servicio de nodo personalizada
Para crear una cuenta de servicio personalizada y asignarle el rol necesario para GKE, sigue estos pasos:
Consola
- Ve a la página Cuentas de servicio:
- Haz clic en Crear cuenta de servicio.
- Escribe un nombre para la cuenta de servicio. El campo ID de cuenta de servicio genera automáticamente un ID único para la cuenta de servicio en función del nombre.
- Haz clic en Crear y continuar.
- En el menú Seleccionar un rol, elige el rol Cuenta de servicio de nodo predeterminada de Kubernetes Engine.
- Haz clic en Listo.
gcloud
- Crea la cuenta de servicio:
gcloud iam service-accounts create SA_NAME
Sustituye
SA_NAMEpor un nombre único que identifique la cuenta de servicio. - Asigna el rol
Cuenta de servicio de nodo predeterminada de Kubernetes Engine
(
roles/container.defaultNodeServiceAccount) a la cuenta de servicio:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/container.defaultNodeServiceAccount
Haz los cambios siguientes:
PROJECT_ID: tu ID de proyecto Google Cloud .SA_NAME: el nombre de la cuenta de servicio que has creado.
Terraform
Crea una cuenta de servicio de IAM y concédele el rol roles/container.defaultNodeServiceAccount en el proyecto:
Config Connector
Nota: Este paso requiere Config Connector. Sigue las instrucciones de instalación para instalar Config Connector en tu clúster.
- Para crear la cuenta de servicio, descarga el siguiente recurso como
service-account.yaml:Haz los cambios siguientes:
[SA_NAME]: el nombre de la nueva cuenta de servicio.[DISPLAY_NAME]: un nombre visible para la cuenta de servicio.
- Crea la cuenta de servicio:
kubectl apply -f service-account.yaml
- Aplica el rol
roles/logging.logWritera la cuenta de servicio:- Descarga el siguiente recurso en formato
policy-logging.yaml.Haz los cambios siguientes:
[SA_NAME]: el nombre de la cuenta de servicio.[PROJECT_ID]: tu ID de proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-logging.yaml
- Descarga el siguiente recurso en formato
- Aplica el rol
roles/monitoring.metricWritera la cuenta de servicio:- Descarga el siguiente recurso en formato
policy-metrics-writer.yaml. Sustituye[SA_NAME]y[PROJECT_ID]por tu información.Haz los cambios siguientes:
[SA_NAME]: el nombre de la cuenta de servicio.[PROJECT_ID]: tu ID de proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-metrics-writer.yaml
- Descarga el siguiente recurso en formato
- Aplica el rol
roles/monitoring.viewera la cuenta de servicio:- Descarga el siguiente recurso en formato
policy-monitoring.yaml.Haz los cambios siguientes:
[SA_NAME]: el nombre de la cuenta de servicio.[PROJECT_ID]: tu ID de proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-monitoring.yaml
- Descarga el siguiente recurso en formato
- Aplica el rol
roles/autoscaling.metricsWritera la cuenta de servicio:- Descarga el siguiente recurso en formato
policy-autoscaling-metrics-writer.yaml.Haz los cambios siguientes:
[SA_NAME]: el nombre de la cuenta de servicio.[PROJECT_ID]: tu ID de proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Descarga el siguiente recurso en formato
También puedes usar esta cuenta de servicio para recursos de otros proyectos. Para ver instrucciones al respecto, consulte el artículo sobre cómo habilitar la suplantación de identidad en cuentas de servicio en varios proyectos.
Permitir que los principales adjunten cuentas de servicio personalizadas
Puedes adjuntar una cuenta de servicio personalizada al crear un clúster o un pool de nodos. Para permitir que un principal (como un administrador de la plataforma) use una cuenta de servicio personalizada para crear recursos de GKE, asigna el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser) a ese principal en la cuenta de servicio personalizada. Para conceder este rol, selecciona una de las siguientes opciones:
Consola
En la Google Cloud consola, ve a la página Cuentas de servicio:
En el selector de recursos, elige el proyecto que contiene tu cuenta de servicio personalizada.
Marca la casilla de la cuenta de servicio personalizada que has creado para usarla con los nodos de GKE.
Haz clic en Gestionar acceso. Se abrirá el panel Gestionar acceso.
Haz clic en Añadir principal. Se abrirá el panel Dar acceso.
En el campo Nuevos principales, especifica el principal, como un grupo de administradores.
En el menú desplegable Seleccionar un rol, selecciona el rol Usuario de cuenta de servicio.
Haz clic en Guardar. El panel Dar acceso se cierra.
Cierra el panel Gestionar acceso.
gcloud
Asigna el rol roles/iam.serviceAccountUser:
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
--member=PRINCIPAL \
--role=roles/iam.serviceAccountUser
Haz los cambios siguientes:
SA_NAME: el nombre de la cuenta de servicio personalizada.SERVICE_ACCOUNT_PROJECT_ID: el ID del proyecto que contiene la cuenta de servicio personalizada.PRINCIPAL: el identificador principal, comouser:baklavainthebalkans@example.com.
Config Connector
Nota: Este paso requiere Config Connector. Sigue las instrucciones de instalación para instalar Config Connector en tu clúster.
Aplica el rol iam.serviceAccountUser a tu cuenta de servicio. Descarga el siguiente recurso en formato policy-service-account-user.yaml. Sustituye [SA_NAME] y [PROJECT_ID] por tu propia información.
kubectl apply -f policy-service-account-user.yaml
Una vez que hayas concedido el rol en la cuenta de servicio, esos principales podrán usarla para crear clústeres y grupos de nodos. Para obtener más información, consulta los siguientes documentos:
- Crear un clúster de Autopilot
- Crear un clúster regional
- Añadir un grupo de nodos a un clúster estándar
Configurar el uso de cuentas de servicio en varios proyectos
Si la cuenta de servicio de tu nodo no está en el mismo proyecto que tu clúster, los agentes de servicio del proyecto del clúster necesitan permisos adicionales en la cuenta de servicio. Para obtener más información, consulta el artículo sobre cuentas de servicio de nodos y agentes de servicio de proyectos.
Para conceder los roles necesarios en las cuentas de servicio de los nodos que no estén en tu proyecto de clúster, sigue estos pasos:
- Para habilitar la vinculación de cuentas de servicio entre proyectos, actualiza tus políticas de organización.
Para conceder los roles necesarios en la cuenta de servicio personalizada a los agentes de servicio de tu proyecto de clúster, selecciona una de las siguientes opciones:
Consola
En la Google Cloud consola, ve a la página Cuentas de servicio.
Marca la casilla de la cuenta de servicio personalizada que has creado para usarla con los nodos de GKE.
Haz clic en Gestionar acceso. Se abrirá el panel Gestionar acceso.
Asigna el rol Creador de tokens de cuenta de servicio al agente de servicio de Compute Engine en el proyecto de tu clúster:
- En el panel Gestionar acceso, haz clic en Añadir principal. Se abrirá el panel Dar acceso.
En el campo Nuevos principales, especifica la dirección de correo del agente de servicio de Compute Engine en el proyecto de tu clúster:
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comSustituye
CLUSTER_PROJECT_NUMBERpor el número de proyecto de tu clúster.En el menú Seleccionar un rol, elige el rol Creador de tokens de cuenta de servicio.
Haz clic en Guardar. El panel Dar acceso se cierra.
Asigna el rol Usuario de cuenta de servicio al agente de servicio de GKE en el proyecto de tu clúster:
- En el panel Gestionar acceso, haz clic en Añadir principal. Se abrirá el panel Dar acceso.
En el campo Principales nuevas, especifica la dirección de correo del agente de servicio de GKE en el proyecto de tu clúster:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comEn el menú Seleccionar un rol, elige el rol Usuario de cuenta de servicio.
Haz clic en Guardar. El panel Dar acceso se cierra.
Cierra el panel Gestionar acceso.
gcloud
Obtén el número de proyecto de tu proyecto de clúster:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Sustituye
CLUSTER_PROJECT_IDpor el ID del proyecto de tu clúster.La salida es similar a
123456789.Asigna el rol
roles/iam.serviceAccountTokenCreatora la cuenta de servicio personalizada del agente de servicio de Compute Engine en el proyecto de tu clúster:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorHaz los cambios siguientes:
SA_NAME: el nombre de la cuenta de servicio personalizada.SERVICE_ACCOUNT_PROJECT_ID: el ID del proyecto que contiene tu cuenta de servicio personalizada.CLUSTER_PROJECT_NUMBER: el número de proyecto de tu proyecto de clúster.
Asigna el rol
roles/iam.serviceAccountUsera la cuenta de servicio personalizada al agente de servicio de GKE en el proyecto de tu clúster:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Permitir la extracción de imágenes de repositorios privados
Si tienes imágenes en repositorios privados de Artifact Registry, debes dar acceso a esos repositorios a la cuenta de servicio de tu nodo. Aunque uses la cuenta de servicio predeterminada de Compute Engine, es posible que tengas que darle acceso a tu repositorio si este se encuentra en otro proyecto.
Para extraer imágenes privadas de Artifact Registry, asigna el
rol Lector de Artifact Registry
(roles/artifactregistry.reader) en el repositorio a la cuenta de servicio de tu nodo.
Consola
En la Google Cloud consola, ve a la página Repositorios.
Selecciona la casilla de tu repositorio.
Haz clic en Mostrar panel de información. Se abrirá el panel de información del repositorio.
En la pestaña Permisos, haz clic en Añadir principal. Se abrirá el panel Dar acceso.
En el campo Nuevos principales, especifica la dirección de correo de la cuenta de servicio de tu nodo.
Haz clic en Selecciona un rol para abrir el cuadro de diálogo de selección de rol.
Selecciona el rol Lector de Artifact Registry.
Haz clic en Guardar.
gcloud
Asigna el rol roles/artifactregistry.reader en el repositorio:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_EMAIL \
--project=REPOSITORY_PROJECT_ID \
--role=roles/artifactregistry.reader
Haz los cambios siguientes:
REPOSITORY_NAME: nombre del repositorio de Artifact Registry.SERVICE_ACCOUNT_EMAIL: la dirección de correo de tu cuenta de servicio de nodo.REPOSITORY_PROJECT_ID: el ID del proyecto que contiene tu repositorio.
Config Connector
Nota: Este paso requiere Config Connector. Sigue las instrucciones de instalación para instalar Config Connector en tu clúster.
Guarda el siguiente archivo de manifiesto como
policy-artifact-registry-reader.yaml:Haz los cambios siguientes:
- SA_NAME: el nombre de tu cuenta de servicio de gestión de identidades y accesos.
- PROJECT_ID: tu ID de proyecto Google Cloud .
- REPOSITORY_NAME: el nombre de tu repositorio de Artifact Registry.
Asigna el rol Lector de Artifact Registry a la cuenta de servicio:
kubectl apply -f policy-artifact-registry-reader.yaml
Siguientes pasos
- Crear un clúster de Autopilot
- Crear un clúster regional
- Añadir un grupo de nodos a un clúster estándar