Crea clústeres básicos

Esta página es la segunda parte de una guía que te guía por el uso de Google Distributed Cloud (solo software) en Bare Metal (antes conocido como Google Distributed Cloud Virtual, antes conocido como clústeres de Anthos en Bare Metal) para crear una pequeña instalación de prueba de concepto de clústeres de GKE en tu hardware Bare Metal. En la primera parte, Configura una infraestructura mínima, se muestra cómo configurar el hardware, planificar las direcciones IP y configurar la infraestructura deGoogle Cloud necesaria. Este documento se basa en la configuración y la planificación de la sección anterior y te muestra cómo crear un clúster de administrador y uno de usuario. Luego, puedes continuar con Crea un Service y un Ingress.

Esta página está destinada a administradores, arquitectos y operadores que configuran, supervisan y administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido deGoogle Cloud , consulta Tareas y roles comunes de los usuarios de GKE Enterprise.

Esta guía te ayudará a crear una instalación mínima de Google Distributed Cloud. Es posible que esta instalación mínima no sea adecuada para tus necesidades de producción y casos de uso reales. Para obtener información sobre las instalaciones de producción, consulta las guías de instalación.

Antes de comenzar

  1. Asegúrate de haber configurado el hardware y planificado tus direcciones IP como se describe en la parte anterior de esta guía, Configura una infraestructura mínima. Como alternativa, usa el planificador de requisitos de red en la sección Requisitos previos del flujo Crea un clúster de administrador de Bare Metal en la consola de Google Cloud.

  2. Si quieres usar Terraform para crear el clúster de usuario, necesitas Terraform en tu estación de trabajo de administrador o en otra computadora.

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

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

    1. Habilita la API en tu proyecto:

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

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

      Si recibes un error PERMISSION_DENIED, verifica el ID del proyecto que ingresaste. Si el ID del proyecto es correcto, ejecuta gcloud auth login para acceder a la Google Cloud CLI con la cuenta que tiene acceso al proyecto.

    2. Si esta es la primera vez que habilitas la API de GKE On-Prem en tu proyecto, debes inicializar la API. Para ello, llama a un comando de la gcloud CLI 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

La creación de clústeres básicos consta de los siguientes pasos principales:

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

  2. Crea un clúster de administrador para administrar tu clúster de usuario.

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

1. Recopila información

Usa la información que preparaste en Configura una infraestructura mínima o del planificador de red para completar cada marcador de posición de la siguiente tabla. Los marcadores de posición corresponden a los valores de los campos en los archivos de configuración del clúster para la instalación mínima de un clúster de administrador y un clúster de usuario. Algunos marcadores de posición se establecen en los valores precompletados 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
Es el nombre del clúster de administrador que crearás. 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
Es el nombre del clúster de usuario que estás creando. 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 descargaste en la primera parte de esta guía. CLUSTER_VERSION
Información de la cuenta
Es la ruta de acceso al archivo de claves privadas SSH en tu estación de trabajo de administrador. De forma predeterminada, la ruta de acceso es
/home/USERNAME/.ssh/id_rsa.
SSH_PRIVATE_KEY_PATH
Es el ID del proyecto de Google Cloud que deseas usar para conectar tu clúster a Google Cloud y ver los registros y las métricas. Este proyecto también se conoce como el proyecto host de la flota. PROJECT_ID
La dirección de correo electrónico asociada con tu cuenta de Google Cloud. Por ejemplo: alex@example.com. GOOGLE_ACCOUNT_EMAIL
Direcciones IP de la máquina del nodo
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 del plano de control del clúster de usuario. USER_CP_NODE_IP
Una dirección IP para el nodo trabajador del clúster de usuario USER_WORKER_NODE_IP
Direcciones VIP
Es la VIP para el servidor de la API de Kubernetes del clúster de administrador. ADMIN_CP_VIP
VIP para el servidor de la API de Kubernetes del clúster de usuario. USER_CP_VIP
Una VIP para usar como dirección externa del proxy de entrada. USER_INGRESS_VIP
Es un rango de diez direcciones IP para usar como direcciones IP externas para los servicios de tipo LoadBalancer. Observa que este rango incluye la VIP de entrada, que requiere MetalLB. Ninguna otra dirección IP puede superponerse con este rango. START_IP-END_IP
CIDR de Pod y Service
Es el rango de direcciones IP en notación de bloque CIDR que pueden usar los Pods en el clúster de administración. El valor inicial recomendado, que se completa previamente en el archivo de configuración del clúster generado, es 192.168.0.0/16. 192.168.0.0/16
Es el rango de direcciones IP en notación de bloque CIDR que pueden usar los servicios en el clúster de administrador. El valor inicial recomendado, que se completa previamente en el archivo de configuración del clúster generado, es 10.96.0.0/20. 10.96.0.0/20
Es el rango de direcciones IP en notación de bloque CIDR que pueden usar los Pods en el clúster de usuarios. El valor inicial recomendado, que se completa previamente en el archivo de configuración del clúster generado y es el valor predeterminado en la consola, es 192.168.0.0/16. 192.168.0.0/16
Es el rango de direcciones IP en notación de bloque CIDR que pueden usar los servicios en el clúster de usuarios. El valor inicial recomendado, que se completa previamente en el archivo de configuración del clúster generado y es el valor predeterminado en la consola, es 10.96.0.0/20. 10.96.0.0/20

