En esta página, se explican las cuentas de servicio y las claves de Google Cloud que necesitas para instalar GKE On-Prem.
Descripción general de las cuentas de servicio
Antes de instalar GKE On-Prem, debes tener estas cuentas de servicio:
- Cuenta de servicio agregada a la lista de anunciantes permitidos
- Cuenta de servicio del registro de Connect
- Cuenta de servicio del agente 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 creas en un proyecto de Google Cloud. El proyecto de Google Cloud en el que creas una cuenta de servicio se denomina proyecto superior de la cuenta de servicio. La cuenta de servicio es un miembro de su proyecto superior.
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 una función de administración de identidades y accesos (IAM) a una cuenta de servicio, otorgas la función a la cuenta de servicio en un proyecto de Google Cloud en particular.Esto sigue el patrón general de otorgar una función a una identidad en un recurso.
Por ejemplo, puedes otorgar la función 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 la identidad, y el proyecto de Google Cloud es el recurso.
Es importante comprender que puedes otorgar una función a una cuenta de servicio en un proyecto que no sea el proyecto principal de la cuenta de servicio.
Cuenta de servicio agregada a la lista de anunciantes permitidos
Ya tienes una cuenta de servicio incluida en la lista de anunciantes permitidos.
Si aún no creaste un archivo de claves JSON para tu cuenta de servicio en la lista de anunciantes permitidos, crea uno ahora:
gcloud iam service-accounts keys create whitelisted-key.json \ --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]
En el ejemplo anterior, [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL] es la dirección de correo electrónico de la cuenta de servicio incluida en la lista de anunciantes permitidos.
Otorga funciones a tu cuenta de servicio incluida en la lista de anunciantes permitidos
El archivo de configuración de GKE On-Prem tiene varios campos que especifican el ID de un proyecto de Google Cloud.
usercluster: usagemetering: bigqueryprojectid: "" ... gkeconnect: projectid: "" ... stackdriver: projectid: "" ... cloudauditlogging: projectid: ""
Los ID de los proyectos en tu archivo de configuración de GKE On-Prem no tienen que ser distintos. Por ejemplo, gkeconnect.projectid
podría ser igual que stackdriver.projectid
. De hecho, todos los ID de los proyectos de tu archivo de configuración podrían ser los mismos.
Tu cuenta de servicio incluida en la lista de anunciantes permitidos debe tener las siguientes funciones de IAM en cada proyecto que se especifica en tu archivo de configuración de GKE On-Prem:
- serviceusage.serviceUsageViewer
- iam.serviceAccountCreator
- iam.roleViewer
Si usaste gkeadm
para crear tu estación de trabajo de administrador, gkeadm
configura los siguientes campos en tu archivo de configuración local de GKE como el ID del proyecto superior de tu cuenta de servicio incluida en la lista de anunciantes permitidos.
gkeconnect.projectid
stackdriver.projectid
Además, gkeadm
otorgó a tu cuenta de servicio incluida en la lista de anunciantes permitidos las funciones necesarias en el proyecto superior de esa cuenta.
Si no usaste gkeadm
para crear la estación de trabajo de administrador, debes otorgar las funciones tú mismo.
Para cada proyecto que se especifica en el archivo de configuración de GKE On-Prem, otorga a tu cuenta de servicio incluida en la lista de anunciantes permitidos las funciones necesarias:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/iam.roleViewer"
En el ejemplo anterior, [PROJECT_ID] es el ID de uno de los proyectos que especificaste en el archivo de configuración de GKE On-Prem.
Otras cuentas de servicio obligatorias
Recuerda que, además de la cuenta de servicio incluida en la lista de anunciantes permitidos, necesitas estas cuentas de servicio:
- Cuenta de servicio del registro de conexión
- Cuenta de servicio del agente de conexión
- Cuenta de servicio de supervisión de registros
Según cómo creaste la estación de trabajo de administrador, es posible que ya tengas estas cuentas de servicio.
Caso 1: gkeadm creó cuentas de servicio.
Si usaste gkeadm
para crear tu estación de trabajo de administrador y pasaste la marca --auto-create-service-accounts
, gkeadm
hizo lo siguiente:
Creó una cuenta de servicio del registro de conexión. Otorgó las funciones de IAM adecuadas a la cuenta de servicio del registro de conexión. Creó un archivo de claves JSON para la cuenta de servicio del registro de conexión. Copió el archivo de claves JSON en tu estación de trabajo de administrador.
Creó una cuenta de servicio del agente de conexión. Otorgó las funciones de IAM adecuadas a la cuenta de servicio del agente de conexión. Creó un archivo de claves JSON para la cuenta de servicio del agente de conexión. Copió el archivo de claves JSON en tu estación de trabajo de administrador.
Creó una cuenta de servicio de supervisión de registros. Otorgó las funciones de IAM adecuadas a la cuenta de servicio de supervisión de registros. Creó un archivo de claves JSON para la cuenta de servicio de supervisión de registros. Copió el archivo de claves JSON en tu estación de trabajo de administrador.
Cuando gkeadm
crea cuentas de servicio por ti, las crea en el proyecto de Google Cloud superior de la cuenta de servicio incluida en la lista de entidades permitidas.
Además, gkeadm
otorga funciones a las cuentas de servicio en ese mismo proyecto. Para obtener información sobre el uso de más de un proyecto de Google Cloud, consulta Usa varios proyectos de Google Cloud.
Caso 2: gkeadm no creó cuentas de servicio por ti.
Si no usaste gkeadm
con la marca --auto-create-service-accounts
para crear tu estación de trabajo de administrador, debes crear tus propias cuentas de servicio.
Además, para cada cuenta de servicio, debes crear un archivo de claves JSON y otorgar las funciones de IAM adecuadas.
Crea tus propias cuentas de servicio
Si ya tienes cuentas de servicio como se describe en el Caso 1, puedes omitir esta sección.
En esta sección, se muestra cómo crear las cuentas de servicio que necesitas para instalar y usar GKE On-Prem. También se muestra cómo crear archivos de claves JSON para tus cuentas de servicio y cómo otorgar las funciones de IAM adecuadas a esas cuentas.
Cuenta de servicio del registro de Connect
Connect usa esta cuenta de servicio para registrar tus clústeres de GKE On-Prem con Google Cloud.
Crea la cuenta de servicio del registro de conexión:
gcloud iam service-accounts create connect-register-svc-account --project [PARENT_PROJECT_ID]
En el ejemplo anterior, [PARENT_PROJECT_ID] es el ID del proyecto que deseas que sea el superior de tu cuenta de servicio del registro de conexión.
Crea una clave para la cuenta de servicio del registro de conexión:
gcloud iam service-accounts keys create connect-register-key.json \ --iam-account [CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL]
En el ejemplo anterior, [CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL] es la dirección de correo electrónico de tu cuenta de servicio del registro de conexión.
Otorga la función gkehub.admin
a la cuenta de servicio del registro de conexión:
gcloud projects add-iam-policy-binding [CONNECT_PROJECT_ID] \ --member "serviceAccount:[CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/gkehub.admin"
En el ejemplo anterior, [CONNECT_PROJECT_ID] es el ID de tu proyecto de conexión. Este es el proyecto en el que deseas registrar y mantener una conexión con tus clústeres de GKE On-Prem.
Cuenta de servicio del agente de Connect
Connect usa esta cuenta de servicio para mantener una conexión entre GKE On-Prem y Google Cloud.
Crea la cuenta de servicio del agente de conexión:
gcloud iam service-accounts create connect-agent-svc-account --project [PARENT_PROJECT_ID]
En el ejemplo anterior, [PARENT_PROJECT_ID] es el ID del proyecto que deseas que sea el superior de tu cuenta de servicio del agente de conexión.
Crea una clave para la cuenta de servicio del agente de conexión:
gcloud iam service-accounts keys create connect-agent-key.json \ --iam-account [CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL]
En el ejemplo anterior, [CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL] es la dirección de correo electrónico de tu cuenta de servicio del agente de conexión.
Otorga la función gkehub.connect
a la cuenta de servicio del agente de conexión:
gcloud projects add-iam-policy-binding [CONNECT_PROJECT_ID] \ --member "serviceAccount:[CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/gkehub.connect"
En el ejemplo anterior, [CONNECT_PROJECT_ID] es el ID de tu proyecto de conexión. Este es el proyecto en el que deseas registrar y mantener una conexión con tus clústeres de GKE On-Prem.
Cuenta de servicio de supervisión de registros
Connect usa esta cuenta de servicio para exportar registros desde los clústeres hacia Cloud Logging.
Crea la cuenta de servicio de supervisión de registros:
gcloud iam service-accounts create logging-monitoring-svc-account --project [PARENT_PROJECT_ID]
En el ejemplo anterior, [PARENT_PROJECT_ID] es el ID del proyecto que deseas que sea el superior de tu cuenta de servicio de supervisión de registros.
Crea una clave para la cuenta de servicio de supervisión de registros:
gcloud iam service-accounts keys create logging-monitoring-key.json \ --iam-account [LOG_MON_SERVICE_ACCOUNT_EMAIL]
En el ejemplo anterior, [LOG_MON_SERVICE_ACCOUNT_EMAIL] es la dirección de correo electrónico de tu cuenta de servicio de supervisión de registros.
Otorga las funciones stackdriver.resourceMetadata.writer
, logging.logWriter
y monitoring.metricWriter
a la cuenta de servicio de supervisión de registros:
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \ --member "serviceAccount:[LOG_MOM_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \ --member "serviceAccount:[LOG_MOM_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \ --member "serviceAccount:[LOG_MON_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/monitoring.metricWriter"
En el ejemplo anterior, [LOG_MON_PROJECT_ID] es el ID de tu proyecto de supervisión de registros. Este es el proyecto en el que deseas ver los registros de tus clústeres de GKE On-Prem.
Cuentas de servicio opcionales
Cuenta de servicio de medición de uso
La medición de uso de GKE usa esta cuenta de servicio para almacenar datos de uso en un conjunto de datos de BigQuery.
Si deseas habilitar la medición de uso de GKE para un clúster, debes tener una cuenta de servicio de medición de uso. La herramienta gkeadm
no crea esta cuenta de servicio, por lo que debes crearla tú mismo.
Crea la cuenta de servicio de medición de uso:
gcloud iam service-accounts create usage-metering-svc-account --project [PARENT_PROJECT_ID]
En el ejemplo anterior, [PARENT_PROJECT_ID] es el ID del proyecto que deseas que sea el superior de tu cuenta de servicio de medición de uso.
Crea una clave para la cuenta de servicio de medición de uso:
gcloud iam service-accounts keys create usage-metering-key.json \ --iam-account [USAGE_METERING_SERVICE_ACCOUNT_EMAIL]
En el ejemplo anterior, [USAGE_METERING_SERVICE_ACCOUNT_EMAIL] es la dirección de correo electrónico de tu cuenta de servicio de medición de uso.
Otorga la función bigquery.dataEditor
a la cuenta de servicio de medición de uso:
gcloud projects add-iam-policy-binding [USAGE_METERING_PROJECT_ID] \ --member "serviceAccount:[USAGE_METERING_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/bigquery.dataEditor"
En el ejemplo anterior, [USAGE_METERING_PROJECT_ID] es el ID de tu proyecto de medición de uso. Este es el proyecto en el que deseas ver los datos de uso de tu clúster de GKE On-Prem.
Cuenta de servicio de registro de auditoría
GKE On-Prem usa esta cuenta de servicio para enviar registros de auditoría de Kubernetes desde tu clúster hacia los registros de auditoría de Cloud.
Si deseas habilitar los registros de auditoría de Cloud para la instalación de GKE On-Prem, debes tener una cuenta de servicio de registro de auditoría. La herramienta gkeadm
no crea esta cuenta de servicio, por lo que debes crearla tú mismo.
Crea la cuenta de servicio de registro de auditoría:
gcloud iam service-accounts create audit-logging-svc-account --project [PARENT_PROJECT_ID]
En el ejemplo anterior, [PARENT_PROJECT_ID] es el ID del proyecto de Google Cloud que deseas que sea el superior de tu cuenta de servicio de registro de auditoría.
Crea una clave para la cuenta de servicio de registro de auditoría:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account [AUDIT_LOGGINGSERVICE_ACCOUNT_EMAIL]
En el ejemplo anterior, [AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL] es 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.