En este documento, se explican las Google Cloud cuentas de servicio y las claves que necesitas para crear clústeres en tu implementación de Google Distributed Cloud.
Las instrucciones que aparecen aquí están completas. Para obtener una introducción más corta sobre el uso de una cuenta de servicio, consulta Configura una infraestructura mínima.
Antes de comenzar
Descripción general de las cuentas de servicio
Antes de crear tus clústeres de administrador y de usuario, debes tener estas cuentas de servicio:
- Cuenta de servicio de acceso a componentes
- Cuenta de servicio del registro de Connect
- Cuenta de servicio de supervisión de registros
Según las funciones que desees habilitar, es posible que también debas tener algunas cuentas de servicio opcionales.
Información sobre las cuentas de servicio y los proyectos de Google Cloud
Cuando creas una cuenta de servicio, la asocias a un Google Cloud proyecto.
Este proyecto Google Cloud se llama proyecto superior de la cuenta de servicio. En este documento, todos los comandos gcloud iam service-accounts create
usan la variable de marcador de posición PROJECT_ID
, que es el ID del proyecto principal de la cuenta de servicio.
Puedes determinar el proyecto superior de una cuenta de servicio si observas la dirección de correo electrónico de la cuenta de servicio. Por ejemplo, esta es la dirección de correo electrónico de una cuenta de servicio llamada logger
. El proyecto superior es alice-123
.
logger@alice-123.iam.gserviceaccount.com
Cuando otorgas un rol de Identity and Access Management (IAM) a una cuenta de servicio, le otorgas el rol a la cuenta de servicio en un proyecto deGoogle Cloud en particular. Esto sigue el patrón general de otorgar un rol a un principal en un recurso.
Por ejemplo, puedes otorgar el rol bigquery.dataEditor
a la cuenta de servicio logger@alice-123.iam.gserviceaccount.com
en el proyecto bob-456
. En este caso, la cuenta de servicio es el principal y el proyecto Google Cloud es el recurso.
Puedes otorgar un rol a una cuenta de servicio en un proyecto Google Cloud que no sea el proyecto principal de la cuenta de servicio, o bien los proyectos pueden ser el mismo. Para permitir esta flexibilidad, en este documento, los comandos gcloud projects add-iam-policy-binding
para la cuenta de servicio de acceso a los componentes, la cuenta de servicio de registro de conexión y la cuenta de servicio de registro y supervisión usan la variable de marcador de posición FLEET_HOST_PROJECT_ID
. Este es el ID del proyecto host de la flota.
El ID que especifiques como FLEET_HOST_PROJECT_ID
en los comandos gcloud projects add-iam-policy-binding
debe ser el mismo.
Permisos para otorgar funciones a las cuentas de servicio
Cada una de tus cuentas de servicio debe tener ciertos roles en elGoogle Cloud proyecto pertinente. Por ejemplo, tu cuenta de servicio del registro de conexión debe tener la función gkehub.editor
en tu proyecto host de flota.
Para otorgar roles en un proyecto de Google Cloud , debes tener ciertos permisos en el proyecto. Para obtener más información, consulta roles/resourcemanager.projectIamAdmin
en Información sobre las funciones.
Si tienes los permisos necesarios, puedes otorgar las funciones tú mismo. De lo contrario, alguien de tu organización deberá otorgar las funciones por ti.
Usa gkeadm
para crear cuentas de servicio automáticamente
En esta página, se muestra cómo crear cuentas de servicio de forma manual y cómo otorgar funciones a cuentas de servicio. Como alternativa para realizar estos pasos de forma manual, puedes hacer que la herramienta de línea de comandos gkeadm
cree algunas de las cuentas de servicio y otorgue roles cuando crees una estación de trabajo de administrador. Incluso si permites que gkeadm
cree cuentas de servicio, debes crear manualmente la cuenta de servicio de acceso a componentes y otorgar los roles de IAM necesarios, como se describe en la siguiente sección. Para obtener más información sobre las cuentas de servicio que puede crear gkeadm
, consulta Crea tu estación de trabajo de administrador.
Cuenta de servicio de acceso a componentes
Google Distributed Cloud usa esta cuenta de servicio para descargar componentes del clúster en tu nombre, desde Artifact Registry.
Crea una cuenta de servicio de acceso a componentes:
gcloud iam service-accounts create component-access-sa \ --display-name "Component Access Service Account" \ --project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto Google Cloud que deseas que sea el proyecto principal de tu cuenta de servicio.Obtén la dirección de correo electrónico de la cuenta de servicio de acceso a los componentes recién creada:
gcloud iam service-accounts list \ --project PROJECT_ID
Crea una clave JSON para tu cuenta de servicio de acceso a los componentes:
gcloud iam service-accounts keys create component-access-key.json \ --iam-account COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL
Reemplaza
COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL
por la dirección de correo electrónico de tu cuenta de servicio de acceso a los componentes.
Otorga roles a tu cuenta de servicio de acceso a componentes
Tu cuenta de servicio de acceso a los componentes debe tener los siguientes roles de IAM en tu proyecto. Estos roles son obligatorios para que Google Distributed Cloud pueda realizar comprobaciones preliminares:
serviceusage.serviceUsageViewer
iam.roleViewer
iam.serviceAccountViewer
compute.viewer
Para otorgar las funciones, sigue estos pasos:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/serviceusage.serviceUsageViewer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.roleViewer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.serviceAccountViewer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/compute.viewer"
Reemplaza FLEET_HOST_PROJECT_ID
por el ID del proyecto host de tu flota. Puede ser el mismo proyecto en el que se creó la cuenta de servicio o uno diferente. El ID del proyecto que especifiques aquí debe ser el mismo que especifiques cuando otorgues roles de IAM a la cuenta de servicio de registro de conexión y a la cuenta de servicio de supervisión de registros.
Cuenta de servicio del registro de Connect
Google Distributed Cloud usa esta cuenta de servicio para registrar tus clústeres en una flota.
Crea una cuenta de servicio de registro de conexión:
gcloud iam service-accounts create connect-register-sa \ --display-name "Connect-register Service Account" \ --project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyectoGoogle Cloud que deseas que sea el superior de tu cuenta de servicio de registro de Connect.Obtén la dirección de correo electrónico de la cuenta de servicio de connect-register recién creada:
gcloud iam service-accounts list \ --project PROJECT_ID
Crea una clave JSON para tu cuenta de servicio de registro de Connect:
gcloud iam service-accounts keys create connect-register-key.json \ --iam-account CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL
Reemplaza
CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL
por la dirección de correo electrónico de tu cuenta de servicio de registro de Connect.Otorga la función
gkehub.editor
a la cuenta de servicio del registro de conexión:gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL" \ --role "roles/gkehub.editor"
El ID del proyecto que especifiques aquí debe ser el mismo que especifiques cuando otorgues roles de IAM a la cuenta de servicio de acceso a los componentes y a la cuenta de servicio de supervisión de registros.
Cuenta de servicio de supervisión de registros
Google Distributed Cloud usa esta cuenta de servicio para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring.
Crea una cuenta de servicio de supervisión de registros:
gcloud iam service-accounts create logging-monitoring-sa \ --display-name "Logging-monitoring Service Account" \ --project=PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyectoGoogle Cloud que deseas que sea el superior de tu cuenta de servicio de registro y supervisión.Obtén la dirección de correo electrónico de la cuenta de servicio de supervisión de registros recién creada:
gcloud iam service-accounts list \ --project PROJECT_ID
Crea una clave JSON para tu cuenta de servicio de supervisión de registros:
gcloud iam service-accounts keys create logging-monitoring-key.json \ --iam-account LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL
Reemplaza
LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL
por la dirección de correo electrónico de tu cuenta de servicio de registro y supervisión.
Otorga funciones a tu cuenta de servicio de supervisión y registro
A la cuenta de servicio de supervisión y registro se le deben otorgar los siguientes roles en tu proyecto:
opsconfigmonitoring.resourceMetadata.writer
logging.logWriter
monitoring.metricWriter
monitoring.dashboardEditor
kubernetesmetadata.publisher
Para otorgar las funciones necesarias a tu cuenta de servicio de registro y supervisión, sigue estos pasos:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/opsconfigmonitoring.resourceMetadata.writer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/logging.logWriter" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.dashboardEditor" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/kubernetesmetadata.publisher"
El ID del proyecto que especifiques aquí debe ser el mismo que especifiques cuando otorgues roles de IAM a la cuenta de servicio de acceso al componente y a la cuenta de servicio de connect-register.
Cuentas de servicio opcionales
Las cuentas de servicio que se describen en esta sección son opcionales.
Cuenta de servicio de registro de auditoría
Google Distributed Cloud usa esta cuenta de servicio para enviar registros de auditoría de Kubernetes desde tu clúster a los registros de auditoría de Cloud.
Si planeas crear clústeres con la función de clúster avanzado habilitada (que es necesaria para configurar dominios de topología), usa la cuenta de servicio y la clave de supervisión de registros para el registro de auditoría en lugar de crear otra cuenta de servicio.
Crea una cuenta de servicio de registro de auditoría:
gcloud iam service-accounts create audit-logging-sa \ --project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyectoGoogle Cloud que deseas que sea el superior de tu cuenta de servicio de registro de auditoría.Obtén la dirección de correo electrónico de la cuenta de servicio de registro de auditoría recién creada:
gcloud iam service-accounts list \ --project PROJECT_ID
Crea una clave JSON para tu cuenta de servicio de registro de auditoría:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
Reemplaza
AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
por la dirección de correo electrónico de tu cuenta de servicio de registro de auditoría.
No es necesario otorgar funciones a la cuenta de servicio de registro de auditoría.
Cuenta de servicio de Autorización binaria
Google Distributed Cloud usa esta cuenta de servicio para llamar a la API de Binary Authorization.
Para obtener información sobre cómo crear una cuenta de servicio de autorización binaria, consulta Autorización binaria en GKE On-Prem.
¿Qué sigue?
Crea una estación de trabajo de administrador