Crea un clúster de administrador con los clientes de la API de Anthos local

En esta página, se describe cómo crear un clúster de administrador mediante la consola de Google Cloud o Google Cloud CLI (gcloud CLI). Ambos clientes estándar de Google Cloud usan la API de Anthos On-Prem para crear el clúster.

¿Qué es la API de Anthos local?

La API de Anthos On-Prem es una API alojada en Google Cloud que te permite administrar el ciclo de vida de tus clústeres locales mediante Terraform y aplicaciones estándar de Google Cloud. La API de Anthos On-Prem se ejecuta en la infraestructura de Google Cloud. Terraform, la consola y gcloud CLI son clientes de la API y la usan para crear clústeres en tu centro de datos.

Para administrar el ciclo de vida de tus clústeres, la API de Anthos On-Prem debe almacenar metadatos sobre el estado de tu clúster en Google Cloud mediante la región de Google Cloud que especificas cuando creas el clúster. Estos metadatos permiten que la API administre el ciclo de vida del clúster y no incluyen datos específicos de la carga de trabajo.

Cuando creas un clúster con un cliente de la API de Anthos On-Prem, debes especificar un proyecto de Google Cloud. Después de crear el clúster, se registra automáticamente en la flota del proyecto especificado. Este proyecto se conoce como el proyecto host de la flota. El proyecto host de la flota no se puede cambiar después de crear el clúster.

Si lo prefieres, puedes crear un clúster de administrador mediante la creación de un archivo de configuración del clúster de administrador y con bmctl, como se describe en Crea un clúster de administrador.

Si quieres usar la consola o gcloud CLI para administrar el ciclo de vida de los clústeres que se crearon con bmctl, consulta Configura clústeres para que los administre la API de Anthos On-Prem.

Permisos de IAM

Si no eres propietario de un proyecto de Google Cloud, debes pedirle al propietario del proyecto que te otorgue los siguientes roles:

Si deseas acceder a las páginas de GKE Enterprise y Google Kubernetes Engine en la consola, también debes tener roles/container.viewer.

Para obtener información sobre cómo otorgar roles, consulta Administración del acceso a proyectos, carpetas y organizaciones.

Acceso a la línea de comandos

Después de crear el clúster, si deseas usar la puerta de enlace de Connect para ejecutar los comandos de kubectl en el clúster en computadoras que no sean la estación de trabajo de administrador, instala las siguientes herramientas de línea de comandos en la computadora que planeas usar.

  • La versión más reciente de la CLI de gcloud

  • kubectl para ejecutar comandos en clústeres de Kubernetes. Si necesitas instalar kubectl, sigue estas instructions

Elige el cliente para crear el clúster de administrador

Puedes usar la consola o gcloud CLI para crear un clúster de administrador administrado por la API de Anthos On-Prem. Si es la primera vez que instalas GKE en Bare Metal, es posible que la consola te resulte más fácil de usar que gcloud CLI.

Después de familiarizarte más con la información que debes proporcionar para crear clústeres, gcloud CLI puede resultarte más conveniente, ya que puedes guardar el comando con sus argumentos en un archivo de texto. Si usas una herramienta de CI/CD, como Cloud Build, puedes usar los comandos gcloud para crear un clúster y especificar la marca --impersonate-service-account a fin de automatizar la creación.

Requisitos previos

Consola

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

    Ir a la página Clústeres de GKE Enterprise

  2. Selecciona el proyecto de Google Cloud en el que deseas crear el clúster. El proyecto seleccionado también se usa como el proyecto host de la flota.

  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. Asegúrate de que la opción Crear un clúster de administrador esté seleccionada.

En la página Requisitos previos, se muestran los requisitos de tu estación de trabajo de administrador y las máquinas de nodos del clúster. El planificador de direcciones IP en la sección Requisitos de red te ayuda a planificar las direcciones IP necesarias para una instalación mínima de un clúster de administrador y un clúster de usuario.

Requisitos de la estación de trabajo de administrador

Expande esta sección a fin de mostrar los requisitos de hardware, sistema operativo y conectividad para la estación de trabajo de administrador.

