Configura recursos de Google Cloud

En esta página, se describen los recursos de Google Cloud que necesitas 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 propietario de un proyecto de Google Cloud, pídele a un propietario del proyecto que te otorgue los siguientes roles de Identity and Access Management (IAM):

    Rol Objetivo
    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 GKE en Bare Metal.
    roles/iam.securityAdmin Obligatorio: Se necesita para otorgar funciones de IAM a las cuentas de servicio que requiere GKE en Bare Metal.
    roles/iam.serviceAccountKeyAdmin Obligatorio: Se necesita a fin de crear archivos de claves JSON para las cuentas de servicio que requiere GKE en Bare Metal.
    roles/serviceusage.serviceUsageAdmin Obligatorio: Se requiere para habilitar las APIs de Google que requiere GKE en Bare Metal.
    roles/gkeonprem.admin Opcional: Es necesaria si deseas crear clústeres con los 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: Se necesita 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. GKE en Bare Metal 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 GKE en Bare Metal use Cloud Logging, Cloud Monitoring y funciones de flota, como Anthos Service Mesh, el Sincronizador de configuración, Policy Controller y Config Controller.

Si usarás la herramienta de bmctl para crear clústeres, puedes incluir la marca --enable-apis cuando ejecutes bmctl create config, y bmctl habilitará las APIs enumeradas en el siguiente comando de gcloud services enable. Si usarás 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 \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        iam.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        storage.googleapis.com
    
  1. 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, GKE en Bare Metal requiere una cuenta de servicio configurada con funciones de IAM específicas en tu proyecto de Google Cloud asociado. Como práctica recomendada, debes crear cuentas de servicio separadas para diferentes propósitos, especialmente en entornos de producción.

Si usarás la herramienta de 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 necesarios. Si usarás 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 la creación del clúster de usuario, pero las cuentas de servicio se habrían creado y configurado cuando se crea 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 de forma automática:

Cuenta de servicio Objetivo Roles
anthos-baremetal-gcr GKE en Bare Metal usa esta cuenta de servicio para descargar imágenes de contenedor desde Container Registry. Ninguna
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, como la consola de Google Cloud y la puerta de enlace de conexión para interactuar con tu clúster. roles/gkehub.connect
anthos-baremetal-register El agente de Connect usa esta cuenta de servicio para registrar tus clústeres con 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

Configura las cuentas de servicio de forma manual

Si lo prefieres, puedes crear manualmente las cuentas de servicio, configurarlas con las funciones necesarias y descargar archivos de claves JSON antes de crear los clústeres. Si usas bmctl para crear clústeres, agrega referencias a los archivos de claves JSON en el archivo de configuración del clúster adecuado. Para ver un ejemplo, consulta Edita 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, 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 has hecho, 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"
    
  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 para importar imágenes de máquina virtual (VM) desde los buckets de Cloud Storage a fin de 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 has hecho, 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 cuenta de servicio nueva. 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 de la función personalizada nueva, 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í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 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
    

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

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