2. Crear un clúster de administrador

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

Cuando la API de GKE On-Prem (gkeonprem.googleapis.com) está habilitada para tu proyecto, los clústeres creados recientemente se inscriben automáticamente en la API. La inscripción se produce incluso cuando spec.gkeOnPremAPI no se especifica en el archivo de configuración del clúster. La inscripción con esta API alojada enGoogle Cloudte permite administrar el ciclo de vida de tu clúster con la consola de Google Cloud o la CLI de gcloud.

Para inhabilitar la inscripción automática, quita el comentario de la sección spec.gkeOnPremAPI en el archivo de configuración del clúster y establece spec.gkeOnPremAPI.enabled en false antes de crear el clúster. El campo spec.gkeOnPremAPI.enabled puede mutar, por lo que puedes anular la inscripción de 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. Configura 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 en 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:

    En el siguiente archivo de configuración del clúster, se completan los valores que ingresaste en la tabla de planificación de la sección anterior. Además de los valores que ingresaste, ten en cuenta las siguientes diferencias con el archivo de configuración generado:

    • Se quitaron los comentarios de este ejemplo para mejorar la legibilidad.
    • Se quitó la especificación NodePool. No se permiten nodos trabajadores para 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. Reemplaza el contenido del archivo de configuración generado en la 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 reemplaza su contenido con el del ejemplo que verificaste 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 el resultado en la pantalla a medida que ejecuta las verificaciones 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 en la estación de trabajo de administrador.

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

  6. Verifica que el clúster se haya 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 ejecución, la respuesta se verá de la siguiente manera:

    NAME     STATUS  ROLES          AGE  VERSION
    node-01  Ready   control-plane  16h  v1.25.7-gke.1000
  7. Para otorgar 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 trunca 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 otros aspectos, la política de RBAC te permite acceder a tu clúster en la console de Google Cloud para ver más detalles del clúster.

3. Crea un clúster de usuario

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

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

bmctl

Cuando la API de GKE On-Prem (gkeonprem.googleapis.com) está habilitada para tu proyecto, los clústeres creados recientemente se inscriben automáticamente en la API. La inscripción se produce incluso cuando spec.gkeOnPremAPI no se especifica en el archivo de configuración del clúster. Cuando tu clúster esté matriculado con esta API alojada en Google Cloud, puedes usar la consola de Google Cloud o gcloud CLI para administrar el ciclo de vida del clúster.

Para inhabilitar la inscripción automática, quita el comentario de la sección spec.gkeOnPremAPI en el archivo de configuración del clúster y establece spec.gkeOnPremAPI.enabled en false antes de crear el clúster. El campo spec.gkeOnPremAPI.enabled puede mutar, por lo que puedes anular la inscripción de tu clúster en cualquier momento después de que se crea.

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

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

    En el siguiente archivo de configuración del clúster, se completan los valores que ingresaste en la tabla de planificación antes. Además de los valores que ingresaste, ten en cuenta las siguientes diferencias con el archivo de configuración generado:

    • Se quitaron los comentarios de este ejemplo para mejorar la legibilidad.
    • El tipo de clúster, spec.type, se estableció en user.
    • Se agregó el campo spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts para otorgar el clusterrole/cluster-admin a tu cuenta. Entre otros aspectos, este campo te permite acceder a tu clúster en la consola de Google Cloud para ver más detalles del 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. Reemplaza el contenido del archivo de configuración generado en la 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 reemplaza su contenido con el del ejemplo que verificaste en el paso anterior.

  4. Crea el clúster de usuario:

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

    El comando bmctl muestra el resultado en la pantalla a medida que ejecuta las verificaciones 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 en la estación de trabajo de administrador.

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

  5. Verifica que el clúster se haya 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 ejecución, la respuesta se verá de la siguiente manera:

    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