Requisitos previos de la máquina del nodo del clúster

Expande esta sección a fin de mostrar los requisitos de hardware, sistema operativo y conectividad para las máquinas del nodo del clúster.

Requisitos de red

Esta sección te ayuda a planificar las direcciones IP que necesitas para un entorno mínimo. De manera opcional, en la sección IP del nodo y direcciones IP virtuales, puedes proporcionar una dirección IP de nodo de inicio y una dirección IP virtual (VIP), y la consola mostrará una tabla de las direcciones IP que necesitas. Estas direcciones IP no se aplican a la configuración del clúster de administrador. Se diseñaron como una guía a fin de ayudarte a planificar las direcciones IP que necesitas para la instalación. Puedes descargar la tabla en un archivo CSV y, luego, importarla en una hoja de cálculo o en una herramienta de planificación de direcciones IP para usarla como punto de partida a fin de realizar un seguimiento de las direcciones IP necesarias para los clústeres.

Revisa los recursos de Google Cloud:

Asegúrate de que las APIs de Google obligatorias estén habilitadas en el proyecto host de la flota. Además, debes habilitar la API de Anthos On-Prem:

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

Reemplaza FLEET_HOST_PROJECT_ID por el ID del proyecto host de la flota.

Antes de crear el clúster, ejecuta el comando bmctl register bootstrap en la estación de trabajo de administrador como se describe en Prepara el entorno de arranque. Con este comando, se pueden crear las cuentas de servicio requeridas con los permisos de IAM mínimos necesarios para crear el clúster de administrador. Si lo prefieres, puedes configurar cuentas de servicio de forma manual.

Cuando tengas todo listo para comenzar, haz clic en Instalar entorno de arranque en la barra de navegación izquierda.

gcloud CLI

Requisitos previos de hardware, redes y sistema operativo

Crear un clúster de administrador mediante un cliente de la API de Anthos On-Prem requiere los mismos requisitos previos de hardware, red y sistema operativo que crear el clúster con bmctl. Para obtener más detalles, consulta Requisitos previos de la instalación.

APIs de Google requeridas

Asegúrate de que las APIs de Google obligatorias estén habilitadas en el proyecto host de la flota. Además, debes habilitar la API de Anthos On-Prem:

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

Reemplaza FLEET_HOST_PROJECT_ID por el ID del proyecto host de la flota.

Cuentas de servicio y permisos obligatorios

Antes de crear el clúster, ejecuta el comando bmctl register bootstrap en la estación de trabajo de administrador como se describe en Prepara el entorno de arranque. Con este comando, se pueden crear las cuentas de servicio requeridas con los permisos de IAM mínimos necesarios para crear el clúster de administrador. Si lo prefieres, puedes configurar cuentas de servicio de forma manual.

Planifica las direcciones IP

Antes de crear el clúster de administrador, debes planificar las direcciones IP de los clústeres. Revisa Planifica las direcciones IP si deseas ver un ejemplo de cómo asignar direcciones IP para un clúster de administrador de alta disponibilidad (HA) y dos clústeres de usuario con alta disponibilidad. Incluso si usarás gcloud CLI para crear el clúster de administrador, te recomendamos seguir los pasos de la consola que se indican en esta sección a fin de usar el planificador de direcciones IP.

Prepara el entorno de arranque

Antes de crear el clúster de administrador, debes ejecutar el comando bmctl register bootstrap en la estación de trabajo de administrador. Este comando implementa un clúster de Kubernetes en Docker (kind) en la estación de trabajo de administrador. Este clúster de arranque aloja los controladores de Kubernetes necesarios para crear el clúster de administrador. Cuando creas el clúster de administrador, los controladores del clúster de arranque aprovisionarán nodos, ejecutarán verificaciones previas y registrarán el clúster de administrador en la flota. El clúster de arranque se borra de forma automática después de crearlo de forma correcta.

