Crea clústeres de administrador y de usuario de demostración de Google Distributed Cloud en VMs de Compute Engine

Aprende sobre Google Distributed Cloud (solo software) para equipos físicos creando clústeres de demostración en máquinas virtuales (VM) de Compute Engine. En este instructivo, ejecutarás un script que hace lo siguiente:

  • Aprovisiona cinco VMs de Compute Engine para instalar tus clústeres de demostración
  • Configura una red de VPC para proporcionar conectividad de clúster

Después de que la secuencia de comandos aprovisione los recursos necesarios, usa uno de los siguientes clientes para crear un clúster de administrador y un clúster de usuario complementario que pueda alojar cargas de trabajo: bmctl, Google Cloud consola, Google Cloud CLI o Terraform. Completar este instructivo puede tardar entre 40 minutos y una hora.

Descripción general del procedimiento

En este instructivo, completarás los siguientes pasos:

  1. Prepara tu entorno local para que la secuencia de comandos tenga las variables de entorno necesarias y hayas recopilado la información básica para ejecutar comandos.

  2. Crea las VMs y la red con la secuencia de comandos descargada.

  3. Crea el clúster de administrador con uno de los clientes compatibles.

  4. Crea el clúster de usuario con uno de los clientes admitidos.

  5. Realiza una limpieza para quitar los clústeres y las VMs que creaste con esta guía.

1. Prepara el entorno local

Como esta guía usa una secuencia de comandos que configura la red por ti, no necesitas recopilar mucha información ni hacer ninguna planificación. En los siguientes pasos, se configura tu entorno local y se recopila la información básica que necesitas en las secciones posteriores de la guía:

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Toma nota del ID del proyecto, ya que lo necesitarás para establecer una variable de entorno que se usa en la secuencia de comandos y los comandos de esta página. Si seleccionaste un proyecto existente, asegúrate de ser propietario o editor del proyecto.
  7. Puedes ejecutar la secuencia de comandos en Cloud Shell o en tu máquina local que ejecuta Linux o macOS. Si usas una máquina local, asegúrate de que tu entorno tenga instaladas las herramientas necesarias:
    1. Asegúrate de haber instalado la versión más reciente de Google Cloud CLI, la herramienta de línea de comandos para interactuar con Google Cloud. Actualiza los componentes de gcloud CLI, si es necesario:
      gcloud components update

      Según cómo se haya instalado gcloud CLI, es posible que veas el siguiente mensaje:

      You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation:

      Sigue las instrucciones para copiar y pegar el comando para actualizar los componentes.

    2. Asegúrate de tener instalado kubectl:
      kubectl
      Deberías ver la información de uso de kubectl. Si el comando no está disponible, instala kubectl:
      gcloud components install kubectl
  8. Asegúrate de que tu proyecto tenga una red de VPC llamada "default".

    Si no tienes una red de VPC "predeterminada", la secuencia de comandos de la siguiente sección no podrá aprovisionar los recursos necesarios. A menos que decidas borrarla o restringirla, cada proyecto nuevo comienza con una red de VPC en modo automático llamada "predeterminada" que debería funcionar con la secuencia de comandos. Para obtener más información, consulta Redes de VPC.

  9. Asegúrate de que no se apliquen las siguientes restricciones de política de la organización:
    • constraints/iam.disableServiceAccountKeyCreation
    • constraints/compute.vmCanIpForward
    • constraints/compute.requireShieldedVm
    • constraints/compute.vmExternalIpAccess

    Si se aplican estas restricciones, la secuencia de comandos de la siguiente sección no podrá aprovisionar los recursos necesarios. En el caso de un proyecto nuevo, estas restricciones se establecen como Inactivas (no se aplican) de forma predeterminada. Para obtener más información, consulta Restricciones de las políticas de la organización.

  10. Configura variables de entorno:
    export PROJECT_ID=PROJECT_ID
    export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME
    export ON_PREM_API_REGION=ON_PREM_API_REGION
    export ZONE=ZONE
    • ADMIN_CLUSTER_NAME: el nombre que eliges para el clúster de administrador
    • ON_PREM_API_REGION: Es la región Google Cloud en la que se ejecuta la API de GKE On-Prem y se almacenan sus metadatos. Especifica us-central1 o alguna otra región compatible.
    • ZONE: Es la Google Cloud zona en la que se crean las VMs de Compute Engine. Puedes usar us-central1-a o cualquiera de las otras zonas de Compute Engine.
  11. Ejecuta los siguientes comandos para establecer el proyecto y la zona predeterminados.
    gcloud config set project $PROJECT_ID
    gcloud config set compute/zone $ZONE

    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 gcloud CLI con la cuenta que tiene acceso al proyecto.

  12. Obtén una lista de las versiones compatibles que puedes instalar:
    gcloud container bare-metal admin-clusters query-version-config \
        --location=ON_PREM_API_REGION
  13. Selecciona una versión del resultado del comando anterior y configúrala en una variable de entorno:
    export BMCTL_VERSION=BMCTL_VERSION

    Te recomendamos que selecciones la versión compatible más alta para obtener las funciones y correcciones más recientes de Google Distributed Cloud.

2. Crea las VMs y la red

