Crear clústeres básicos

Esta página es la segunda parte de una guía que te explica cómo usar Google Distributed Cloud (solo software) en hardware desnudo (antes conocido como Google Distributed Cloud Virtual y anteriormente como clústeres de Anthos en hardware desnudo) para crear una pequeña instalación de prueba de concepto de clústeres de GKE en tu hardware desnudo. En la primera parte, Configurar la infraestructura mínima, se explica cómo configurar el hardware, planificar las direcciones IP y configurar la infraestructuraGoogle Cloud necesaria. Este documento se basa en la configuración y la planificación de la sección anterior y muestra cómo crear un clúster de administrador y un clúster de usuario. A continuación, puedes crear objetos Ingress y Service.

Esta página está dirigida a administradores, arquitectos y operadores que configuran, monitorizan y gestionan el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas de usuario habituales de GKE.Google Cloud

Esta guía te ayuda a crear una instalación mínima de Google Distributed Cloud. Esta instalación mínima puede no ser adecuada para tus necesidades de producción y casos prácticos. Para obtener información sobre las instalaciones de producción, consulta las guías de instalación.

Antes de empezar

  1. Asegúrate de haber configurado el hardware y de haber planificado tus direcciones IP tal como se describe en la parte anterior de esta guía, Configurar la infraestructura mínima. También puedes usar el planificador de requisitos de red de la sección Requisitos previos del flujo Crear un clúster de administrador bare metal en la consola de Google Cloud .

  2. Si quieres usar Terraform para crear el clúster de usuarios, necesitas Terraform en tu estación de trabajo de administrador o en otro ordenador.

    1. Asegúrate de que tienes instalados los componentes más recientes de Google Cloud CLI:

      gcloud components update
      
  3. Sigue estos pasos para activar y usar la API GKE On-Prem:

    1. Habilita la API en tu proyecto:

      gcloud services enable \
          --project PROJECT_ID \
          gkeonprem.googleapis.com
      

      Sustituye PROJECT_ID por el ID del proyecto host de tu flota.

      Si aparece un error PERMISSION_DENIED, comprueba el ID del proyecto que has introducido. Si el ID de proyecto es correcto, ejecuta gcloud auth login para iniciar sesión en la CLI de Google Cloud con la cuenta que tiene acceso al proyecto.

    2. Si es la primera vez que habilitas la API GKE On-Prem en tu proyecto, debes inicializar la API. Para ello, puedes llamar a un comando de la CLI de gcloud que muestre las versiones disponibles que puedes usar para crear un clúster:

      gcloud container bare-metal clusters query-version-config \
          --project=PROJECT_ID \
          --location="us-central1"
      

Descripción general del procedimiento

Para crear clústeres básicos, sigue estos pasos principales:

  1. Recopila información que se usa para especificar la configuración de tus clústeres.

  2. Crea un clúster de administradores para gestionar tu clúster de usuarios.

  3. Crea un clúster de usuarios que pueda ejecutar tus cargas de trabajo.

1. Recoger información

Utilice la información que ha preparado en la sección Configurar la infraestructura mínima o en el planificador de redes para rellenar cada marcador de posición de la siguiente tabla. Los marcadores de posición corresponden a los valores de los campos de los archivos de configuración del clúster para la instalación mínima de un clúster de administradores y un clúster de usuarios. Algunos marcadores de posición se definen con los valores rellenados automáticamente del archivo de configuración del clúster generado, pero todos los marcadores de posición se pueden editar.