Consola

  1. Ingresa un Nombre para el clúster de administrador. Ten en cuenta que el nombre del clúster de arranque se deriva cuando se antepone bootstrap- al nombre del clúster de administrador.

  2. Selecciona la versión de GKE en Bare Metal para el clúster de administrador.

  3. En el campo Ubicación de la API de Google Cloud, selecciona la región de Google Cloud de la lista. Esta configuración especifica la región en la que se ejecuta la API de Anthos On-Prem y la región en la que se almacena lo siguiente:

    • Los metadatos del clúster que necesita la API de Anthos On-Prem 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.

  4. En la consola, se muestran los comandos que debes ejecutar en la estación de trabajo de administrador. La herramienta de línea de comandos de bmctl debe coincidir con la versión del clúster que estás creando. Si ya tienes la versión aplicable de bmctl descargada en tu estación de trabajo de administrador, no necesitas descargarla de nuevo.

gcloud CLI

  1. Asegúrate de tener la versión más reciente de la CLI de gcloud, incluidos los componentes beta de gcloud CLI.

  2. Si aún no tienes los componentes beta, ejecuta el siguiente comando para instalarlos:

    gcloud components install beta
    
  3. Si es necesario, actualiza los componentes de gcloud CLI:

    gcloud components update
    
  4. Ejecuta el siguiente comando para acceder con tu Cuenta de Google:

    gcloud auth login
    
  5. Enumera las versiones disponibles de GKE en Bare Metal que puedes instalar. La versión bmctl que descargues para crear el entorno de arranque debe coincidir con la versión que instalarás en el clúster de administrador.

    gcloud container bare-metal admin-clusters query-version-config \
      --location=REGION
    

    Reemplaza REGION por la región de Google Cloud en la que se ejecuta la API de Anthos On-Prem. Especifica us-west1 o una región compatible.

Crea el clúster de arranque

Sigue estos pasos en la estación de trabajo de administrador. Estos comandos se muestran en la consola.

  1. Establece tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):

    gcloud auth application-default login
    

    Sigue las instrucciones a fin de seleccionar tu Cuenta de Google para el ADC.

  2. Si es necesario, descarga la herramienta de línea de comandos de bmctl en el directorio de trabajo actual.

    gsutil cp gs://anthos-baremetal-release/bmctl/VERSION/linux-amd64/bmctl .
    chmod a+x ./bmctl
    

    Reemplaza VERSION por la versión de GKE en Bare Metal que deseas instalar. Si copiaste el comando de la consola, la versión ya está en el comando.

  3. Crea el clúster de arranque. Puedes permitir que bmctl cree las cuentas de servicio (SA) requeridas o puedes crear las cuentas de servicio y los archivos de claves por tu cuenta y pasarlos al comando bmctl register bootstrap.

bmctl crea SA.

Usa el siguiente comando si quieres que bmctl cree las cuentas de servicio necesarias con los permisos mínimos requeridos para crear el clúster de administrador. Este comando supone que bmctl está en el directorio de trabajo actual.

./bmctl register bootstrap \
  --ssh-key=YOUR_PRIVATE_KEY \
  --name=bootstrap-ADMIN_CLUSTER_NAME \
  --project-id=FLEET_HOST_PROJECT_ID

Reemplaza lo siguiente:

Si copiaste el comando que se muestra en la consola, los siguientes campos ya estarán completados.

  • ADMIN_CLUSTER_NAME: Es el nombre del clúster de administrador. El formato del nombre del clúster de arranque debe ser bootstrap-ADMIN_CLUSTER_NAME.

  • FLEET_HOST_PROJECT_ID: Es el proyecto en el que se registrará automáticamente el clúster de administrador después de que se cree el clúster.

El comando bmctl register bootstrap crea las siguientes cuentas de servicio. Las claves de la cuenta de servicio se almacenan en el directorio bmctl-workspace/.sa-keys.