En esta sección, descargarás y ejecutarás la secuencia de comandos install_admin_cluster.sh.

  1. Clona el repositorio de anthos-samples y cambia al directorio en el que se encuentra el script:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-bash
    
  2. Ejecuta la secuencia de comandos:

    bash install_admin_cluster.sh
    
  3. En el símbolo del sistema, ingresa 2 para configurar solo la infraestructura de Compute Engine y confirma tu selección cuando se te solicite.

    La secuencia de comandos crea VMs de Compute Engine, crea una red VXLAN y configura la estación de trabajo de administrador y los nodos del clúster. La configuración de esta infraestructura tarda alrededor de 5 minutos.

    Para obtener más información sobre la secuencia de comandos, haz clic en el siguiente vínculo:

    Acerca de la secuencia de comandos

    Puedes ver la secuencia de comandos en la carpeta anthos-bm-gcp-bash del repositorio de GitHub anthos-samples. La secuencia de comandos hace lo siguiente:

    1. Habilita las siguientes Google Cloud APIs:
      anthos.googleapis.com
      anthosaudit.googleapis.com
      anthosgke.googleapis.com
      cloudresourcemanager.googleapis.com
      connectgateway.googleapis.com
      container.googleapis.com
      compute.googleapis.com
      gkeconnect.googleapis.com
      gkehub.googleapis.com
      gkeonprem.googleapis.com
      serviceusage.googleapis.com
      stackdriver.googleapis.com
      monitoring.googleapis.com
      logging.googleapis.com
      kubernetesmetadata.googleapis.com
      iam.googleapis.com
      opsconfigmonitoring.googleapis.com
    2. En lugar de crear varias cuentas de servicio para diferentes APIs y servicios, la secuencia de comandos crea una sola cuenta de servicio llamada baremetal-gcr y le otorga los siguientes roles de IAM:
      • roles/gkehub.admin
      • roles/gkehub.connect
      • roles/logging.logWriter
      • roles/monitoring.dashboardEditor
      • roles/monitoring.metricWriter
      • roles/monitoring.viewer
      • roles/opsconfigmonitoring.resourceMetadata.writer
      • roles/serviceusage.serviceUsageViewer
      • roles/stackdriver.resourceMetadata.writer
    3. Se crean las siguientes VMs:
      • Una VM para la estación de trabajo de administrador
      • Una VM para el nodo del plano de control del clúster de administrador
      • Dos VMs para los nodos trabajadores del clúster de usuario
      • Una VM para el nodo del plano de control del clúster de usuario
    4. Verifica que SSH esté habilitado en todas las VMs y que la estación de trabajo de administrador tenga acceso SSH a todas las demás VMs que se crearon para los nodos del clúster.
    5. Crea una red superpuesta de LAN extensible virtual (VXLAN) para la conectividad de capa 2 entre las VMs. La VXLAN no es persistente, por lo que, si reinicias una instancia de VM, la red se destruye. La red está configurada para estar en la subred 10.200.0.0/24. La conectividad de capa 2 es un requisito para el balanceador de cargas incluido.
    6. Instala las siguientes herramientas en la estación de trabajo de administrador:
      • bmctl
      • kubectl
      • Docker

      La secuencia de comandos también descarga la clave de la cuenta de servicio baremetal-gcr en la estación de trabajo del administrador.

    7. Para garantizar que root@10.200.0.x funcione desde la estación de trabajo de administrador, haz lo siguiente:
      1. Genera una clave SSH nueva en la estación de trabajo de administrador.
      2. Agregar la clave pública a todas las otras VM de la implementación.

    La secuencia de comandos genera cada comando que ejecuta y su estado. Cuando finalice, la secuencia de comandos mostrará lo siguiente:

    ✅ Successfully set up SSH access from admin workstation to cluster node VMs.
    
    ✅ GCE Infrastructure setup complete. Please check the logs for any errors!!!
    
    ✅ If you do not see any errors in the output log, then you now have the following setup:
    
    |---------------------------------------------------------------------------------------------------------|
    | VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
    |---------------------------------------------------------------------------------------------------------|
    | abm-admin-cluster-cp  | 10.200.0.3            | 🌟 Ready for use as control plane for the admin cluster |
    | abm-user-cluster-cp   | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
    | abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
    | abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
    |---------------------------------------------------------------------------------------------------------|
    

3. Crea el clúster de administrador:

bmctl

Para crear un clúster de administrador con bmctl, accede a la VM de la estación de trabajo de administrador en una ventana de terminal y ejecuta comandos desde allí:

  1. Usa SSH para acceder a la VM de la estación de trabajo de administrador, abm-ws, como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. Configura tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):

    gcloud auth application-default login
    

    Sigue las indicaciones para seleccionar tu Cuenta de Google para ADC.

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

    bmctl create config -c ADMIN_CLUSTER_NAME --project-id=PROJECT_ID
    
  4. 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 proporcionaste anteriormente. 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.
    • La secuencia de comandos crea una sola cuenta de servicio con todos los permisos necesarios y descarga la clave bm-gcr.json a la que se hace referencia en el archivo de configuración.
    gcrKeyPath: /root/bm-gcr.json
    sshPrivateKeyPath: /root/.ssh/id_rsa
    gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json
    gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json
    cloudOperationsServiceAccountKeyPath: /root/bm-gcr.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: BMCTL_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: 10.200.0.3
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: 10.200.0.48
      clusterOperations:
        projectID: PROJECT_ID
        location: ON_PREM_API_REGION
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 110
    
  5. Reemplaza el contenido del archivo de configuración generado en tu estación de trabajo de administrador por el contenido de la muestra anterior.

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

  6. Crea el clúster 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/abm-user-cluster-metallb/log de la estación de trabajo de administrador.

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

  7. En la consola, ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

    Asegúrate de que esté seleccionado el proyecto en el que creaste el clúster de usuarios. Deberías ver el clúster de administrador en la lista.

  8. Accede al clúster de administrador:

    1. Haz clic en el vínculo del nombre del clúster y, en el panel lateral, haz clic en Acceder.

    2. Selecciona Usa tu identidad de Google para acceder

    3. Haga clic en Acceder.