Información básica del clúster
El nombre del clúster de administrador que vas a crear. La ubicación y el nombre de los artefactos del clúster en la estación de trabajo del administrador se basan en el nombre del clúster. El espacio de nombres del clúster se deriva del nombre del clúster. ADMIN_CLUSTER_NAME
El nombre del clúster de usuarios que vas a crear. La ubicación y el nombre de los artefactos del clúster en la estación de trabajo del administrador se basan en el nombre del clúster. El espacio de nombres del clúster se deriva del nombre del clúster. USER_CLUSTER_NAME
La versión de bmctl que has descargado en la primera parte de esta guía. CLUSTER_VERSION
Información de la cuenta
Ruta al archivo de clave privada SSH en tu estación de trabajo de administrador. De forma predeterminada, la ruta es
/home/USERNAME/.ssh/id_rsa.
SSH_PRIVATE_KEY_PATH
El ID del Google Cloud proyecto que quieres usar para conectar tu clúster a Google Cloud y ver los registros y las métricas. Este proyecto también se conoce como proyecto host de la flota. PROJECT_ID
La dirección de correo asociada a tu cuenta de Google Cloud. Por ejemplo: alex@example.com. GOOGLE_ACCOUNT_EMAIL
Direcciones IP de las máquinas de los nodos
Una dirección IP para el nodo del plano de control del clúster de administrador. ADMIN_CP_NODE_IP
Una dirección IP para el nodo de plano de control del clúster de usuarios. USER_CP_NODE_IP
Una dirección IP para el nodo de trabajo del clúster de usuarios. USER_WORKER_NODE_IP
Direcciones VIP
VIP del servidor de la API de Kubernetes del clúster de administrador. ADMIN_CP_VIP
VIP del servidor de la API de Kubernetes del clúster de usuario. USER_CP_VIP
Una IP virtual que se usará como dirección externa del proxy de entrada. USER_INGRESS_VIP
Intervalo de diez direcciones IP que se pueden usar como direcciones IP externas para servicios de tipo LoadBalancer. Ten en cuenta que este intervalo incluye el VIP de entrada, que es obligatorio para MetalLB. Ninguna otra dirección IP puede solaparse con este intervalo. START_IP-END_IP
CIDRs de pods y servicios
Intervalo de direcciones IP en notación de bloque CIDR que usarán los pods del clúster de administrador. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado, es 192.168.0.0/16. 192.168.0.0/16
Intervalo de direcciones IP en notación de bloque CIDR que usan los servicios del clúster de administración. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado, es 10.96.0.0/20. 10.96.0.0/20
Intervalo de direcciones IP en notación de bloque CIDR que usan los pods del clúster de usuarios. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado y es el valor predeterminado en la consola, es 192.168.0.0/16. 192.168.0.0/16
Intervalo de direcciones IP en notación de bloque CIDR que usan los servicios en el clúster de usuario. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado y es el valor predeterminado en la consola, es 10.96.0.0/20. 10.96.0.0/20

2. Crear clúster de administradores

En los pasos siguientes se crea un clúster de administradores para una instalación mínima de clúster de administradores y de usuarios. Antes de continuar, asegúrate de haber proporcionado valores para cada marcador de posición de la tabla de la sección Recopilar información anterior.

Cuando la API de GKE On-Prem (gkeonprem.googleapis.com) esté habilitada en tu proyecto, los clústeres que crees se registrarán automáticamente en la API. El registro se produce aunque no se especifique spec.gkeOnPremAPI en el archivo de configuración del clúster. Si te registras con esta API alojada enGoogle Cloud, podrás gestionar el ciclo de vida de tu clúster mediante la consola o la CLI de gcloud.Google Cloud

Para inhabilitar el registro automático, quita el comentario de la sección spec.gkeOnPremAPI del archivo de configuración del clúster y asigna el valor spec.gkeOnPremAPI.enabled a false antes de crear el clúster. El campo spec.gkeOnPremAPI.enabled es mutable, por lo que puedes dar de baja tu clúster en cualquier momento después de crearlo.