Cuenta de servicio Objetivo Roles de IAM
anthos-baremetal-gcr Anthos alojado en Bare Metal usa esta cuenta de servicio para descargar imágenes de contenedor de Google Container Registry. Ninguna
anthos-baremetal-connect El agente de Connect usa esta cuenta de servicio para mantener una conexión entre tu clúster y Google Cloud roles/gkehub.connect
anthos-baremetal-register El agente de Connect usa esta cuenta de servicio para registrar tus clústeres en la flota de Google Cloud. roles/gkehub.admin
anthos-baremetal-cloud-ops El agente de Stackdriver usa esta cuenta de servicio para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor

Especifica archivos de claves de SA

Si lo prefieres, puedes pasar bmctl los archivos de claves de la cuenta de servicio que creaste. En el siguiente comando, se usan los nombres de archivo de claves que aparecen en Configura cuentas de servicio de forma manual y se supone que bmctl y los archivos de claves están en el directorio de trabajo actual.

./bmctl register bootstrap \
  --ssh-key=YOUR_PRIVATE_KEY \
  --name=bootstrap-ADMIN_CLUSTER_NAME \
  --project-id=FLEET_HOST_PROJECT_ID \
  --gcr-service-account-key=anthos-baremetal-gcr.json \
  --gke-agent-service-account-key=connect-agent.json \
  --gke-register-service-account-key=connect-register.json \
  --cloud-operation-service-account-key=anthos-baremetal-cloud-ops.json

Reemplaza lo siguiente:

  • YOUR_PRIVATE_KEY: Es la ruta de acceso a tu clave SSH privada. Creaste la clave SSH cuando configuraste el acceso SSH raíz a los nodos.

  • ADMIN_CLUSTER_NAME: Es el nombre del clúster de administrador. El formato del nombre del clúster de arranque debe ser bootstrap-ADMIN_CLUSTER_NAME.

  • FLEET_HOST_PROJECT_ID: Es el proyecto en el que se registrará automáticamente el clúster de administrador después de que se cree el clúster.

Las siguientes marcas especifican la ruta de acceso a los archivos de claves:

  • -gcr-service-account-key: La ruta de acceso al archivo de claves de la cuenta de servicio que extrae las imágenes del contenedor (anthos-baremetal-gcr).

  • --gke-agent-service-account-key: Es la ruta de acceso al archivo de claves de la cuenta de servicio del agente de Connect (anthos-baremetal-connect).

  • --gke-register-service-account-key: Es la ruta de acceso al archivo de claves de la cuenta de servicio del agente de Connect que registra el clúster en la flota (anthos-baremetal-register).

  • --cloud-operation-service-account-key: Es la ruta de acceso al archivo de claves de la cuenta de servicio para auditar los registros y supervisar los proyectos (anthos-baremetal-cloud-ops).

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

Consola

  1. En la página Instalar entorno de arranque, haz clic en Verificar conexión.

    Si la operación se completa de forma correcta, en la consola se mostrará Conexión establecida.

    Se debe establecer la conexión con el clúster de arranque antes de continuar. Si no se estableció 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 del arranque derivado que se muestra en la sección Conceptos 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 arranque o el ID del proyecto, ingresa Ctrl-C para salir de bmctl register bootstrap y volver a ejecutar el comando.

  2. Haz clic en Siguiente para comenzar a configurar el clúster de administrador. La mayoría de los parámetros de configuración en la consola corresponden a los campos del archivo de configuración de clúster.

  3. En Configuración de nodos, ingresa un valor entre 64 y 250 en Máximo de Pods por nodo o acepta el valor predeterminado, 110. Después de crear el clúster, no puedes actualizar este valor.

    El máximo de Pods por nodo (conocido como Pod density} también está limitado por los recursos de IP disponibles del clúster. Para obtener más detalles, consulta Herramientas de redes de Pods.

  4. Haz clic en Siguiente.

  5. En la página Herramientas de redes, define cómo se comunican los nodos y componentes del clúster entre sí y con el plano de control de Kubernetes.

    Para obtener información detallada, mantén el puntero sobre el elemento junto a cada campo.

  6. Haz clic en Verificar y crear.

    La consola muestra mensajes de estado mientras verifica la configuración y crea el clúster en tu centro de datos.

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

gcloud CLI

