Crea clústeres básicos

Esta página es la segunda parte de una guía en la que se explica el uso del software de Google Distributed Cloud (antes conocido como Google Distributed Cloud Virtual) para crear una pequeña instalación de prueba de concepto de los clústeres de GKE en tu hardware Bare Metal. En la primera parte, Configura la infraestructura mínima, se muestra cómo configurar tu hardware, planificar direcciones IP y configurar la infraestructura de Google 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 un clúster de usuario. Luego, puedes continuar con Crea un servicio y un Ingress.

Esta guía te ayuda a crear una instalación mínima de Google Distributed Cloud. Es posible que esta instalación mínima no sea adecuada para tus casos de uso y necesidades de producción 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 la infraestructura mínima. Como alternativa, usa el planificador de requisitos de red de la sección Requisitos previos del flujo Crea un clúster de administrador de GKE en Bare Metal en la consola de Google Cloud.

  2. Si quieres usar Terraform para crear el clúster de usuario, necesitas Terraform, ya sea 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, vuelve a verificar el ID del proyecto que ingresaste. Si el ID del proyecto es correcto, ejecuta gcloud auth login para acceder a Google Cloud CLI con la cuenta que tiene acceso al proyecto.

    2. Si es la primera vez que habilitas la API de GKE On-Prem en tu proyecto, deberás inicializar la API. Para ello, llama a un comando de gcloud CLI que muestra 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 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 administrador para administrar el 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 la infraestructura mínima o del planificador de red para completar cada marcador de posición en la siguiente tabla. Los marcadores de posición corresponden a los valores de campo 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 completados previamente del archivo de configuración del clúster generado, pero todos los marcadores de posición son editables.

Información básica del clúster
El nombre del clúster de administrador que creas. La ubicación y el nombre de los artefactos del clúster en la estación de trabajo de administrador se basan en el nombre del clúster. El espacio de nombres del clúster deriva del nombre del clúster. ADMIN_CLUSTER_NAME
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 de administrador se basan en el nombre del clúster. El espacio de nombres del clúster deriva del nombre del clúster. USER_CLUSTER_NAME
Es 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 la estación de trabajo de administrador. De forma predeterminada, la ruta es
/home/USERNAME/.ssh/id_rsa.
SSH_PRIVATE_KEY_PATH
El ID del proyecto de Google Cloud que deseas usar para conectar tu clúster a Google Cloud y ver registros y métricas. Este proyecto también se conoce como el proyecto host de flota. PROJECT_ID
La dirección de correo electrónico que está 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
Rango de diez direcciones IP para usar como direcciones IP externas para Services de tipo LoadBalancer. Ten en cuenta que este rango incluye la VIP de entrada, que es requerida por MetalLB. Ninguna otra dirección IP puede superponerse a este rango. START_IP-END_IP
CIDR de Pod y Service
Rango de direcciones IP en notación de bloques CIDR para que las usen los Pods en el clúster de administrador. El valor de inicio 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
Rango de direcciones IP en notación de bloques CIDR para que las usen los servicios en el clúster de administrador. El valor de inicio 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
Rango de direcciones IP en notación de bloques CIDR para que las usen los Pods en el clúster de usuario. El valor inicial recomendado, que está completado 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
Rango de direcciones IP en notación de bloques CIDR para que las usen los servicios en el clúster de usuario. El valor inicial recomendado, que está completado 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

Mediante los siguientes pasos, se crea un clúster de administrador para una instalación mínima de clústeres de administrador y de usuario. Asegúrate de proporcionar valores para cada marcador de posición en la tabla de la sección anterior Recopilar información antes de continuar.

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

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 es mutable, por lo que puedes dar de baja tu clúster en cualquier momento después de su creación.