Para crear un clúster de administrador para la instalación mínima, sigue estos pasos:

  1. Define las credenciales predeterminadas que Google Distributed Cloud puede usar para crear el clúster con el siguiente comando:

    gcloud auth application-default login
  2. Para generar un archivo de configuración de clúster, ejecuta el siguiente comando desde el directorio /baremetal de tu estación de trabajo de administrador:

    bmctl create config -c ADMIN_CLUSTER_NAME \
        --enable-apis --create-service-accounts --project-id=PROJECT_ID
  3. Verifica el archivo de configuración del clúster de administrador:

    El siguiente archivo de configuración de clúster se rellena con los valores que has introducido en la tabla de planificación de la sección anterior. Además de los valores que has introducido, ten en cuenta las siguientes diferencias con respecto al archivo de configuración generado:

    • Se han eliminado los comentarios de este ejemplo para mejorar la legibilidad.
    • Se ha quitado la especificación NodePool. Los nodos de trabajador no están permitidos en un clúster de administrador.
    gcrKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-gcr.json
    sshPrivateKeyPath: SSH_PRIVATE_KEY_PATH
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-cloud-ops.json
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-ADMIN_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: ADMIN_CLUSTER_NAME
      namespace: cluster-ADMIN_CLUSTER_NAME
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: CLUSTER_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: ADMIN_CP_NODE_IP
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: ADMIN_CP_VIP
      clusterOperations:
        projectID: PROJECT_ID
        location: us-central1
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
      # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem
      # API to enable/disable cluster lifecycle management from gcloud UI and Terraform.
      # gkeOnPremAPI:
        # enabled: false
        # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled.
        # location: us-central1
  4. Sustituye el contenido del archivo de configuración generado en tu estación de trabajo de administrador por el contenido del ejemplo anterior.

    Abre el archivo generado, bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml y sustituye su contenido por el del ejemplo que has verificado en el paso anterior.

  5. Para crear el clúster de administrador, ejecuta el siguiente comando desde el directorio /baremetal en tu estación de trabajo de administrador:

    bmctl create cluster -c ADMIN_CLUSTER_NAME

    El comando bmctl muestra la salida en la pantalla mientras ejecuta comprobaciones previas y crea el clúster. La información detallada se escribe en los registros de la carpeta baremetal/bmctl-workspace/ADMIN_CLUSTER_NAME/log de la estación de trabajo del administrador.

    La creación del clúster puede tardar varios minutos en completarse.

  6. Verifica que el clúster se ha creado y está en ejecución:

    kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \
        get nodes

    Si tu clúster está en funcionamiento, la respuesta tendrá un aspecto similar a este:

    NAME     STATUS  ROLES          AGE  VERSION
    node-01  Ready   control-plane  16h  v1.25.7-gke.1000
  7. Para asignar a tu cuenta de usuario el rol clusterrole/cluster-admin de Kubernetes en el clúster, ejecuta el siguiente comando gcloud:

    gcloud container fleet memberships generate-gateway-rbac \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/cluster-admin \
        --users=GOOGLE_ACCOUNT_EMAIL \
        --project=PROJECT_ID \
        --kubeconfig=bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \
        --context=ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME \
        --apply

    El resultado de este comando es similar al siguiente, que se ha truncado para facilitar la lectura:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-kubeconfig, context: <var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-admin@<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>
    Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
    Successfully applied the RBAC policy to cluster.
    

    Entre otras cosas, la política de RBAC te permite iniciar sesión en tu clúster en la Google Cloud consola para ver más detalles sobre el clúster.

3. Crear clúster de usuarios

En los pasos siguientes se crea un clúster de usuarios para una instalación mínima de clúster de administrador y de clúster de usuarios. Antes de continuar, asegúrate de haber proporcionado valores para cada marcador de posición de la tabla de la sección Recopilar información.

Para crear un clúster de usuarios para la instalación mínima, sigue estos pasos:

bmctl

Cuando la API de GKE On-Prem (gkeonprem.googleapis.com) esté habilitada en tu proyecto, los clústeres que crees se registrarán automáticamente en la API. El registro se produce aunque no se especifique spec.gkeOnPremAPI en el archivo de configuración del clúster. Cuando tu clúster se registre con esta API alojada en Google Cloud, podrás usar la consola de Google Cloud o la CLI de gcloud para gestionar el ciclo de vida del clúster.