Verifica el clúster de administrador

Puedes encontrar el archivo kubeconfig de tu clúster de administrador en la estación de trabajo de administrador en el directorio bmctl-workspace de la cuenta raíz. Para verificar tu implementación, completa los siguientes pasos.

  1. Usa SSH para acceder a la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. Verifica que se haya creado el clúster de administrador y que esté en ejecución:

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

    El resultado es similar a este:

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. Cuando termines de explorar, ingresa exit para desconectarte de la estación de trabajo del administrador.

Console

Para crear un clúster de administrador en la consola, debes ejecutar bmctl register bootstrap desde la VM de la estación de trabajo de administrador para crear un clúster de arranque. Mientras se ejecuta el comando bmctl register bootstrap, debes realizar pasos en la consola para crear el clúster de administrador.

Conceptos básicos del entorno de arranque

  1. En la consola de Google Cloud , ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

  2. Haz clic en Crear.

  3. En el diálogo Create a cluster, selecciona On-premises y haz clic en Configure para Bare Metal.

  4. Asegúrate de seleccionar PROJECT_ID en la lista de proyectos.

  5. En la barra de navegación izquierda, haz clic en Install bootstrap environment.

  6. Ingresa ADMIN_CLUSTER_NAME como el nombre del clúster de administrador.

  7. Selecciona BMCTL_VERSION como la versión de tu clúster de administrador. La secuencia de comandos descargó esta versión de la herramienta de línea de comandos de bmctl en la estación de trabajo de administrador. La versión de Google Distributed Cloud que instales debe coincidir con la versión de bmctl.

  8. En el campo Ubicación de la API de Google Cloud, selecciona ON_PREM_API_REGION en la lista. Este parámetro de configuración especifica la región en la que se ejecuta la API de GKE On-Prem y la región en la que se almacena lo siguiente:

    • Los metadatos del clúster que la API de GKE On-Prem necesita para administrar el ciclo de vida del clúster
    • Los datos de Cloud Logging y Cloud Monitoring de los componentes del sistema
    • El registro de auditoría de administrador creado por los registros de auditoría de Cloud

    El nombre, el proyecto y la ubicación del clúster juntos identifican de forma única el clúster en Google Cloud.

Usa los pasos de la siguiente sección en lugar de los que se muestran en la consola para crear el clúster de arranque. Deja la página de la consola abierta, ya que continuarás allí para crear el clúster de administrador.

Crea el clúster de arranque