Para crear un clúster de administrador para la instalación mínima, haz lo siguiente:

  1. Establece 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 del clúster, ejecuta el siguiente comando desde el directorio /baremetal en la 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 del clúster se completa con 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 respecto al archivo de configuración generado:

    • Se quitaron los comentarios de esta muestra 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 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 reemplaza su contenido por el de la muestra que verificaste en el paso anterior.

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

    bmctl create cluster -c ADMIN_CLUSTER_NAME
    

    El comando bmctl muestra el resultado en la pantalla mientras ejecuta las comprobaciones preliminares 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 de administrador.

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

  6. Verifica que tu clúster se haya creado y esté en ejecución:

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

    Si se está ejecutando el clúster, la respuesta debería ser similar a la siguiente:

    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 otras cosas, la política de RBAC te permite acceder a tu clúster en la consola de Google Cloud para ver más detalles del clúster.

3. Crea un clúster de usuario

Mediante los siguientes pasos, se crea un clúster de usuario para una instalación mínima de clústeres de administrador y de usuario. Asegúrate de proporcionar valores para cada marcador de posición en la tabla de la sección Recopilar información anterior antes de continuar.

Para crear un clúster de usuario para la instalación mínima, haz lo siguiente:

bmctl

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

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 es mutable, por lo que puedes dar de baja tu clúster en cualquier momento después de su creación.

  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:

    El siguiente archivo de configuración del clúster se completa con 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 respecto al archivo de configuración generado:

    • Se quitaron los comentarios de esta muestra 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 clusterrole/cluster-admin a tu cuenta. Entre otras cosas, 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 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 reemplaza su contenido por el de la muestra 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 mientras ejecuta las comprobaciones preliminares 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 de administrador.

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

  5. Verifica que tu clúster se haya creado y esté en ejecución:

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

    Si se está ejecutando el clúster, la respuesta debería ser similar a la 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
    

Console

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

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

    Ir a Crea un clúster de GKE en 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. Aparecerá la página Requisitos previos.

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

  7. Haz clic en Siguiente.

Conceptos básicos del clúster

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

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

  3. En GCP API Location, selecciona us-central1.

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

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

Herramientas de redes

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

    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 para la VIP del plano de control:

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

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

    Si cambiaste los CIDR, ingresa los que deseas utilizar:

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

Crear 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 grupos de nodos trabajadores que se crean 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 Verificar y crear para crear el clúster de usuario.

    La creación del clúster de usuario lleva 15 minutos o más. En la consola, se muestran mensajes de estado mientras 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 debería ser lo suficientemente claro como para que puedas solucionar el problema y volver a crear el clúster.

    Si quieres ver información adicional sobre el proceso de creación, haz clic en Mostrar detalles para mostrar 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.

    El clúster de capturas de pantalla está listo

  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 gcloud CLId.

  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 alrededor de 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 cree el clúster, verás un resultado como el 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 los siguientes vínculos:

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:

    El siguiente ejemplo de recurso de Terraform se completa con 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.

    Toma alrededor de 15 minutos (o más, según tu red) crear el clúster de usuario y el grupo de nodos básicos.

  7. Si deseas 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 para el clúster de usuario, por ejemplo:

    bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig
    

    El TIMESTAMP en el nombre del archivo indica 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 tu 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 se está ejecutando el clúster, la respuesta debería ser similar a la 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
    

Para obtener más información y otros ejemplos, consulta los siguientes vínculos:

Conéctate al clúster de usuario

Sin importar qué herramienta 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 funciones (RBAC) que te permiten conectarte al clúster con privilegios administrativos completos. La ubicación en la que se especifique 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 Aspectos 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 de administrador al clúster a otros usuarios.

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

  • Otorgando el rol clusterrole/cluster-admin de Kubernetes en el clúster

  • 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 en la consola.

  • Te permite ejecutar comandos de kubectl en tu computadora local mediante el kubeconfig de la puerta de enlace de conexión.

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

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

    kubectl get nodes
    

    El resultado es 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 kubectl requieren el kubeconfig para el clúster de administrador. Deberás ejecutar esos comandos en la estación de trabajo de administrador.

¿Qué sigue?