Para inhabilitar el registro automático, quita el comentario de la sección spec.gkeOnPremAPI del archivo de configuración del clúster y asigna el valor spec.gkeOnPremAPI.enabled a false antes de crear el clúster. El campo spec.gkeOnPremAPI.enabled es mutable, por lo que puedes dar de baja tu clúster en cualquier momento después de crearlo.

  1. Genera un archivo de configuración de clúster:

    bmctl create config -c USER_CLUSTER_NAME \
      --project-id=PROJECT_ID
  2. Verifica el archivo de configuración del clúster de usuarios:

    El siguiente archivo de configuración de clúster se rellena con los valores que has introducido en la tabla de planificación anteriormente. Además de los valores que has introducido, ten en cuenta las siguientes diferencias con respecto al archivo de configuración generado:

    • Se han eliminado los comentarios de este ejemplo para mejorar la legibilidad.
    • El tipo de clúster, spec.type, se ha definido como user.
    • Se ha añadido el campo spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts para conceder el clusterrole/cluster-admin a tu cuenta. Entre otras cosas, este campo te permite iniciar sesión en tu clúster en la consolaGoogle Cloud para ver más detalles sobre el clúster.
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-USER_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: USER_CLUSTER_NAME
      namespace: cluster-USER_CLUSTER_NAME
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: CLUSTER_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: USER_CP_NODE_IP
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: USER_CP_VIP
          ingressVIP: USER_INGRESS_VIP
        addressPools:
        - name: pool1
          addresses:
          - START_IP-END_IP
      clusterOperations:
        projectID: PROJECT_ID
        location: us-central1
      clusterSecurity:
        authorization:
          clusterAdmin:
            gcpAccounts:
            - GOOGLE_ACCOUNT_EMAIL
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
      # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem
      # API to enable/disable cluster lifecycle management from gcloud UI and Terraform.
      # gkeOnPremAPI:
        # enabled: false
        # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled.
        # location: us-central1
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-USER_CLUSTER_NAME
    spec:
      clusterName: USER_CLUSTER_NAME
      nodes:
      - address: USER_WORKER_NODE_IP
    
  3. Sustituye el contenido del archivo de configuración generado en tu estación de trabajo de administrador por el contenido del ejemplo anterior.

    Abre el archivo generado, bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME.yaml y sustituye su contenido por el del ejemplo que has verificado en el paso anterior.

  4. Crea el clúster de usuarios:

    bmctl create cluster -c USER_CLUSTER_NAME \
    --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

    El comando bmctl muestra la salida en la pantalla mientras ejecuta comprobaciones previas y crea el clúster. La información detallada se escribe en los registros de la carpeta baremetal/bmctl-workspace/USER_CLUSTER_NAME/log de la estación de trabajo del administrador.

    La creación del clúster puede tardar varios minutos en completarse.

  5. Verifica que el clúster se ha creado y está en ejecución:

    kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \
      get nodes

    Si tu clúster está en funcionamiento, la respuesta tendrá un aspecto similar a este:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001

Consola

Sigue estos pasos para crear un clúster de usuarios en la consola:

  1. En la consola, ve a la página Crear un clúster de metal desnudo.

    Ir a Crear un clúster de metal desnudo

  2. Asegúrate de que la lista de proyectos tenga Google Cloud PROJECT_ID seleccionado.

  3. Haz clic en Crear clúster.

  4. En el cuadro de diálogo, haz clic en Local.

  5. Junto a Bare metal, haz clic en Configurar. Se muestra la página Requisitos previos.

  6. En Elige el tipo de clúster, selecciona Crear un clúster de usuarios para un clúster de administradores ya creado.

  7. Haz clic en Siguiente.

Información básica de los clústeres

  1. Introduce USER_CLUSTER_NAME como nombre del clúster de usuarios o usa el predeterminado.

  2. Asegúrate de que esté seleccionado el clúster de administrador que has creado.

  3. En GCP API Location (Ubicación de la API de GCP), seleccione us-central1.

  4. En Versión de Google Distributed Cloud, selecciona CLUSTER_VERSION o usa el valor predeterminado. Puedes usar los valores predeterminados para el resto de los ajustes de esta página.

  5. En la barra de navegación de la izquierda, haga clic en Redes.

Redes

  1. En la sección Plano de control, introduce lo siguiente en el campo IP del nodo del plano de control 1:

    USER_CP_NODE_IP
    
  2. En la sección Balanceador de carga, usa el balanceador de carga predeterminado Agrupado con MetalLB.

  3. Ve a la sección Nuevo grupo de direcciones. Introduce el intervalo de direcciones IP en el campo Intervalo de direcciones IP 1:

    10.200.0.51-10.200.0.70
    
  4. Haz clic en Listo.

  5. En la sección IPs virtuales, introduce la dirección IP de VIP del plano de control:

    USER_CP_VIP
    
  6. Introduce la dirección IP del VIP de entrada:

    USER_INGRESS_VIP
    
  7. En la sección CIDRs de servicio y de pod, si no has cambiado los CIDRs de servicio y de pod en el planificador, puedes usar los valores predeterminados.

    Si has cambiado los CIDRs, introduce los que quieras usar:

    • CIDR de servicio:
    10.96.0.0/20
    
    • CIDR de pod:
    192.168.0.0/16
    
  8. En la barra de navegación de la izquierda, haga clic en grupo predeterminado.

Crear un grupo de nodos

Tu clúster debe tener al menos un grupo de nodos para los nodos de trabajo. Un grupo de nodos es una plantilla para los grupos de nodos de trabajo creados en este clúster.

