Configurar recursos de Google Cloud

En esta página se describen los Google Cloud recursos que debes crear y configurar antes de crear clústeres.

Antes de empezar

  1. Crea un proyecto Google Cloud y una cuenta de facturación.

  2. Si no eres el propietario del proyecto, pide a uno que te conceda los siguientes roles de Gestión de Identidades y Accesos (IAM): Google Cloud

    Rol Finalidad
    roles/compute.viewer Obligatorio: se necesita cuando bmctl valida el campo clusterOperations.location en el archivo de configuración del clúster.
    roles/iam.serviceAccountAdmin Obligatorio: se necesita para crear las cuentas de servicio que requiere Google Distributed Cloud.
    roles/iam.securityAdmin Obligatorio: se necesita para conceder roles de gestión de identidades y accesos a las cuentas de servicio que requiere Google Distributed Cloud.
    roles/iam.serviceAccountKeyAdmin Obligatorio: se necesita para crear archivos de claves JSON para las cuentas de servicio que requiere Google Distributed Cloud.
    roles/serviceusage.serviceUsageAdmin Obligatorio: se necesita para habilitar las APIs de Google que requiere Google Distributed Cloud.
    roles/gkeonprem.admin Opcional: necesario si quieres crear clústeres con clientes de la API de GKE On-Prem o configurar un clúster para que lo gestione la API de GKE On-Prem.
    roles/gkehub.viewer
    roles/container.viewer
    Opcional: es necesario si quieres acceder a las páginas de GKE en la Google Cloud consola.

    Para obtener información sobre cómo conceder los roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Habilitar APIs

Debes habilitar varias APIs de Google en tu Google Cloud proyecto asociado. Google Distributed Cloud usa las APIs al crear clústeres. Las APIs también son necesarias para mantener una conexión con Google Cloud. La conexión a Google Cloud permite que Google Distributed Cloud use Cloud Logging y Cloud Monitoring, así como funciones de flotas como Cloud Service Mesh, Config Sync, Policy Controller y Config Controller.

Si vas a usar la herramienta bmctl para crear clústeres, puedes incluir la marca --enable-apis al ejecutar bmctl create config. De esta forma, bmctl habilitará las APIs que se indican en el siguiente comando gcloud services enable. Si vas a usar un cliente de la API de GKE On-Prem para crear un clúster de administrador o un clúster de usuario, debes habilitar las APIs antes de crear el clúster.

Para habilitar las APIs, ejecuta los siguientes comandos:

  1. Inicia sesión en Google Cloud CLI:

    gcloud auth login
    
  2. Habilita las siguientes APIs:

    gcloud services enable --project=PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        compute.googleapis.com \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        iam.googleapis.com \
        kubernetesmetadata.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        storage.googleapis.com
    

    A excepción de gkeonprem.googleapis.com, estas APIs de Google son obligatorias para tu proyecto. Solo se requieren las dos APIs siguientes para la versión 1.29 y posteriores:

    • compute.googleapis.com
    • kubernetesmetadata.googleapis.com

    Si instalas tus clústeres detrás de un proxy, debes añadir muchas de estas APIs a la lista de conexiones permitidas. Para ver una lista de las APIs y los endpoints que debe añadir a la lista de permitidas, así como los motivos por los que debe permitir su acceso, consulte Instalar detrás de un proxy .

  3. Para ver qué APIs y servicios están habilitados en tu proyecto, ejecuta el siguiente comando:

    gcloud services list --project=PROJECT_ID \
        --enabled
    

Configurar cuentas de servicio

Para usar las APIs de Google, Google Distributed Cloud requiere una cuenta de servicio configurada con roles de gestión de identidades y accesos (IAM) específicos en tu Google Cloud proyecto asociado. Como práctica recomendada, debes crear cuentas de servicio independientes para diferentes fines, sobre todo en entornos de producción.

Si vas a usar la herramienta bmctl para crear clústeres, puedes incluir la marca --create-service-accounts al ejecutar bmctl create config para que bmctl cree las cuentas de servicio con los roles de gestión de identidades y accesos necesarios. Si vas a usar un cliente de la API de GKE On-Prem para crear un clúster de administrador, de forma predeterminada, el comando bmctl register bootstrap crea las cuentas de servicio con los roles de IAM necesarios cuando ejecutas el comando para crear un clúster de arranque.

Las cuentas de servicio también son necesarias para crear clústeres de usuario, pero se habrían creado y configurado al crear el clúster de administrador que gestiona los clústeres de usuario.

En la siguiente tabla se describen las cuentas de servicio que se crean automáticamente:

