Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando
gcloud components updatepara obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
Roles obligatorios
Para obtener los permisos que necesitas para administrar las cuentas y los roles de servicio de IAM, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Administrador de seguridad (
roles/iam.securityAdmin) en el proyecto del clúster -
Configura las cuentas de servicio en un proyecto separado:
Administrador de seguridad (
roles/iam.securityAdmin) en el proyecto de la cuenta de servicio
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Otorga el rol mínimo requerido para GKE
GKE usa cuentas de servicio de IAM adjuntas a tus nodos para ejecutar tareas del sistema, como el registro y la supervisión. Como mínimo, estas cuentas de servicio de nodo deben tener el rol de cuenta de servicio de nodo predeterminado 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 la cuenta de servicio del nodo.
Si tu organización aplica la restricción de la política de la organización iam.automaticIamGrantsForDefaultServiceAccounts, es posible que la cuenta de servicio predeterminada de Compute Engine en tu proyecto no obtenga automáticamente los permisos requeridos para GKE.
En las siguientes secciones, se muestra cómo otorgar el rol roles/container.defaultNodeServiceAccount a la cuenta de servicio predeterminada de Compute Engine o a una nueva cuenta de servicio personalizada que crees.
Configura la cuenta de servicio predeterminada de Compute Engine
Para otorgar el rol roles/container.defaultNodeServiceAccount a la cuenta de servicio predeterminada de Compute Engine, completa los siguientes pasos:
Console
- Ve a la página Bienvenida:
- En el campo Número del proyecto, haz clic en Copiar en el portapapeles.
- Ve a la página IAM:
- Haz clic en Otorgar acceso.
- En el campo Principales nuevas, especifica el siguiente valor:
ReemplazaPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERpor el número de proyecto que copiaste. - En el menú Selecciona un rol, selecciona el rol de Cuenta de servicio de nodo predeterminado de Kubernetes Engine.
- Haz clic en Guardar.
gcloud
- Busca el Google Cloud número de tu proyecto:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Reemplaza
PROJECT_IDcon el ID del proyecto.El resultado es similar a lo siguiente:
12345678901
- Otorga 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"
Reemplaza
PROJECT_NUMBERpor el número de proyecto del paso anterior.
Configura una cuenta de servicio de nodo personalizada
Para crear una cuenta de servicio personalizada y otorgarle el rol requerido para GKE, completa los siguientes pasos:
Console
- Ve a la página Cuentas de servicio:
- Haz clic en Crear cuenta de servicio.
- Ingresa 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 según el nombre.
- Haz clic en Crear y continuar.
- En el menú Selecciona un rol, selecciona el rol Cuenta de servicio de nodo predeterminado de Kubernetes Engine.
- Haz clic en Listo.
gcloud
- Crea la cuenta de servicio:
gcloud iam service-accounts create SA_NAME
Reemplaza
SA_NAMEpor un nombre único que identifique la cuenta de servicio. - Otorga el rol de cuenta de servicio de nodo predeterminado 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
Reemplaza lo siguiente:
PROJECT_ID: El ID de tu proyecto Google Cloud .SA_NAME: Es el nombre de la cuenta de servicio que creaste.
Terraform
Crea una cuenta de servicio de IAM y otórgale el rol de roles/container.defaultNodeServiceAccount en el proyecto:
Config Connector
Nota: En este paso, se necesita Config Connector. Sigue las instrucciones de instalación para instalar Config Connector en el clúster.
- Para crear la cuenta de servicio, descarga el siguiente recurso como
service-account.yaml:Reemplaza lo siguiente:
[SA_NAME]: Es el nombre de la cuenta de servicio nueva.[DISPLAY_NAME]: Es 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 como
policy-logging.yaml.Reemplaza lo siguiente:
[SA_NAME]: Es el nombre de la cuenta de servicio.[PROJECT_ID]: El ID de tu proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-logging.yaml
- Descarga el siguiente recurso como
- Aplica el rol
roles/monitoring.metricWritera la cuenta de servicio:- Descarga el siguiente recurso como
policy-metrics-writer.yaml. Reemplaza[SA_NAME]y[PROJECT_ID]por tu propia información.Reemplaza lo siguiente:
[SA_NAME]: Es el nombre de la cuenta de servicio.[PROJECT_ID]: El ID de tu proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-metrics-writer.yaml
- Descarga el siguiente recurso como
- Aplica el rol
roles/monitoring.viewera la cuenta de servicio:- Descarga el siguiente recurso como
policy-monitoring.yaml.Reemplaza lo siguiente:
[SA_NAME]: Es el nombre de la cuenta de servicio.[PROJECT_ID]: El ID de tu proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-monitoring.yaml
- Descarga el siguiente recurso como
- Aplica el rol
roles/autoscaling.metricsWritera la cuenta de servicio:- Descarga el siguiente recurso como
policy-autoscaling-metrics-writer.yaml.Reemplaza lo siguiente:
[SA_NAME]: Es el nombre de la cuenta de servicio.[PROJECT_ID]: El ID de tu proyecto Google Cloud .
- Aplica el rol a la cuenta de servicio:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Descarga el siguiente recurso como
También puedes usar esta cuenta de servicio para los recursos de otros proyectos. Para obtener instrucciones, consulta Habilita la suplantación de identidad de cuentas de servicio en todos los proyectos.
Permite que las principales adjunten cuentas de servicio personalizadas
Puedes adjuntar una cuenta de servicio personalizada cuando creas un clúster o un grupo de nodos. Para permitir que una principal (como un administrador de la plataforma) use una cuenta de servicio personalizada para crear recursos de GKE, otorga el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio personalizada a esa principal. Para otorgar este rol, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página Cuentas de servicio:
En el selector de recursos, elige el proyecto que contiene tu cuenta de servicio personalizada.
Selecciona la casilla de verificación de la cuenta de servicio personalizada que creaste para usar con los nodos de GKE.
Haz clic en Administrar acceso. Se abrirá el panel Administrar acceso.
Haz clic en Agregar principal. Se abrirá el panel Otorgar acceso.
En el campo Principales nuevas, especifica la 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. Se cerrará el panel Otorgar acceso.
Cierra el panel Administrar acceso.
gcloud
Otorga la función 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
Reemplaza lo siguiente:
SA_NAME: Es el nombre de la cuenta de servicio personalizada.SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene la cuenta de servicio personalizada.PRINCIPAL: El identificador principal, comouser:baklavainthebalkans@example.com.
Config Connector
Nota: En este paso, se necesita Config Connector. Sigue las instrucciones de instalación para instalar Config Connector en el clúster.
Aplica la función iam.serviceAccountUser a tu cuenta de servicio. Descarga el siguiente recurso como policy-service-account-user.yaml. Reemplaza [SA_NAME] y [PROJECT_ID] por tu propia información.
kubectl apply -f policy-service-account-user.yaml
Después de otorgar el rol en la cuenta de servicio, esas entidades principales pueden usar esa cuenta de servicio para crear clústeres y grupos de nodos. Para obtener más información, consulta los siguientes documentos:
- Crea un clúster de Autopilot
- Crea un clúster regional
- Agrega un grupo de nodos a un clúster de Standard
Configura el uso de cuentas de servicio en todos los proyectos
Si la cuenta de servicio del nodo no está en el mismo proyecto que el 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 Cuentas de servicio de nodos y agentes de servicio del proyecto.
Para otorgar los roles requeridos en las cuentas de servicio de nodos que no se encuentran en el proyecto de tu clúster, sigue estos pasos:
- Para habilitar la conexión de cuentas de servicio entre proyectos, actualiza las políticas de tu organización.
Para otorgar los roles necesarios en la cuenta de servicio personalizada a los agentes de servicio en el proyecto de tu clúster, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página Cuentas de servicio.
Selecciona la casilla de verificación de la cuenta de servicio personalizada que creaste para usar con los nodos de GKE.
Haz clic en Administrar acceso. Se abrirá el panel Administrar acceso.
Otorga el rol de creador de tokens de la cuenta de servicio al agente de servicio de Compute Engine en el proyecto de tu clúster:
- En el panel Administrar acceso, haz clic en Agregar principal. Se abrirá el panel Otorgar acceso.
En el campo Principales nuevos, especifica la dirección de correo electrónico del agente de servicio de Compute Engine en tu proyecto de clúster:
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comReemplaza
CLUSTER_PROJECT_NUMBERpor el número de proyecto de tu proyecto de clúster.En el menú Seleccionar un rol, selecciona el rol Creador de tokens de cuenta de servicio.
Haz clic en Guardar. Se cerrará el panel Otorgar acceso.
Otorga la función de usuario de la cuenta de servicio al agente de servicio de GKE en tu proyecto de clúster:
- En el panel Administrar acceso, haz clic en Agregar principal. Se abrirá el panel Otorgar acceso.
En el campo Principales nuevos, especifica la dirección de correo electrónico del agente de servicio de GKE en tu proyecto de clúster:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comEn el menú Selecciona un rol, selecciona el rol Usuario de cuenta de servicio.
Haz clic en Guardar. Se cerrará el panel Otorgar acceso.
Cierra el panel Administrar acceso.
gcloud
Obtén el número de proyecto de tu proyecto de clúster:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Reemplaza
CLUSTER_PROJECT_IDpor el ID del proyecto del clúster.El resultado es similar a
123456789.Otorga el rol
roles/iam.serviceAccountTokenCreatoren la cuenta de servicio personalizada al agente de servicio de Compute Engine en tu proyecto de 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.serviceAccountTokenCreatorReemplaza lo siguiente:
SA_NAME: Es el nombre de la cuenta de servicio personalizada.SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene tu cuenta de servicio personalizada.CLUSTER_PROJECT_NUMBER: Es el número del proyecto del clúster.
Otorga el rol
roles/iam.serviceAccountUseren la cuenta de servicio personalizada al agente de servicio de GKE en tu proyecto de 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
Permite la extracción de imágenes de repositorios privados
Si tienes imágenes en repositorios privados de Artifact Registry, debes otorgar acceso a esos repositorios a la cuenta de servicio del nodo. Incluso si usas la cuenta de servicio predeterminada de Compute Engine, es posible que debas otorgarle acceso a tu repositorio si este se encuentra en otro proyecto.
Para extraer imágenes privadas de Artifact Registry, otorga el rol de lector de Artifact Registry (roles/artifactregistry.reader) en el repositorio a tu cuenta de servicio de nodo.
Console
En la consola de Google Cloud , ve a la página Repositorios.
Selecciona la casilla de verificación 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 Agregar principal. Se abrirá el panel Otorgar acceso.
En el campo Principales nuevas, especifica la dirección de correo electrónico de la cuenta de servicio de tu nodo.
Haz clic en Seleccionar un rol para abrir el diálogo de selección de roles.
Selecciona el rol Lector de Artifact Registry.
Haz clic en Guardar.
gcloud
Otorga 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
Reemplaza lo siguiente:
REPOSITORY_NAME: Es el nombre del repositorio de Artifact Registry.SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de tu cuenta de servicio de nodos.REPOSITORY_PROJECT_ID: Es el ID del proyecto que contiene tu repositorio.
Config Connector
Nota: En este paso, se necesita Config Connector. Sigue las instrucciones de instalación para instalar Config Connector en el clúster.
Guarda el siguiente manifiesto como
policy-artifact-registry-reader.yaml:Reemplaza lo siguiente:
- SA_NAME: El nombre de tu cuenta de servicio de IAM.
- PROJECT_ID: El ID de tu proyecto Google Cloud .
- REPOSITORY_NAME: Es el nombre de tu repositorio de Artifact Registry.
Otorga el rol de lector de Artifact Registry a la cuenta de servicio:
kubectl apply -f policy-artifact-registry-reader.yaml
¿Qué sigue?
- Crea un clúster de Autopilot
- Crea un clúster regional
- Agrega un grupo de nodos a un clúster de Standard