Introduce la dirección IP del nodo de trabajo del clúster de usuarios en el campo Dirección 1 de los nodos:

USER_WORKER_NODE_IP

Crear el clúster

  1. Haz clic en Verificar y crear para crear el clúster de usuarios.

    La creación del clúster de usuarios tarda 15 minutos o más. La consola muestra mensajes de estado mientras verifica los ajustes y crea el clúster.

    Si hay algún problema con la configuración, la consola mostrará un mensaje de error que debería ser lo suficientemente claro como para que puedas solucionar el problema de configuración y volver a intentar crear el clúster.

    Para ver información adicional sobre el proceso de creación, haga clic en Mostrar detalles para que se muestre un panel lateral. Haz clic en para cerrar el panel de detalles.

    Cuando se cree el clúster, se mostrará el mensaje Estado del clúster: en ejecución.

  2. Una vez creado el clúster, haz clic en Clústeres para volver a la página Clústeres.

CLI de gcloud

En esta sección se muestra cómo crear un clúster de usuario y un grupo de nodos con gcloud CLI.

  1. Ejecuta el siguiente comando para crear un clúster de usuarios:

    gcloud container bare-metal clusters create USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=us-central1 \
      --admin-cluster-membership=ADMIN_CLUSTER_NAME \
      --admin-cluster-membership-project=PROJECT_ID \
      --admin-cluster-membership-location=global \
      --version=CLUSTER_VERSION \
      --admin-users=GOOGLE_ACCOUNT_EMAIL \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=START_IP-END_IP' \
      --control-plane-node-configs='node-ip=USER_CP_NODE_IP' \
      --control-plane-vip=USER_CP_VIP \
      --control-plane-load-balancer-port=443 \
      --ingress-vip=USER_INGRESS_VIP \
      --lvp-share-path=/mnt/localpv-share \
      --lvp-share-storage-class=local-shared \
      --lvp-node-mounts-config-path=/mnt/localpv-disk \
      --lvp-node-mounts-config-storage-class=local-disks
    

    La salida del comando es similar a la siguiente:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    En el resultado de ejemplo, la cadena operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 es el OPERATION_ID de la operación de larga duración. Puedes consultar el estado de la operación con el siguiente comando:

    gcloud container bare-metal operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=us-central1
    

    La creación del clúster tarda unos 15 minutos o más. Mientras se crea el clúster, puedes ejecutar el comando anterior de vez en cuando para obtener el estado actual.

    Cuando se crea el clúster, se muestra un resultado similar al siguiente:

    Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/bareMetalClusters/USER_CLUSTER_NAME].
    
  2. Una vez creado el clúster, ejecuta el siguiente comando para crear un grupo de nodos en el clúster recién creado.

    gcloud container bare-metal node-pools create node-pool-1 \
      --cluster=USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=us-central1 \
      --node-configs node-ip=USER_WORKER_NODE_IP

Para obtener más información y otros ejemplos, consulta lo siguiente:

Terraform

