Cuentas de servicio y claves

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.