Cuando usas un cliente de API de GKE On-Prem, como la consola, para crear un clúster de administrador, debes crear un clúster de arranque en la estación de trabajo del administrador. El clúster de arranque aloja los controladores de Kubernetes necesarios para crear el clúster de administrador.

  1. Desde la línea de comandos, usa SSH para acceder a la VM de la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Puedes ignorar los mensajes sobre la actualización de la VM y completar este instructivo. Si planeas mantener las VMs como entorno de pruebas, te recomendamos que actualices el SO o que cambies a la siguiente versión, como se describe en la documentación de Ubuntu.

  2. Configura tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):

    gcloud auth application-default login
    

    Sigue las indicaciones para seleccionar tu Cuenta de Google para ADC.

  3. Cambia al directorio baremetal/ y ejecuta el siguiente comando para crear el clúster de arranque.

    El nombre del clúster de arranque se obtiene anteponiendo bootstrap- al nombre del clúster de administrador.

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

    Después de que bmctl cree correctamente el clúster de arranque, verás un resultado similar al siguiente:

    [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
    [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
    [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
    

Crea el clúster de administrador:

  1. En la página Instalar el entorno de arranque, en la sección Inicia el entorno desde la estación de trabajo de administrador, haz clic en Revisar conexión.

    Si se realiza de forma correcta, la consola mostrará Se estableció la conexión.

    Debes establecer la conexión con el clúster de arranque antes de continuar. Si no se establece la conexión, verifica los argumentos que especificaste para el comando bmctl register bootstrap:

    • Asegúrate de que el valor de --name coincida con el nombre de arranque derivado que se muestra en la sección Aspectos básicos del entorno de arranque.

    • Asegúrate de que el valor de --project-id coincida con el ID del proyecto que seleccionaste en la consola.

    Si necesitas cambiar el nombre del clúster de inicialización o el ID del proyecto, ingresa Ctrl-C para salir de bmctl register bootstrap y vuelve a ejecutar el comando.

Herramientas de redes

  1. Haz clic en Networking en la barra de navegación izquierda.

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

    10.200.0.3
    

    Esta es la dirección IP de la VM abm-admin-cluster-cp en la VXLAN creada por la secuencia de comandos.

  3. En la sección Balanceador de cargas, asegúrate de que esté seleccionada la opción Paquetes.

  4. En la sección IP virtuales (VIP), ingresa lo siguiente en el campo VIP del plano de control:

    10.200.0.48
    

    El siguiente paso depende de la disponibilidad del clúster de arranque. El comando bmctl register bootstrap en la ventana de terminal debe ejecutarse durante algunos minutos antes de que el clúster de arranque se muestre como miembro registrado. Si, después de unos minutos, aún no está disponible, verifica el nombre del clúster de arranque y el ID del proyecto que usaste. Si necesitas cambiar el nombre del clúster de inicialización o el ID del proyecto, ingresa Ctrl-C en la otra ventana de terminal para salir de bmctl register bootstrap y volver a ejecutar el comando.

  5. Haz clic en Verificar y crear.

    La consola muestra mensajes de estado a medida que verifica la configuración y crea el clúster.

    Cuando se crea el clúster de administrador, se borra el clúster de arranque en la estación de trabajo de administrador. El resultado del comando bmctl register bootstrap en la otra ventana de terminal es similar al siguiente:

    ...
    [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
    [2024-04-15 23:16:38+0000] Please run
    [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
    [2024-04-15 23:16:38+0000] to get cluster nodes status.
    [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
    [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
    [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
    [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
    [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
    [2024-04-15 23:24:30+0000] Flushing logs... OK
    [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
    [2024-04-15 23:24:30+0000] Deleting membership... OK
    [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
    

Verifica el clúster de administrador

Puedes encontrar el archivo kubeconfig de tu clúster de administrador en la estación de trabajo de administrador en el directorio bmctl-workspace de la cuenta raíz. Para verificar tu implementación, completa los siguientes pasos.

  1. Usa SSH para acceder a la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. Verifica que se haya creado el clúster de administrador y que esté en ejecución:

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

    El resultado es similar a este:

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. Cuando termines de explorar, ingresa exit para desconectarte de la estación de trabajo del administrador.

gcloud CLI

Las siguientes instrucciones requieren dos ventanas de terminal. En una ventana de terminal, ejecuta bmctl register bootstrap para crear un clúster de arranque. Mientras se ejecuta el comando bmctl register bootstrap, debes ejecutar gcloud container bare-metal admin-clusters create en otra ventana de terminal para crear el clúster de administrador.

Crea el clúster de arranque

Cuando usas un cliente de API de GKE On-Prem, como gcloud CLI, para crear un clúster de administrador, debes crear un clúster de arranque en la estación de trabajo del administrador. El clúster de arranque aloja los controladores de Kubernetes necesarios para crear el clúster de administrador.

  1. Desde la línea de comandos, usa SSH para acceder a la VM de la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Puedes ignorar los mensajes sobre la actualización de la VM y completar este instructivo. Si planeas mantener las VMs como entorno de pruebas, te recomendamos que actualices el SO o que cambies a la siguiente versión, como se describe en la documentación de Ubuntu.

  2. Configura tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):

    gcloud auth application-default login
    

    Sigue las indicaciones para seleccionar tu Cuenta de Google para ADC.

  3. Cambia al directorio baremetal/ y ejecuta el siguiente comando para crear el clúster de arranque.

    El nombre del clúster de arranque se obtiene anteponiendo bootstrap- al nombre del clúster de administrador.

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

    Después de que bmctl cree correctamente el clúster de arranque, verás un resultado similar al siguiente:

    [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
    [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
    [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
    

Crea el clúster de administrador:

  1. En una ventana de terminal nueva, confirma que el clúster de inicio se haya registrado como miembro de la flota:

    gcloud container fleet memberships list \
        --project=PROJECT_ID
    

    El comando gcloud container bare-metal admin-clusters create del siguiente paso depende de la disponibilidad del clúster de arranque. El comando bmctl register bootstrap en la otra ventana de terminal debe ejecutarse durante unos minutos antes de que el clúster de arranque se muestre como miembro registrado. Si, después de unos minutos, aún no aparece en la lista, verifica el nombre del clúster de arranque y el ID del proyecto que usaste. Si necesitas cambiar el nombre del clúster de inicialización o el ID del proyecto, ingresa Ctrl-C en la otra ventana de terminal para salir de bmctl register bootstrap y volver a ejecutar el comando.

  2. Crea el clúster de administrador con el balanceador de cargas incluido:

    Asegúrate de que los valores que especifiques coincidan con las variables de entorno que especificaste anteriormente para la secuencia de comandos.

    gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION \
        --version=BMCTL_VERSION \
        --max-pods-per-node=110 \
        --control-plane-vip=10.200.0.48 \
        --control-plane-load-balancer-port=443 \
        --control-plane-node-configs node-ip=10.200.0.3 \
        --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
        --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
        --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
    

    Con este comando, tendrá que hacer lo siguiente:

    • --control-plane-vip se configura como 10.200.0.48. Esta es la IP virtual (VIP) en el balanceador de cargas para el servidor de la API de Kubernetes del clúster.

    • --control-plane-node-configs: El node-ip se configura como 10.200.0.3 Esta es la dirección IP de la VM abm-admin-cluster-cp en la VXLAN creada por la secuencia de comandos.

    Para obtener una lista completa de las marcas y sus descripciones, consulta la referencia de la gcloud CLI.

    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. Para averiguar el estado de la operación, ejecuta el siguiente comando en otra ventana de terminal:

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

    Cuando el comando gcloud container bare-metal admin-clusters create se completa correctamente, el resultado es similar al siguiente:

    Created Anthos on bare metal Admin Cluster
    [https://gkeonprem.googleapis.com/v1/projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-gcloud-001].
    NAME           LOCATION     VERSION           MEMBERSHIP     STATE
    abm-cluster-1  us-central1      1.31.300-gke.81 abm-cluster-1  RUNNING
    

    Cuando se crea el clúster de administrador, se borra el clúster de arranque en la estación de trabajo de administrador. El resultado del comando bmctl register bootstrap en la otra ventana de terminal es similar al siguiente:

    ...
    [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
    [2024-04-15 23:16:38+0000] Please run
    [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
    [2024-04-15 23:16:38+0000] to get cluster nodes status.
    [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
    [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
    [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
    [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
    [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
    [2024-04-15 23:24:30+0000] Flushing logs... OK
    [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
    [2024-04-15 23:24:30+0000] Deleting membership... OK
    [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
    

Verifica el clúster de administrador

Puedes encontrar el archivo kubeconfig de tu clúster de administrador en la estación de trabajo de administrador en el directorio bmctl-workspace de la cuenta raíz. Para verificar tu implementación, completa los siguientes pasos.

  1. Usa SSH para acceder a la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. Verifica que se haya creado el clúster de administrador y que esté en ejecución:

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

    El resultado es similar a este:

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. Cuando termines de explorar, ingresa exit para desconectarte de la estación de trabajo del administrador.

Terraform

Las siguientes instrucciones requieren dos ventanas de terminal. En una ventana de terminal, ejecuta bmctl register bootstrap para crear un clúster de arranque. Mientras se ejecuta el comando bmctl register bootstrap, debes ejecutar los comandos de Terraform en otra ventana de terminal para crear el clúster de administrador.

Modifica los archivos de muestra del clúster de usuario para que funcionen en un clúster de administrador

El repositorio anthos-samples no incluye una muestra específica para crear un clúster de administrador de Google Distributed Cloud. En los siguientes pasos, se muestra cómo crear un clúster de administrador modificando una muestra existente de Terraform de un clúster de usuario.

  1. En el directorio en el que clonaste anthos-samples, ejecuta el siguiente comando para copiar los archivos de muestra del clúster de usuario de MetalLB en una carpeta nueva para tu clúster de administrador:

    cp -r anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb \
        anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
    
  2. Cambia al directorio abm_admin_cluster_basic:

    cd anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
    
  3. Edita los archivos de Terraform:

    • variables.tf:

      • Define una variable para las direcciones IP del nodo del plano de control (aunque solo usamos una para esta demostración). Esta variable debería ser similar a la entrada variable "control_plane_ips" { ... }.

      • Define una variable para la dirección VIP del plano de control. Esta variable debe ser similar a la entrada variable "control_plane_vip" { ... }.

    • terraform.tfvars:

      • Asigna valores de variables para los siguientes parámetros de configuración del clúster de administrador:

        • Direcciones IP del nodo de plano de control: 10.200.0.3

        • Dirección VIP del plano de control: 10.200.0.48

    • main.tf:

      • Reemplaza el recurso google_gkeonprem_bare_metal_cluster por el recurso google_gkeonprem_bare_metal_admin_cluster.

      • Borra el recurso google_gkeonprem_bare_metal_node_pool y la sección lifecycle relacionada.

      • Actualiza el recurso para que use las variables recién definidas.

    A continuación, se muestra un ejemplo de cómo podría verse el archivo main.tf cuando se edita para crear un clúster de administrador:

    /**
    * Copyright 2023 Google LLC
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    *
    *      http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    */
    
    #[START anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
    
    module "enable_google_apis_primary" {
      source     = "terraform-google-modules/project-factory/google//modules/project_services"
      version    = "~> 14.0"
      project_id = var.project_id
      activate_apis = [
        "anthos.googleapis.com",
        "anthosaudit.googleapis.com",
        "anthosgke.googleapis.com",
        "cloudresourcemanager.googleapis.com",
        "compute.googleapis.com",
        "connectgateway.googleapis.com",
        "container.googleapis.com",
        "file.googleapis.com",
        "gkehub.googleapis.com",
        "iam.googleapis.com",
        "kubernetesmetadata.googleapis.com",
        "logging.googleapis.com",
        "monitoring.googleapis.com",
        "opsconfigmonitoring.googleapis.com",
        "serviceusage.googleapis.com",
        "stackdriver.googleapis.com"
      ]
      disable_services_on_destroy = false
    }
    
    # Enable GKE OnPrem API
    resource "google_project_service" "default" {
      project            = var.project_id
      service            = "gkeonprem.googleapis.com"
      disable_on_destroy = false
    }
    
    # Create a baremetal admin cluster and enroll it with the gkeonprem API
    resource "google_gkeonprem_bare_metal_admin_cluster" "admin-cluster-basic" {
      name                     = var.admin_cluster_name
      description              = "Bare metal admin cluster"
      provider                 = google
      depends_on               = [google_project_service.default]
      location                 = var.region
      bare_metal_version       = var.bare_metal_version
      network_config {
        island_mode_cidr {
          service_address_cidr_blocks = ["0.96.0.0/20"]
          pod_address_cidr_blocks     = ["192.168.0.0/16"]
        }
      }
      node_config {
        max_pods_per_node = 250
      }
      control_plane {
        control_plane_node_pool_config {
          node_pool_config {
            operating_system = "LINUX"
            dynamic "node_configs" {
              for_each = var.admin_cp_ips
              content {
                node_ip = node_configs.value
              }
            }
          }
        }
      }
      load_balancer {
        port_config {
          control_plane_load_balancer_port = 443
        }
        vip_config {
          control_plane_vip = var.admin_cp_vip
        }
      }
      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"
        }
      }
    
      dynamic "security_config" {
        for_each = length(var.admin_user_emails) == 0 ? [] : [1]
        content {
          authorization {
            dynamic "admin_users" {
              for_each = var.admin_user_emails
              content {
                username = admin_users.value
              }
            }
          }
        }
      }
    
      lifecycle {
        ignore_changes = [
          annotations["onprem.cluster.gke.io/user-cluster-resource-link"],
          annotations["alpha.baremetal.cluster.gke.io/cluster-metrics-webhook"],
          annotations["baremetal.cluster.gke.io/operation"],
          annotations["baremetal.cluster.gke.io/operation-id"],
          annotations["baremetal.cluster.gke.io/start-time"],
          annotations["baremetal.cluster.gke.io/upgrade-from-version"]
        ]
      }
    }
    
    #[END anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
    

    Para obtener más información sobre el recurso de Terraform para los clústeres de administrador, consulta google_gkeonprem_bare_metal_admin_cluster en el registro de Terraform.

Crea el clúster de arranque

Cuando usas un cliente de API de GKE On-Prem, como Terraform, para crear un clúster de administrador, debes crear un clúster de arranque en la estación de trabajo del administrador. El clúster de arranque aloja los controladores de Kubernetes necesarios para crear el clúster de administrador.

  1. Desde la línea de comandos, usa SSH para acceder a la VM de la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Puedes ignorar los mensajes sobre la actualización de la VM y completar este instructivo. Si planeas mantener las VMs como entorno de pruebas, te recomendamos que actualices el SO o que cambies a la siguiente versión, como se describe en la documentación de Ubuntu.

  2. Configura tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):

    gcloud auth application-default login
    

    Sigue las indicaciones para seleccionar tu Cuenta de Google para ADC.

  3. Cambia al directorio baremetal/ y ejecuta el siguiente comando para crear el clúster de arranque.

    El nombre del clúster de arranque se obtiene anteponiendo bootstrap- al nombre del clúster de administrador.

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

    Después de que bmctl cree correctamente el clúster de arranque, verás un resultado similar al siguiente:

    [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
    [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
    [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
    

Crea el clúster de administrador:

  1. Inicializa y crea terraform plan:

    terraform init
    

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

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

    terraform plan
    
  3. Aplica el plan de Terraform para crear el clúster de administrador:

    terraform apply
    

    La creación del clúster de administrador toma 15 minutos o más. Cuando se complete la creación del clúster, verás un mensaje como el siguiente:

    ...
    google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Still creating... [20m10s elapsed]
    google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Creation complete after 20m11s
    [id=projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-terra002]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    

    Cuando se crea el clúster de administrador, se borra el clúster de arranque en la estación de trabajo de administrador. El resultado del comando bmctl register bootstrap en la otra ventana de terminal es similar al siguiente:

    ...
    [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
    [2024-04-15 23:16:38+0000] Please run
    [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
    [2024-04-15 23:16:38+0000] to get cluster nodes status.
    [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
    [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
    [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
    [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
    [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
    [2024-04-15 23:24:30+0000] Flushing logs... OK
    [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
    [2024-04-15 23:24:30+0000] Deleting membership... OK
    [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
    

  4. En la consola, ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

    Asegúrate de que esté seleccionado el proyecto en el que creaste el clúster de usuarios. Deberías ver el clúster de administrador en la lista.

  5. Accede al clúster de administrador:

    1. Haz clic en el vínculo del nombre del clúster y, en el panel lateral, haz clic en Acceder.

    2. Selecciona Usa tu identidad de Google para acceder

    3. Haga clic en Acceder.

Verifica el clúster de administrador

Puedes encontrar el archivo kubeconfig de tu clúster de administrador en la estación de trabajo de administrador en el directorio bmctl-workspace de la cuenta raíz. Para verificar tu implementación, completa los siguientes pasos.

  1. Usa SSH para acceder a la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. Verifica que se haya creado el clúster de administrador y que esté en ejecución:

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

    El resultado es similar a este:

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. Cuando termines de explorar, ingresa exit para desconectarte de la estación de trabajo del administrador.

4. Crea el clúster de usuario

Puedes usar la consola de Google Cloud , Google Cloud CLI o Terraform para crear el clúster de usuarios. Para simplificar, usa abm-user-cluster-metallb para el nombre del clúster del usuario, de modo que coincida con el nombre hard-coded en las secuencias de comandos de Terraform.

bmctl

  1. Usa SSH para acceder a la VM de la estación de trabajo de administrador, abm-ws, como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. Genera un archivo de configuración del clúster:

    bmctl create config -c abm-user-cluster-metallb \
        --project-id=PROJECT_ID
  3. En el siguiente archivo de configuración del clúster de usuario, configura tu dirección de correo electrónico en la sección clusterSecurity y verifica el resto de los parámetros de configuración:

    El siguiente archivo de configuración del clúster se completa con los valores que ingresaste en la tabla de planificación anteriormente. 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 sección de credenciales, como es normal para los clústeres de usuario.
    • El tipo de clúster, spec.type, se estableció en user.
    • Se agregó el campo spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts para otorgar el rol clusterrole/cluster-admin a tu cuenta. Entre otras cosas, este campo te permite acceder a tu clúster en la consola deGoogle Cloud para ver más detalles del clúster.
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-abm-user-cluster-metallb
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: abm-user-cluster-metallb
      namespace: cluster-abm-user-cluster-metallb
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: BMCTL_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: 10.200.0.4
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: 10.200.0.50
          ingressVIP: 10.200.0.51
        addressPools:
        - name: pool1
          addresses:
          - 10.200.0.51-10.200.0.70
      clusterOperations:
        projectID: PROJECT_ID
        location: ON_PREM_API_REGION
      clusterSecurity:
        authorization:
          clusterAdmin:
            gcpAccounts:
            - YOUR_EMAIL_ADDRESS
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-abm-user-cluster-metallb
    spec:
      clusterName: abm-user-cluster-metallb
      nodes:
      - address: 10.200.0.5
    
  4. Reemplaza el contenido del archivo de configuración generado en tu estación de trabajo de administrador por el contenido de la muestra anterior.

    Abre el archivo generado, bmctl-workspace/abm-user-cluster-metallb/abm-user-cluster-metallb.yaml, y reemplaza su contenido por el del ejemplo que verificaste en el paso anterior.

  5. Crea el clúster de usuario:

    bmctl create cluster -c abm-user-cluster-metallb \
      --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/abm-user-cluster-metallb/log de la estación de trabajo de administrador.

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

  6. En la consola de Google Cloud , ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

    Asegúrate de que esté seleccionado el proyecto en el que creaste el clúster de usuarios. Deberías ver el clúster de administrador y el de usuario en la lista.

  7. Accede al clúster de usuarios:

    1. Haz clic en el vínculo del nombre del clúster y, en el panel lateral, haz clic en Acceder.

    2. Selecciona Usa tu identidad de Google para acceder

    3. Haga clic en Acceder.

    Repite los mismos pasos para acceder al clúster de administrador.

Console

Completa los siguientes 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 metal desnudo.

    Ir a Crea un clúster de Bare Metal

  2. Asegúrate de que esté seleccionado el proyecto de Google Cloud en el que creaste el clúster de administrador.

  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 Prerequisites.

  6. En Choose your cluster type, selecciona Create a user cluster for an existing admin cluster.

  7. Haz clic en Siguiente.

Aspectos básicos del clúster

  1. Ingresa un nombre para el clúster de usuarios o usa el predeterminado.

  2. Asegúrate de que esté seleccionado el clúster de administrador recién creado. Puedes usar los valores predeterminados para el resto de la configuración de esta página.

  3. Haz clic en Networking en la barra de navegación izquierda.

Herramientas de redes

La secuencia de comandos que ejecutaste para crear VMs y el clúster de administrador también creó una VXLAN de capa 2 con direcciones IP en la subred 10.200.0.0/24.

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

    10.200.0.4
    

    Esta es la dirección IP de la VM abm-user-cluster-cp1 en la VXLAN creada por la secuencia de comandos.

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

  3. En la sección Nuevo grupo de direcciones, ingresa el siguiente 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 siguiente dirección IP en el campo VIP del plano de control:

    10.200.0.50
    
  6. Ingresa la siguiente dirección IP para la VIP de Ingress:

    10.200.0.51
    
  7. Usa las direcciones IP predeterminadas en la sección CIDR de servicios y Pods.

  8. Haz clic en default-pool en la barra de navegación de la izquierda.

Crea un grupo de nodos

Tu clúster de usuario debe tener al menos un grupo de nodos para los nodos trabajadores.

  1. Ingresa la siguiente dirección IP en el campo Dirección de nodos 1:

    10.200.0.5
    

    Esta es la dirección IP de la VM abm-user-cluster-w1 en la VXLAN creada por la secuencia de comandos.

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 mostrar 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. Después de crear el clúster, haz clic en Clústeres para volver a la página Clústeres.

  3. Accede al clúster de usuarios:

    1. Haz clic en el vínculo del nombre del clúster y, en el panel lateral, haz clic en Acceder.

    2. Selecciona Usa tu identidad de Google para acceder

    3. Haga clic en Acceder.

    Repite los mismos pasos para acceder al clúster de administrador.

gcloud CLI

Para crear el clúster de usuario, sigue estos pasos:

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

    gcloud container bare-metal clusters create abm-user-cluster-metallb \
        --project=PROJECT_ID \
        --admin-cluster-membership=projects/PROJECT_ID/locations/ON_PREM_API_REGION/memberships/ADMIN_CLUSTER_NAME \
        --location=ON_PREM_API_REGION \
        --version=BMCTL_VERSION \
        --admin-users=YOUR_EMAIL_ADDRESS \
        --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \
        --control-plane-node-configs='node-ip=10.200.0.4' \
        --control-plane-vip=10.200.0.50 \
        --control-plane-load-balancer-port=443 \
        --ingress-vip=10.200.0.51 \
        --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
        --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
        --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
    

    Después de ejecutar el comando, verás un resultado como el siguiente:

    Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...
    

    En el resultado de ejemplo, la cadena operation-1678304606537-5f668bde5c57e-341effde-b612ff8a es el OPERATION_ID de la operación de larga duración.

  2. Para averiguar el estado de la operación, abre otra ventana de terminal y ejecuta el comando.

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

    Reemplaza OPERATION_ID por la cadena correspondiente del resultado del paso anterior.

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

    Cuando se crea 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/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb].

    Para obtener más información sobre el comando gcloud container bare-metal clusters create, incluidas las descripciones de cada marca, consulta la página container bare-metal clusters create del recurso de clústeres en la referencia de la gcloud CLI.

Crea un grupo de nodos

Después de crear el clúster correctamente, puedes crear un grupo de nodos para el clúster.

Para crear un grupo de nodos, haz lo siguiente:

  1. Ejecuta el siguiente comando para crear un grupo de nodos:

    gcloud container bare-metal node-pools create NODE_POOL_NAME \
        --cluster=abm-user-cluster-metallb \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION \
        --node-configs='node-ip=10.200.0.5'
    

    Reemplaza NODE_POOL_NAME por un nombre para el grupo de nodos.

    Después de ejecutar el comando, deberías ver un resultado como el siguiente:

    Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...
    

    La creación del grupo de nodos tarda alrededor de 5 minutos o menos. Cuando se crea el grupo de nodos, verás un resultado como el siguiente:

    Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb/bareMetalNodePools/NODE_POOL_NAME].
    
  2. Ve a la página Clústeres de Kubernetes en la consola:

    Ir a la página Crear un clúster de Bare Metal

    Asegúrate de que esté seleccionado el proyecto en el que creaste el clúster de usuarios. Deberías ver el clúster de administrador y el de usuario en la lista.

  3. Accede al clúster de usuarios:

    1. Haz clic en el vínculo del nombre del clúster y, en el panel lateral, haz clic en Acceder.

    2. Selecciona Usa tu identidad de Google para acceder

    3. Haga clic en Acceder.

    Repite los mismos pasos para acceder al clúster de administrador.

Terraform

Puedes usar el siguiente ejemplo de configuración básica para crear un clúster de usuario con un balanceador de cargas de MetalLB en paquetes. Para obtener más información, consulta la documentación de referencia de google_gkeonprem_bare_metal_cluster.

  1. En el directorio en el que clonaste anthos-samples, cambia al directorio en el que se encuentra la muestra de Terraform:

    cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
    

    La muestra proporciona un archivo de variables de ejemplo para pasar a main.tf.

  2. Crea una copia del archivo terraform.tfvars.sample.

    cp terraform.tfvars.sample terraform.tfvars
    
  3. Verifica los valores en la siguiente muestra.

    El siguiente archivo de variables de Terraform, terraform.tfvars.sample, ya está completado con direcciones IP y con los valores que ingresaste en las secciones anteriores de esta guía.

    
    project_id          = "PROJECT_ID"
    region              = "ON_PREM_API_REGION"
    admin_cluster_name  = "ADMIN_CLUSTER_NAME"
    bare_metal_version  = "VERSION"
    admin_user_emails   = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
    cluster_name        = "abm-user-cluster-metallb"
    control_plane_ips   = ["10.200.0.4"]
    worker_node_ips     = ["10.200.0.5", "10.200.0.6"]
    control_plane_vip   = "10.200.0.50"
    ingress_vip         = "10.200.0.51"
    lb_address_pools    = [
        { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
    ]
    

    Reemplaza ADMIN_2_EMAIL_ADDRESS por una dirección de correo electrónico asociada a tu cuenta de Google Cloud o quítala cuando edites el archivo de variables.

    Para obtener más información sobre los argumentos de esta muestra para los que configuras variables, consulta Argument Reference en la documentación de Terraform para clústeres de usuarios de Bare Metal.

  4. Reemplaza el contenido de tu copia del archivo de variables por el contenido del ejemplo anterior.

  5. Inicializa y crea terraform plan:

    terraform init
    

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

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

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

    terraform apply
    

    La creación del clúster de usuario toma 15 minutos o más. Puedes ver el clúster en la consola de Google Cloud en la página Clústeres de GKE.

  8. En la consola de Google Cloud , ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

    Asegúrate de que esté seleccionado el proyecto en el que creaste el clúster de usuarios. Deberías ver el clúster de administrador y el de usuario en la lista.

  9. Accede al clúster de usuarios:

    1. Haz clic en el vínculo del nombre del clúster y, en el panel lateral, haz clic en Acceder.

    2. Selecciona Usa tu identidad de Google para acceder

    3. Haga clic en Acceder.

    Repite los mismos pasos para acceder al clúster de administrador.

5. Realiza una limpieza

Sigue las instrucciones que se indican a continuación para quitar los clústeres y las VMs que creaste con esta guía.

Borra el clúster de usuario

bmctl

  • Para borrar el clúster de usuario con bmctl, ejecuta el siguiente comando desde la VM de la estación de trabajo de administrador, abm-ws:

    bmctl reset \
        --cluster abm-user-cluster-metallb \
        --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
    

Console

  1. En la consola, ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

  2. En la lista de clústeres, haz clic en el clúster de usuario.

  3. En el panel Detalles, haz clic en Ver más detalles.

  4. Cerca de la parte superior de la ventana, haz clic en Borrar.

  5. Cuando se te solicite confirmar, ingresa el nombre del clúster y haz clic en Borrar.

  6. Haz clic en en la esquina superior derecha para ver el estado de la eliminación. Es posible que debas actualizar la página para actualizar la lista de clústeres.

gcloud CLI

  • Borra el clúster:

    gcloud container bare-metal clusters delete abm-user-cluster-metallb \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION \
        --force
    

    La marca --force te permite borrar un clúster que tiene grupos de nodos. Sin la marca --force, primero debes borrar los grupos de nodos y, luego, borrar el clúster.

Para obtener información sobre otras marcas, consulta gcloud container bare-metal clusters delete.

Terraform

El comando terraform destroy finaliza los recursos que se crearon cuando ejecutaste terraform apply para crear el clúster de usuario.

  • Ejecuta el siguiente comando desde el directorio en el que se encuentran los archivos de muestra del clúster de usuario de Terraform, como main.tf:

    terraform destroy
    

Espera a que se borre el clúster de usuario antes de borrar el clúster de administrador y las VMs.

Borra el clúster de administrador y las VMs

  1. Da de baja la inscripción del clúster de administrador desde la API de GKE On-Prem:

    gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    
  2. Conéctate a la estación de trabajo de administrador:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  3. Borra el clúster de administrador:

    bmctl reset -c ADMIN_CLUSTER_NAME
    

    bmctl cancela el registro del clúster de la flota y, luego, lo borra. Espera a que se borre el clúster antes de borrar las VMs.

  4. Sal de la estación de trabajo de administrador:

    exit
    
  5. Enumera todas las VM que tienen abm en su nombre:

    gcloud compute instances list | grep 'abm'
    
  6. Verifica que sea seguro borrar todas las VM que contienen abm en el nombre.

    Después de verificar, puedes borrar las VM de abm mediante la ejecución del siguiente comando:

    gcloud compute instances list --format="value(name)" | \
        grep 'abm' | \
        xargs gcloud compute instances delete --quiet --zone ZONE
    
  7. Ejecuta el siguiente comando para borrar la cuenta de servicio y, cuando se te solicite, ingresa y:

    gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    

    ¿Qué sigue?