En esta sección se muestra cómo crear un clúster de usuario y un grupo de nodos con Terraform.

  1. Crea un directorio y un archivo en él. El nombre del archivo debe tener la extensión .tf. En esta guía, el archivo se llama main.tf.

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. Verifica el recurso de Terraform del clúster de usuario:

    El siguiente ejemplo de recurso de Terraform se rellena con los valores que has introducido en la tabla de planificación de la sección anterior.

    resource "google_gkeonprem_bare_metal_cluster"  "cluster-basic" {
      provider = google-beta
      name = "USER_CLUSTER_NAME"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME"
      bare_metal_version = "CLUSTER_VERSION"
      network_config {
        island_mode_cidr {
          service_address_cidr_blocks = ["10.96.0.0/20"]
          pod_address_cidr_blocks = ["192.168.0.0/16"]
        }
      }
      control_plane {
        control_plane_node_pool_config {
          node_pool_config {
            labels = {}
            operating_system = "LINUX"
            node_configs {
              labels = {}
              node_ip = "USER_CP_NODE_IP"
            }
          }
        }
      }
      load_balancer {
        port_config {
          control_plane_load_balancer_port = 443
        }
        vip_config {
          control_plane_vip = "USER_CP_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "pool1"
            addresses = [
              "START_IP-END_IP"
            ]
            avoid_buggy_ips = true
            manual_assign = true
          }
        }
      }
      storage {
        lvp_share_config {
          lvp_config {
            path = "/mnt/localpv-share"
            storage_class = "local-shared"
          }
          shared_path_pv_count = 5
        }
        lvp_node_mounts_config {
          path = "/mnt/localpv-disk"
          storage_class = "local-disks"
        }
      }
      security_config {
        authorization {
          admin_users {
            username = "GOOGLE_ACCOUNT_EMAIL"
          }
        }
      }
    }
    
    resource "google_gkeonprem_bare_metal_node_pool" "node-pool-default" {
      provider = google-beta
      name =  "node-pool-1"
      bare_metal_cluster = google_gkeonprem_bare_metal_cluster.cluster-basic.name
      project = "PROJECT_ID"
      location = "us-central1"
      node_pool_config {
        operating_system = "LINUX"
        node_configs {
          node_ip = "USER_WORKER_NODE_IP"
        }
      }
    }
    
  3. Copia el recurso de Terraform en main.tf y guarda el archivo.

  4. Inicializa y crea el plan de Terraform:

    terraform init
    

    Terraform instala las bibliotecas necesarias, como el Google Cloud proveedor.

  5. Revisa la configuración y haz los cambios necesarios:

    terraform plan
    
  6. Aplica el plan de Terraform para crear el clúster de usuarios:

    terraform apply
    

    Cuando se te solicite, introduce yes.

    Se tarda unos 15 minutos (o más, según tu red) en crear el clúster de usuario básico y el grupo de nodos.

  7. Para crear un archivo kubeconfig para el clúster de usuarios, ejecuta el siguiente comando en la estación de trabajo del administrador:

    bmctl get credentials --cluster USER_CLUSTER_NAME \
    --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

    El resultado del comando muestra el nombre del archivo kubeconfig del clúster de usuario. Por ejemplo:

    bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig

    El TIMESTAMP del nombre de archivo indica la fecha y la hora en que se creó el archivo.

    Como este archivo contiene las credenciales de autenticación de tu clúster, debes almacenarlo en una ubicación segura con acceso restringido.

  8. Verifica que el clúster se ha creado y está en ejecución:

    kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \
        get nodes

    Si tu clúster está en funcionamiento, la respuesta tendrá un aspecto similar a este:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001

Para obtener más información y otros ejemplos, consulta lo siguiente:

Conectarse al clúster de usuarios

Independientemente de la herramienta que hayas usado para crear el clúster de usuario, tu dirección de correo electrónico tiene asignadas las políticas de control de acceso basado en roles (RBAC) que te permiten conectarte al clúster con privilegios de administrador completos. El lugar donde se especifica tu dirección de correo depende de la herramienta:

  • bmctl: tu dirección de correo se incluye en la sección clusterSecurity del archivo de configuración de usuario de ejemplo.

  • Terraform: tu dirección de correo se incluye en la sección security_config del recurso google_gkeonprem_bare_metal_cluster de ejemplo.

  • La consola: como creador del clúster, tu dirección de correo se incluye automáticamente en la página Información básica del clúster de la sección Autorización.

Aunque solo se especifica tu dirección de correo, puedes incluir otras direcciones de correo para conceder acceso administrativo al clúster a otros usuarios.

Las políticas de control de acceso basado en roles concedidas a tu dirección de correo hacen lo siguiente:

  • Te concede el rol clusterrole/cluster-admin de Kubernetes en el clúster.

  • Permite iniciar sesión en el clúster en la consola Google Cloud con tu identidad de Google. Puedes ver el clúster en la página Clústeres de GKE de la consola.

  • Te permite ejecutar comandos kubectl en tu ordenador local mediante el archivo kubeconfig de la pasarela de conexión.

Para obtener el archivo kubeconfig de la pasarela de conexión, ejecuta los siguientes comandos desde tu ordenador local:

  1. Obtén la entrada kubeconfig que puede acceder al clúster a través de la pasarela de conexión.

    gcloud container fleet memberships get-credentials USER_CLUSTER_NAME  \
    --project=PROJECT_ID

    El resultado debería ser similar al siguiente:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
    
  2. Ahora puedes ejecutar comandos kubectl a través de la pasarela de conexión:

    kubectl get nodes
    

    El resultado debería ser similar al siguiente:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001
    

    Muchos comandos de kubectl requieren el archivo kubeconfig del clúster de administrador. Tendrás que ejecutar esos comandos en la estación de trabajo de administrador.

Siguientes pasos