Configura los 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 comenzar

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

  2. Si no eres el Google Cloud propietario del proyecto, pídele a un propietario que te otorgue los siguientes roles de Identity and Access Management (IAM):

    Rol Objetivo
    roles/compute.viewer Obligatorio: Es necesario cuando bmctl valida el campo clusterOperations.location en el archivo de configuración del clúster.
    roles/iam.serviceAccountAdmin Obligatorio: Es necesario para crear las cuentas de servicio que requiere Google Distributed Cloud.
    roles/iam.securityAdmin Obligatorio: Es necesario para otorgar roles de IAM a las cuentas de servicio que requiere Google Distributed Cloud.
    roles/iam.serviceAccountKeyAdmin Obligatorio: Es necesario para crear archivos de claves JSON para las cuentas de servicio que requiere Google Distributed Cloud.
    roles/serviceusage.serviceUsageAdmin Obligatorio: Es necesario para habilitar las APIs de Google que requiere Google Distributed Cloud.
    roles/gkeonprem.admin Opcional: Es necesario si deseas crear clústeres con clientes de la API de GKE On-Prem o configurar un clúster para que lo administre la API de GKE On-Prem.
    roles/gkehub.viewer
    roles/container.viewer
    Opcional: Es necesario si deseas acceder a las páginas de GKE Enterprise y Google Kubernetes Engine en la consola de Google Cloud.

    Para obtener información sobre cómo otorgar roles, consulta Administración del acceso a proyectos, carpetas y organizaciones.

Habilita las APIs

Se deben habilitar varias APIs de Google en tu proyecto de Google Cloud asociado. Google Distributed Cloud usa las APIs cuando crea 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 flota, como Cloud Service Mesh, Config Sync, Policy Controller y Config Controller.

Si usarás la herramienta bmctl para crear clústeres, puedes incluir la marca --enable-apis cuando ejecutes bmctl create config, y bmctl habilitará las APIs que se enumeran 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 API, ejecuta los siguientes comandos:

  1. Accede a 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
    

    Con la excepción de gkeonprem.googleapis.com, estas APIs de Google son necesarias para tu proyecto. Las siguientes dos APIs son obligatorias solo para la versión 1.29 y versiones posteriores:

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

    Si instalas tus clústeres detrás de un proxy, debes agregar muchas de estas APIs a la lista de conexiones permitidas. Para obtener una lista de las APIs y los extremos que debes agregar a la lista de entidades permitidas y los motivos de su acceso, consulta Cómo 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 IAM específicos en tu proyecto de Google Cloud asociado. Como práctica recomendada, debes crear cuentas de servicio independientes para diferentes propósitos, en especial en entornos de producción.

Si usarás la herramienta bmctl para crear clústeres, puedes incluir la marca --create-service-accounts cuando ejecutes bmctl create config para que bmctl cree las cuentas de servicio con los roles de IAM requeridos. Si usarás un cliente de 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 requeridos cuando ejecutas el comando para crear un clúster de arranque.

Las cuentas de servicio también son necesarias para crear clústeres de usuarios, pero estas se habrían creado y configurado cuando se creó el clúster de administrador que administra los clústeres de usuarios.

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

Cuenta de servicio Objetivo Funciones
anthos-baremetal-gcr Google Distributed Cloud usa esta cuenta de servicio para descargar imágenes de contenedor de Container Registry. Ninguno
anthos-baremetal-connect El agente de Connect usa esta cuenta de servicio para mantener una conexión entre tu clúster y Google Cloud. Esto permite el acceso al clúster y a las funciones de administración de cargas de trabajo, incluida la consola de Google Cloud y la puerta de enlace de conexión, para interactuar con el clúster. roles/gkehub.connect
anthos-baremetal-register El agente de Connect 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

Configura las cuentas de servicio de forma manual

Si lo prefieres, puedes crear las cuentas de servicio de forma manual, configurarlas con los roles necesarios y descargar los archivos de claves JSON antes de crear clústeres. Si usas bmctl para crear clústeres, agregas referencias a los archivos de claves JSON al archivo de configuración de clúster adecuado. Para ver un ejemplo, consulta Cómo 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 ejecutas bmctl register bootstrap para crear el clúster de arranque.

Para crear las cuentas de servicio y los archivos de claves, haz lo siguiente:

  1. En la estación de trabajo de administrador, asegúrate de estar en el directorio baremetal.

  2. Si aún no lo hiciste, accede a 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. Otorga los roles de IAM necesarios en 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 claves 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
    

Configura una cuenta de servicio que pueda acceder a un bucket de Cloud Storage

Usa una cuenta de servicio y un archivo de claves para acceder a Cloud Storage. Puedes usar esta cuenta de servicio para permitir que las instantáneas de los clústeres se suban de forma automática a los buckets de Cloud Storage, o bien importar imágenes de máquinas virtuales (VM) desde buckets de Cloud Storage para usarlas con el entorno de ejecución de VM en GDC.

Para crear la cuenta de servicio y el archivo de claves, completa los siguientes pasos:

  1. Asegúrate de estar en el directorio baremetal.

  2. Si aún no lo hiciste, accede a Google Cloud CLI:

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

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

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

    Reemplaza SA_NAME por el nombre de la nueva cuenta de servicio. Este nombre de cuenta de servicio aparece en la dirección de correo electrónico que se aprovisiona durante la creación, en 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
    

    Reemplaza 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. Agrega una vinculación de políticas 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 de claves JSON de la cuenta de servicio:

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

Si deseas obtener más información para crear instantáneas de clúster y subirlas automáticamente a un bucket de Cloud Storage, consulta Crea instantáneas para diagnosticar problemas de clústeres.

Para obtener más información sobre cómo importar imágenes de VM desde Cloud Storage, consulta Crea y usa credenciales para importar imágenes desde Cloud Storage para el entorno de ejecución de VM en GDC.