Antes de crear el clúster de administrador, confirma que el clúster de arranque se registró como miembro de la flota:

gcloud container fleet memberships list \
  --project=FLEET_HOST_PROJECT_ID

Si el clúster de arranque no aparece en la lista, verifica el nombre del clúster de arranque y el ID del proyecto que especificaste en bmctl register bootstrap. Si necesitas cambiar el nombre del clúster de arranque o el ID del proyecto, ingresa Ctrl-C para salir de bmctl register bootstrap y volver a ejecutar el comando.

Usa el siguiente comando para crear un clúster de administrador:

gcloud container bare-metal admin-clusters create

La mayoría de las marcas que especificas en el comando corresponden a los campos del archivo de configuración del clúster de usuario.

Para crear un clúster de administrador con el balanceador de cargas en paquetes, haz lo siguiente:

gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --location=REGION \
  --version=VERSION \
  --max-pods-per-node=MAX_PODS_PER_NODE \
  --control-plane-vip=CONTROL_PLANE_VIP \
  --control-plane-load-balancer-port=CONTROL_PLANE_LOAD_BALANCER_PORT \
  --control-plane-node-configs 'CONTROL_PLANE_NODE_CONFIG' \
  --island-mode-service-address-cidr-blocks=SERVICE_ADDR_CIDR \
  --island-mode-pod-address-cidr-blocks=POD_ADDR_CIDR \
  --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

Si deseas usar el balanceo de cargas manual, agrega --enable-manual-lb al comando.

Reemplaza lo siguiente:

  • ADMIN_CLUSTER_NAME: Es el nombre del clúster de administrador. El nombre no se puede cambiar después de crear el clúster.

  • FLEET_HOST_PROJECT_ID: Es el proyecto en el que se registrará automáticamente el clúster de administrador después de que se cree el clúster. El proyecto host de la flota no se puede cambiar después de crear el clúster.

  • REGION: Es la región de Google Cloud en la que se ejecuta la API de Anthos On-Prem. Especifica us-west1 o una región compatible. No se puede cambiar la región después de crear el clúster. Este parámetro de configuración especifica la región en la que se almacenan los siguientes datos:

    • Los metadatos del clúster que necesita la API de Anthos On-Prem 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.

  • VERSION: Es la versión de GKE en Bare Metal. La versión debe coincidir con la versión de bmctl que usaste para ejecutar bmctl register bootstrap. Para verificar la versión de bmctl, ejecuta bmctl version en la estación de trabajo de administrador.

  • MAX_PODS_PER_NODE : En el caso de los clústeres de administrador, los valores permitidos son de 32 a 250 y de 64 a 250 para los clústeres que no tienen alta disponibilidad. Si --max-pods-per-node no se incluye en el comando, el valor predeterminado es 110. Después de crear el clúster, este valor no se puede actualizar.

    El máximo de Pods por nodo (denominado densidad de Pod) también está limitado por los recursos IP disponibles de tu clúster. Para obtener más detalles, consulta Herramientas de redes de Pods.

  • CONTROL_PLANE_VIP: La IP virtual (VIP) en el balanceador de cargas del servidor de la API de Kubernetes del clúster. Incluye la VIP del plano de control en la misma subred que los nodos del balanceador de cargas. No incluyas la VIP del plano de control en los grupos de direcciones del balanceador de cargas.

  • CONTROL_PLANE_LOAD_BALANCER_PORT: Es el puerto en el que el balanceador de cargas entrega el plano de control. Si bien puedes configurar otro valor, el puerto 443 es el puerto estándar que se usa para las conexiones HTTPS.

  • CONTROL_PLANE_NODE_CONFIG: Es la dirección IPv4 de un nodo del plano de control. Los nodos del plano de control ejecutan la carga de trabajo del sistema. Especifica esta marca para cada nodo del plano de control. Por lo general, tienes una sola máquina si usas una implementación mínima o tres máquinas si usas una implementación de alta disponibilidad (HA). Especifica una cantidad impar de nodos a fin de tener un quórum de mayoría para la alta disponibilidad. Puedes cambiar estas direcciones cada vez que actualices o actualices el clúster.

    El valor de la marca tiene el siguiente formato:

    'node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \
    

    El valor tiene segmentos que comienzan con las palabras clave node-ip y labels. Separa cada segmento con una coma.

    • node-ip: Es la dirección IP de un nodo del plano de control. Solo puedes especificar un node-ip por marca. Si necesitas especificar más de un nodo, vuelve a incluir la marca para cada nodo.

    • labels: Uno o más pares clave=valor adjuntos al nodo.

    Ten en cuenta las siguientes reglas de sintaxis:

    • Encierra todo el valor entre comillas simples.
    • No se permiten espacios en blanco.
    • Separa cada par clave=valor en el segmento labels con un punto y coma.

    Por ejemplo:

    --control-plane-node-configs 'node-ip=192.0.2.1' \
    --control-plane-node-configs 'node-ip=192.0.2.2,labels=key2.1=value2.1' \
    --control-plane-node-configs 'node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \
    
  • SERVICE_ADDR_CIDR: Es un rango de direcciones IPv4, en formato CIDR, para los servicios de tu clúster. El rango CIDR debe estar entre /24 y /12, donde /12 proporciona la mayor cantidad de direcciones IP. Te recomendamos que uses un rango en el espacio de direcciones IP para Internet privada, definido en RFC 1918, por ejemplo, 10.96.0.0/20.

  • POD_ADDR_CIDR: Es un rango de direcciones IPv4, en formato CIDR, que se usarán para los Pods en el clúster de usuario. El rango CIDR debe estar entre /18 y /8, donde /8 proporciona la mayor cantidad de direcciones IP. Te recomendamos que uses un rango en el espacio de direcciones IP para Internet privada, definido en RFC 1918, por ejemplo, 192.168.0.0/16.