Cuenta de servicio Finalidad Roles
anthos-baremetal-gcr Google Distributed Cloud usa esta cuenta de servicio para descargar imágenes de contenedor de Artifact Registry. Ninguno
anthos-baremetal-connect Agente de conexión: usa esta cuenta de servicio para mantener una conexión entre tu clúster y Google Cloud. Esto permite acceder al clúster y a las funciones de gestión de cargas de trabajo, como la consola Google Cloud y la puerta de enlace de conexión, para interactuar con el clúster. roles/gkehub.connect
anthos-baremetal-register Connect Agent usa esta cuenta de servicio para registrar tus clústeres en una flota. roles/gkehub.admin
anthos-baremetal-cloud-ops El agente de Stackdriver usa esta cuenta de servicio para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor
roles/monitoring.viewer
roles/serviceusage.serviceUsageViewer
roles/kubernetesmetadata.publisher

Configurar cuentas de servicio manualmente

Si lo prefieres, puedes crear las cuentas de servicio manualmente, configurarlas con los roles necesarios y descargar los archivos de claves JSON antes de crear los clústeres. Si usas bmctl para crear clústeres, añade referencias a los archivos de clave JSON al archivo de configuración del clúster correspondiente. Para ver un ejemplo, consulta Editar el archivo de configuración. Si usas una API de GKE On-Prem para crear un clúster de administrador, puedes especificar los archivos de claves cuando ejecutes bmctl register bootstrap para crear el clúster de arranque.

Para crear las cuentas de servicio y los archivos de claves, sigue estos pasos:

  1. En tu estación de trabajo de administrador, asegúrate de que estás en el directorio baremetal.

  2. Si aún no lo has hecho, inicia sesión en Google Cloud CLI:

    gcloud auth login
    
  3. Crea las cuentas de servicio:

    gcloud iam service-accounts create anthos-baremetal-gcr \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-connect \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-register \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-cloud-ops \
        --project=PROJECT_ID
    
  4. Asigna los roles de gestión de identidades y accesos necesarios a las cuentas de servicio:

    gcloud projects add-iam-policy-binding  PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/gkehub.connect"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/stackdriver.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/opsconfigmonitoring.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.dashboardEditor"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.viewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/kubernetesmetadata.publisher"
    
  5. Descarga los archivos de clave JSON de la cuenta de servicio:

    gcloud iam service-accounts keys create anthos-baremetal-gcr.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-agent.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-register.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

Configurar una cuenta de servicio que pueda acceder a un segmento de Cloud Storage

Para acceder a Cloud Storage, debes usar una cuenta de servicio y un archivo de claves. Puedes usar esta cuenta de servicio para habilitar que las instantáneas de los clústeres se suban automáticamente a los segmentos de Cloud Storage o para importar imágenes de máquinas virtuales desde segmentos de Cloud Storage para usarlas con VM Runtime en GDC.

Para crear la cuenta de servicio y el archivo de claves, sigue estos pasos:

  1. Asegúrate de que estás en el directorio baremetal.

  2. Si aún no lo has hecho, inicia sesión en Google Cloud CLI:

    gcloud auth login
    
  3. Si aún no lo has hecho, habilita la API Cloud Storage en tu proyecto:storage.googleapis.com Google Cloud

    gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
    
  4. Crea una cuenta de servicio que pueda usar tu clúster para acceder a los segmentos de Cloud Storage:

    gcloud iam service-accounts create SA_NAME \
        --project=PROJECT_ID
    

    Sustituye SA_NAME por el nombre de la nueva cuenta de servicio. El nombre de esta cuenta de servicio aparece en la dirección de correo que se proporciona durante la creación, con el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

  5. Crea un rol personalizado con los siguientes permisos:

    • storage.buckets.create
    • storage.buckets.get
    • storage.buckets.list
    • storage.objects.create
    • resourcemanager.projects.get
    gcloud iam roles create ROLE_ID \
        --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \
        --project=PROJECT_ID
    

    Sustituye ROLE_ID por el nombre del nuevo rol personalizado, como snapshotUpload. La ruta completa de este rol personalizado tiene el formato projects/PROJECT_ID/roles/ROLE_ID.

  6. Añade un enlace de política a la cuenta de servicio:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role='projects/PROJECT_ID/roles/ROLE_ID'
    
  7. Descarga el archivo JSON de la clave de la cuenta de servicio:

    gcloud iam service-accounts keys create OUTPUT_FILE \
        --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

Para obtener más información sobre cómo crear capturas de clúster y subirlas automáticamente a un segmento de Cloud Storage, consulta Crear capturas para diagnosticar problemas del clúster.

Para obtener más información sobre cómo importar imágenes de VM desde Cloud Storage, consulta Crear y usar credenciales para importar imágenes de Cloud Storage para VM Runtime en GDC.