Console

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

  1. En la consola, ve a la página Crea un clúster de Bare Metal.

    Ir a Crea un clúster de Bare Metal

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

  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 mostrará la página Requisitos previos.

  6. En Elige el tipo de clúster, selecciona Crear un clúster de usuario para un clúster de administrador existente.

  7. Haz clic en Siguiente.

Aspectos básicos del clúster

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

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

  3. En Ubicación de la API de GCP, selecciona us-central1.

  4. En Versión de Google Distributed Cloud, selecciona CLUSTER_VERSION o usa la predeterminada. Puedes usar los valores predeterminados para el resto de la configuración en esta página.

  5. Haz clic en Herramientas de redes en la barra de navegación izquierda.

Redes

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

    USER_CP_NODE_IP
    
  2. En la sección Balanceador de cargas, usa el balanceador de cargas predeterminado, Bundled with MetalLB.

  3. Ve a la sección Nuevo grupo de direcciones. Ingresa el rango de direcciones IP en el campo Rango de direcciones IP 1:

    10.200.0.51-10.200.0.70
    
  4. Haz clic en Listo.

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

    USER_CP_VIP
    
  6. Ingresa la dirección IP de la VIP de Ingress:

    USER_INGRESS_VIP
    
  7. En la sección CIDR de servicios y Pods, si no cambiaste los CIDR de servicios y Pods en el planificador, puedes usar los valores predeterminados.

    Si cambiaste los CIDR, ingresa los que deseas usar:

    • CIDR de Service:
    10.96.0.0/20
    
    • CIDR de Pod:
    192.168.0.0/16
    
  8. Haz clic en grupo predeterminado en la barra de navegación de la izquierda.

Crea un grupo de nodos

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

Ingresa la dirección IP del nodo trabajador del clúster de usuario en el campo Dirección de nodos 1:

USER_WORKER_NODE_IP

Crea el clúster

  1. Haz clic en Verify and Create para crear el clúster de usuario.

    La creación del clúster de usuario toma 15 minutos o más. La consola muestra mensajes de estado a medida que verifica la configuración y crea el clúster.

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

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

    Cuando se crea el clúster, se muestra Estado del clúster: en ejecución.

  2. Después de crear el clúster, haz clic en Clústeres para volver a la página Clústeres.

gcloud CLI

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

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

    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
    

    El resultado del comando es similar al 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 averiguar 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. A medida que 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, verás 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. Después de crear 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 nuevo dentro de ese directorio. 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:

    En el siguiente ejemplo de recurso de Terraform, se completan los valores que ingresaste 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 terraform plan:

    terraform init
    

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

  5. Revisa la configuración y realiza cambios si es necesario:

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

    terraform apply
    

    Cuando se te solicite, ingresa yes.

    La creación del clúster de usuario básico y el grupo de nodos tarda unos 15 minutos (o más, según la red).

  7. Para crear un archivo kubeconfig para el clúster de usuario, ejecuta el siguiente comando en la estación de trabajo de 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

    Los TIMESTAMP en el nombre del archivo indican la fecha y hora en que se creó el archivo.

    Debido a que este archivo contiene credenciales de autenticación para tu clúster, debes almacenarlo en una ubicación segura con acceso restringido.

  8. Verifica que el clúster se haya 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 ejecución, la respuesta se verá de la siguiente manera:

    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:

Conéctate al clúster de usuario

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

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

  • Terraform: Tu dirección de correo electrónico 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 electrónico se incluye automáticamente en la página Conceptos básicos del clúster, en la sección Autorización.

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

Las políticas de RBAC que se otorgan a tu dirección de correo electrónico hacen lo siguiente:

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

  • Te permite acceder al clúster en la consola de 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 computadora local con el kubeconfig de la puerta de enlace de conexión.

Para obtener el kubeconfig de la puerta de enlace de conexión, ejecuta los siguientes comandos desde tu computadora local:

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

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

    El resultado es similar a este:

    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 de kubectl a través de la puerta de enlace de conexión:

    kubectl get nodes
    

    El resultado es 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
    

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

¿Qué sigue?