Debes especificar las siguientes marcas de almacenamiento. El comando de ejemplo incluye valores típicos. Para obtener más información, consulta Configura el almacenamiento local.

  • --lvp-share-path: Esta es la ruta de la máquina anfitrión en la que se pueden crear los subdirectorios. Se crea un PersistentVolume (PV) local para cada subdirectorio.

  • --lvp-share-storage-class: Esta es la StorageClass que se usará para crear volúmenes persistentes. StorageClass se crea durante la creación del clúster.

  • --lvp-node-mounts-config-path: Esta es la ruta de la máquina anfitrión en la que se pueden detectar los discos activados. Se crea un PersistentVolume (PV) local para cada activación.

  • --lvp-node-mounts-config-storage: Es la clase de almacenamiento con la que se crean los PV durante la creación del clúster.

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

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 string operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 es la 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=FLEET_HOST_PROJECT_ID \
  --location=REGION

Para obtener más información, consulta gcloud container bare-metal operations.

Cómo corregir errores de solicitudes preliminares

Antes de crear el clúster, bmctl ejecuta una serie de comprobaciones preliminares para comprobar la configuración. Si hay un problema con la configuración, el comando gcloud ... create finaliza con un error similar al siguiente:

ERROR: (gcloud.beta.container.bare-metal.admin-clusters.create) Invalid resource state for "projects/694677185633/locations/us-west1/bareMetalAdminClusters/abm-cluster-1": cluster preflight checks failed

Por ejemplo, supongamos que una verificación preliminar falló porque no se pudo acceder al nodo del plano de control. En la estación de trabajo de administrador, verás algo similar a lo siguiente:

[2023-03-27 20:34:38+0000] Waiting for preflight check job to finish... OK
[2023-03-27 20:35:58+0000] - Validation Category: machines and network
[2023-03-27 20:35:58+0000]    - [PASSED] pod-cidr
[2023-03-27 20:35:58+0000]    - [FAILED] node-network (log: bmctl-workspace/log/register-bootstrap-20230327-201548/node-network)
[2023-03-27 20:35:58+0000]        - Failed to connect to the host via ssh: ssh: connect to host 10.100.0.5 port 22: Connection timed out
[2023-03-27 20:35:58+0000] Flushing logs... OK
[2023-03-27 20:35:58+0000] Error polling the preflight check abm-cluster-mar-27 in the cluster-abm-cluster-mar-27: preflight check failed
  1. En la estación de trabajo de administrador, asegúrate de que aún se esté ejecutando el proceso bmctl register bootstrap. Si no es así, vuelve a ejecutar el comando con los mismos argumentos y agrega la marca --reuse-bootstrap-cluster=true.

  2. Ejecuta gcloud ... update para corregir la dirección IP no válida:

    gcloud container bare-metal admin-clusters update ADMIN_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=REGION \
      --control-plane-node-configs 'node-ip=NEW_NODE_ID_ADDRESS'
    

    Para obtener más información, consulta gcloud container bare-metal admin-clusters update.

Los detalles sobre el proceso de creación del clúster se muestran en tu estación de trabajo de administrador. Si se aprueban las comprobaciones preliminares, verás algo como lo siguiente:

[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK
[2023-03-22 23:15:47+0000] Writing kubeconfig file
[2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig
[2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK
[2023-03-22 23:20:17+0000] Please run
[2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes
[2023-03-22 23:20:17+0000] to get cluster nodes status.
[2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK
[2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK
[2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK
[2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster
[2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK
[2023-03-22 23:27:41+0000] Flushing logs... OK
[2023-03-22 23:27:41+0000] Deleting membership... OK
[2023-03-22 23:27:42+0000] Deleting bootstrap cluster.

Conéctate al clúster de administrador

El comando bmctl register bootstrap crea un archivo kubeconfig para el clúster de administrador en la estación de trabajo de administrador. El directorio en el que se encuentra kubeconfig y el nombre de archivo se basan en el nombre del clúster de administrador de la siguiente manera:

bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

Debes restringir el acceso a este kubeconfig porque contiene credenciales de autenticación para el clúster.

Si deseas usar tu identidad de Google para acceder al clúster, puedes configurar la puerta de enlace de Connect de la siguiente manera:

  1. En tu estación de trabajo de administrador, configura la variable de entorno KUBECONFIG:

    export KUBECONFIG=$HOME/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
    
  2. Establece el contexto actual en una variable de entorno:

    export CONTEXT="$(kubectl config current-context)"
    
  3. Ejecuta el siguiente comando gcloud: Este comando realiza las siguientes acciones:

    • Otorga a tu cuenta de usuario la función clusterrole/view de Kubernetes en el clúster.
    • Configura el clúster para que puedas ejecutar comandos kubectl de solo lectura en tu computadora local sin tener que establecer una conexión SSH a la estación de trabajo de administrador.

    Reemplaza GOOGLE_ACCOUNT_EMAIL por la dirección de correo electrónico asociada a tu cuenta de Google Cloud. Por ejemplo: --users=alex@example.com

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/view \
        --users=GOOGLE_ACCOUNT_EMAIL \
        --project=FLEET_HOST_PROJECT_ID \
        --kubeconfig=$KUBECONFIG \
        --context=$CONTEXT\
        --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/view
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
    Successfully applied the RBAC policy to cluster.
    

Con estas políticas de RBAC implementadas, puedes acceder al clúster desde la consola con tu identidad de Google. Además, puedes ejecutar comandos kubectl de solo lectura en computadoras que no sean la estación de trabajo de administrador mediante un kubeconfig especial que enrute las solicitudes a través de la puerta de enlace de Connect.

  1. Ejecuta el siguiente comando en una computadora que no sea la estación de trabajo de administrador para obtener la entrada kubeconfig que puede acceder al clúster a través de la puerta de enlace de Connect.

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \
        --project=FLEET_HOST_PROJECT_ID
    

    El resultado es similar al siguiente:

    Starting to build Gateway kubeconfig...
    Current project_id: FLEET_HOST_PROJECT_ID
    A new kubeconfig entry "connectgateway_FLEET_HOST_PROJECT_ID_global_ADMIN_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 Connect:

    kubectl get pods -A
    

¿Qué sigue?