Crear clústeres básicos

Esta es la segunda parte de una guía que te muestra cómo realizar una pequeña instalación de prueba de concepto de Google Distributed Cloud. En la primera parte, Configurar la infraestructura mínima, se explica cómo planificar las direcciones IP y configurar la infraestructura de vSphere y Google Cloud necesaria para la implementación. Este documento se basa en la configuración y la planificación que has realizado en la sección anterior y te muestra cómo crear una estación de trabajo de administrador, un clúster de administrador y un clúster de usuarios en tu entorno de vSphere mediante plantillas sencillas que puedes rellenar en este documento. Después, puedes desplegar una aplicación.

Al igual que con la configuración de la infraestructura de esta instalación sencilla, es posible que los clústeres que configures con este documento no sean adecuados para tus necesidades de producción y casos prácticos reales. Para obtener mucha más información, consultar las prácticas recomendadas y ver instrucciones para las instalaciones de producción, consulta las guías de instalación.

Antes de empezar

  1. Asegúrate de haber configurado tus entornos de vSphere y Google Cloud como se describe en Configurar la infraestructura mínima.

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

Descripción general del procedimiento

Estos son los pasos principales que hay que seguir para completar la configuración:

  1. Inicia sesión en la CLI de Google Cloud con una cuenta que tenga los permisos necesarios para crear cuentas de servicio.

  2. Recopila la información que necesitas para configurar Google Distributed Cloud, como el nombre de usuario y la contraseña de vCenter, y las direcciones IP que has preparado en la sección anterior.

  3. Crea una estación de trabajo de administrador que tenga los recursos y las herramientas que necesitas para crear clústeres de administrador y de usuario, incluidas las cuentas de servicio adicionales que necesitas para completar la configuración.

  4. Crea un clúster de administrador para gestionar y actualizar tu clúster de usuario.

  5. Crea un clúster de usuarios para ejecutar tus cargas de trabajo.

1. Iniciar sesión en Google Cloud CLI

Para configurar Google Distributed Cloud, se necesitan varias cuentas de servicio con diferentes permisos. Por lo tanto, debes iniciar sesión en la CLI de Google Cloud con una cuenta que tenga los permisos necesarios para crear y configurar cuentas de servicio, ya que gkeadm usa tu account propiedad actual de la CLI de gcloud al realizar esta configuración.

  1. Inicia sesión en gcloud CLI. Puedes usar cualquier cuenta de Google, pero debe tener los permisos necesarios. Si has seguido la parte anterior de esta guía, probablemente ya hayas iniciado sesión con una cuenta adecuada para crear tu cuenta de servicio de acceso al componente.

    gcloud auth login
    
  2. Verifica que la propiedad account de la CLI de gcloud esté configurada correctamente:

    gcloud config list
    

    En el resultado se muestra el valor de la propiedad account de su SDK. Por ejemplo:

    [core]
    account = my-name@google.com
    disable_usage_reporting = False
    Your active configuration is: [default]
    
  3. Asegúrate de tener instalados los componentes más recientes de gcloud CLI:

    gcloud components update
    

    En función de cómo hayas instalado la CLI de gcloud, es posible que veas el siguiente mensaje: "No puedes realizar esta acción porque el gestor de componentes de la CLI de Google Cloud está inhabilitado en esta instalación. Puedes ejecutar el siguiente comando para obtener el mismo resultado en esta instalación:" Sigue las instrucciones para copiar y pegar el comando para actualizar los componentes.

2. Recoger información

Usa la información que has preparado en Configurar la infraestructura mínima para editar los marcadores de posición de la siguiente tabla:

Detalles de vSphere
El nombre de usuario de tu cuenta de vCenter USERNAME
La contraseña de tu cuenta de vCenter PASSWORD
Tu dirección de vCenter Server ADDRESS
La ruta al certificado de AC raíz de tu servidor vCenter en el equipo que vas a usar para crear tu estación de trabajo de administrador CA_CERT_PATH
El nombre de tu centro de datos de vSphere DATA_CENTER
El nombre de tu clúster de vSphere VSPHERE_CLUSTER
El nombre o la ruta de tu grupo de recursos de vSphere. Para obtener más información, consulta vcenter.resourcePool. RESOURCE_POOL
El nombre de tu almacén de datos de vSphere DATASTORE
El nombre de tu red de vSphere NETWORK
Direcciones IP
Una dirección IP para tu estación de trabajo de administrador ADMIN_WS_IP
Tres direcciones IP para los nodos del plano de control del clúster de administrador. ADMIN_CONTROL_PLANE_NODE_IP_1
ADMIN_CONTROL_PLANE_NODE_IP_2
ADMIN_CONTROL_PLANE_NODE_IP_3
Una dirección IP para el nodo de plano de control del clúster de usuarios. USER_CONTROL_PLANE_NODE_IP
Cuatro direcciones IP para los nodos de trabajo del clúster de usuarios. Esto incluye una dirección para un nodo adicional que se puede usar durante la actualización. USER_NODE_IP_1
USER_NODE_IP_2
USER_NODE_IP_3
USER_NODE_IP_4
Una dirección IP virtual (VIP) para el servidor de la API de Kubernetes del clúster de administrador ADMIN_CONTROL_PLANE_VIP
Una IP virtual para el servidor de la API de Kubernetes del clúster de usuario USER_CONTROL_PLANE_VIP
Una IP virtual de Ingress para el clúster de usuarios USER_INGRESS_VIP
Dos IPs virtuales para los servicios de tipo LoadBalancer en tu clúster de usuario. SERVICE_VIP_1
SERVICE_VIP_2
La dirección IP de un servidor DNS al que se pueda acceder desde tu estación de trabajo de administrador y los nodos del clúster DNS_SERVER_IP
La dirección IP de un servidor NTP al que se pueda acceder desde tu estación de trabajo de administrador y los nodos del clúster NTP_SERVER_IP
La dirección IP de la pasarela predeterminada de la subred que tiene tu estación de trabajo de administrador y los nodos del clúster DEFAULT_GATEWAY_IP
La máscara de red de la subred que tiene tu estación de trabajo de administrador y los nodos del clúster
Ejemplo: 255.255.255.0
NETMASK
Si tu red está detrás de un servidor proxy, la URL del servidor proxy. Para obtener más información, consulta proxy. Rellene este campo manualmente en el archivo de configuración de su estación de trabajo de administrador si es necesario. PROXY_URL
Intervalos CIDR de servicios y pods
El clúster de administrador y el clúster de usuario necesitan un intervalo CIDR para los servicios y otro para los pods. Utilice los siguientes valores predefinidos, a menos que necesite cambiarlos para evitar que se solapen con otros elementos de su red:
Un intervalo CIDR para los servicios del clúster de administración 10.96.232.0/24
Un intervalo CIDR para los pods del clúster de administrador 192.168.0.0/16
Un intervalo CIDR para los servicios del clúster de usuario 10.96.0.0/20
Un intervalo CIDR para los pods del clúster de usuarios 192.168.0.0/16
Google Cloud detalles
El ID del proyecto de Cloud que elijas. PROJECT_ID
La ruta al archivo de clave JSON de la cuenta de servicio de acceso a componentes que has configurado en la sección anterior, en el equipo que vas a usar para crear tu estación de trabajo de administrador. COMPONENT_ACCESS_SA_KEY_PATH
La dirección de correo asociada a tu cuenta de Google Cloud. Por ejemplo: alex@example.com. GOOGLE_ACCOUNT_EMAIL

3. Crear una estación de trabajo de administrador

Antes de crear clústeres, debes crear una estación de trabajo de administrador y, a continuación, conectarte a ella mediante SSH. La estación de trabajo de administrador es una VM independiente que incluye las herramientas y los recursos que necesitas para crear clústeres de Google Distributed Cloud en tu entorno de vSphere. Para crear la estación de trabajo de administrador, se usa la herramienta de línea de comandos gkeadm.

Descargar gkeadm

Descarga gkeadm en tu directorio actual:

gcloud storage cp gs://gke-on-prem-release/gkeadm/1.32.300-gke.85/linux/gkeadm ./
chmod +x gkeadm

Necesitas la versión gkeadm (que también es la versión de Google Distributed Cloud) para crear los archivos de configuración de administrador y de clúster de usuario. Para comprobar la versión de gkeadm, ejecuta lo siguiente:

./gkeadm version

En el siguiente ejemplo de salida se muestra la versión.

gkeadm 1.33.100 (1.32.300-gke.85)

Aunque puedes descargar otra versión de gkeadm, esta guía da por hecho que vas a instalar la versión 1.32.300-gke.85 y la usa en todos los archivos de configuración y comandos.

Crear el archivo de credenciales

Crea y guarda un archivo llamado credential.yaml en tu directorio actual con el siguiente contenido:

apiVersion: v1
kind: CredentialFile
items:
- name: vCenter
  username: "USERNAME"
  password: "PASSWORD"

Crear el archivo de configuración de la estación de trabajo de administrador

Crea y guarda un archivo llamado admin-ws-config.yaml, de nuevo en tu directorio actual, con el siguiente contenido:

gcp:
  componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH"
vCenter:
  credentials:
    address: "ADDRESS"
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  datacenter: "DATA_CENTER"
  datastore: "DATASTORE"
  cluster: "VSPHERE_CLUSTER"
  network: "NETWORK"
  resourcePool: "RESOURCE_POOL"
  caCertPath: "CA_CERT_PATH"
proxyUrl: ""
adminWorkstation:
  name: "minimal-installation-admin-workstation"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "ADMIN_WS_IP"
      gateway: "DEFAULT_GATEWAY_IP"
      netmask: "NETMASK"
      dns:
      - "DNS_SERVER_IP"
  proxyUrl: ""
  ntpServer: ntp.ubuntu.com

Crear tu estación de trabajo de administrador

Crea tu estación de trabajo de administrador con el siguiente comando:

./gkeadm create admin-workstation --auto-create-service-accounts

Al ejecutar este comando:

  • Crea tu estación de trabajo de administrador
  • Crea automáticamente las cuentas de servicio adicionales que necesites para tu instalación.
  • Crea archivos de configuración de plantillas para tus clústeres de administrador y de usuario.

El resultado proporciona información detallada sobre la creación de tu estación de trabajo de administrador y un comando que puedes usar para obtener una conexión SSH a tu estación de trabajo de administrador. Por ejemplo:

...
Admin workstation is ready to use.
Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
********************************************************************

En el resultado anterior, la dirección IP es un ejemplo. La dirección IP de tu estación de trabajo de administrador será diferente. Anota la dirección IP de tu estación de trabajo de administrador. Lo necesitarás en el siguiente paso.

Para obtener información más detallada sobre cómo crear una estación de trabajo de administrador, consulta el artículo Crear una estación de trabajo de administrador.

Conectarse a la estación de trabajo de administrador

Usa el comando que se muestra en el resultado anterior para obtener una conexión SSH a tu estación de trabajo de administrador. Por ejemplo:

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49

Si necesitas volver a encontrar este comando, gkeadm genera un archivo llamado gke-admin-ws-... en el directorio de tu equipo local en el que ejecutaste gkeadm create admin-workstation. Contiene detalles sobre tu estación de trabajo de administrador, incluido el comando SSH.

En tu estación de trabajo de administrador, introduce exit para finalizar la conexión SSH y volver a tu máquina local.

Copia la clave de registro de auditoría en tu estación de trabajo de administrador

En la sección anterior, has creado un archivo de clave JSON para tu cuenta de servicio de registro de auditoría.

Copia el archivo de clave JSON en el directorio principal de tu estación de trabajo de administrador. Por ejemplo, en tu máquina local:

scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~

Ver archivos en tu estación de trabajo de administrador

Una vez más, establece una conexión SSH con tu estación de trabajo de administrador.

En tu estación de trabajo de administrador, muestra los archivos del directorio principal:

ls -1

La salida debe incluir lo siguiente:

  • admin-cluster.yaml, un archivo de configuración de plantilla para crear tu clúster de administrador.
  • user-cluster.yaml, un archivo de configuración de plantilla para crear tu clúster de usuario.
  • El archivo de certificado de vCenter que has especificado en la configuración de tu estación de trabajo de administrador
  • El archivo credential.yaml que has especificado en la configuración de tu estación de trabajo de administrador.
  • El archivo de clave JSON de tu cuenta de servicio de registro de auditoría.
  • Archivos de clave JSON de dos cuentas de servicio que gkeadm se han creado automáticamente: una cuenta de servicio de conexión y registro, y una cuenta de servicio de registro y monitorización, así como el archivo de clave de la cuenta de servicio de acceso a componentes que has creado anteriormente.

Por ejemplo:

admin-cluster.yaml
admin-ws-config.yaml
audit-logging-key.json
sa-key.json
connect-register-sa-2203040617.json
credential.yaml
log-mon-sa-2203040617.json
logs
vc01-cert.pem
user-cluster.yaml

Deberás especificar algunos de estos nombres de archivo en tus archivos de configuración para crear clústeres. Use los nombres de archivo como valores de los marcadores de posición de la siguiente tabla:

Nombre de archivo de clave de cuenta de servicio de Connect-register
Ejemplo: connect-register-sa-2203040617.json
CONNECT_REGISTER_SA_KEY
Nombre del archivo de clave de la cuenta de servicio de registro y monitorización
Ejemplo: log-mon-sa-2203040617.json
LOG_MON_SA_KEY
Nombre del archivo de clave de cuenta de servicio de registro de auditoría
Ejemplo: audit-logging-key.json
AUDIT_LOG_SA_KEY
Nombre del archivo de clave de la cuenta de servicio de acceso al componente
Ejemplo: sa-key.json
COMPONENT_ACCESS_SA_KEY
Nombre del archivo de certificado de vCenter
Ejemplo: vc01-cert.pem
CA_CERT_FILE

4. Crear clúster de administradores

Ahora que tienes una estación de trabajo de administrador configurada con tu vCenter y otros detalles, puedes usarla para crear un clúster de administrador en tu entorno de vSphere. Antes de empezar este paso, asegúrate de tener una conexión SSH a tu estación de trabajo de administrador, tal como se ha descrito anteriormente. Todos los comandos siguientes se ejecutan en la estación de trabajo de administrador.

Crear el archivo de configuración del clúster de administrador

Abre admin-cluster.yaml y sustituye el contenido por lo siguiente:

apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.32.300-gke.85-full.tgz"
vCenter:
  address: "ADDRESS"
  datacenter: "DATA_CENTER"
  cluster: "VSPHERE_CLUSTER"
  resourcePool: "RESOURCE_POOL"
  datastore: "DATASTORE"
  caCertPath: "CA_CERT_FILE"
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "NETWORK"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_1"
      hostname: "admin-cp-vm-1"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_2"
      hostname: "admin-cp-vm-2"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_3"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP"
  kind: "MetalLB"
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY"
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
cloudAuditLogging:
  projectID: "PROJECT_ID"
  clusterLocation: us-central1
  serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"

Validar el archivo de configuración del clúster de administrador

Verifica que el archivo de configuración del clúster de administrador sea válido y se pueda usar para crear clústeres:

gkectl check-config --config admin-cluster.yaml

Importar imágenes de SO a vSphere

Ejecuta gkectl prepare con el archivo de configuración completado para importar imágenes de SO de nodos a vSphere:

gkectl prepare --config admin-cluster.yaml --skip-validation-all

Al ejecutar este comando, las imágenes se importan a vSphere y se marcan como plantillas de máquina virtual, incluida la imagen de tu clúster de administrador.

Este comando puede tardar unos minutos en devolver el resultado.

Crear el clúster de administrador

Crea el clúster de administrador:

gkectl create admin --config admin-cluster.yaml

Reanudar la creación de un clúster de administrador tras un fallo

Si se produce un error al crear el clúster de administrador o se cancela, puedes volver a ejecutar el comando create:

gkectl create admin --config admin-cluster.yaml

Localizar el archivo kubeconfig del clúster de administrador

El comando gkectl create admin crea un archivo kubeconfig llamado kubeconfig en el directorio actual. Necesitarás este archivo kubeconfig más adelante para interactuar con tu clúster de administrador.

Verificar que el clúster de administrador se está ejecutando

Comprueba que tu clúster de administrador se está ejecutando:

kubectl get nodes --kubeconfig kubeconfig

El resultado muestra los nodos del clúster de administrador. Por ejemplo:

admin-cp-vm-1   Ready    control-plane,master ...
admin-cp-vm-2   Ready    control-plane,master ...
admin-cp-vm-3   Ready    control-plane,master ...

Habilitar la autorización RBAC

Para asignar a tu cuenta de usuario el rol clusterrole/cluster-admin de Kubernetes en el clúster, ejecuta el siguiente comando:

gcloud container fleet memberships generate-gateway-rbac \
    --membership=minimal-installation-admin-cluster \
    --role=clusterrole/cluster-admin \
    --users=GOOGLE_ACCOUNT_EMAIL \
    --project=PROJECT_ID \
    --kubeconfig=kubeconfig \
    --context=minimal-installation-admin-cluster \
    --apply

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

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

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

Registro automático en la API GKE On-Prem

Como la API de GKE On-Prem está habilitada en tu proyecto, el clúster se registra automáticamente en la API de GKE On-Prem. Si registras tu clúster de administrador en la API de GKE On-Prem, podrás usar herramientas estándar (la consola, la CLI de Google Cloud o Terraform) para crear, actualizar y eliminar clústeres de usuario que gestione el clúster de administrador.Google Cloud Al registrar tu clúster, también puedes ejecutar comandos de gcloud para obtener información sobre él.

5. Crear clúster de usuarios

En esta sección se explica cómo crear el clúster de usuario mediante la consola, gkectl, Terraform o la CLI de gcloud.

gkectl

Antes de empezar este procedimiento, asegúrate de tener una conexión SSH con tu estación de trabajo de administrador, tal como se ha descrito anteriormente. Todos los comandos siguientes se ejecutan en la estación de trabajo de administrador.

Crear el archivo de bloque de IPs del clúster de usuarios

  1. Crea un archivo llamado user-ipblock.yaml.

  2. Copia y pega el siguiente contenido en user-ipblock.yaml y guarda el archivo:

    blocks:
      - netmask: "NETMASK"
        gateway: "DEFAULT_GATEWAY_IP"
        ips:
        - ip: "USER_NODE_IP_1"
          hostname: "user-vm-1"
        - ip: "USER_NODE_IP_2"
          hostname: "user-vm-2"
        - ip: "USER_NODE_IP_3"
          hostname: "user-vm-3"
        - ip: "USER_NODE_IP_4"
          hostname: "user-vm-4"
    

Crear el archivo de configuración del clúster de usuarios

  1. Crea un archivo llamado user-cluster.yaml en el mismo directorio que user-ipblock.yaml.

  2. Copia y pega el siguiente contenido en user-cluster.yaml y guarda el archivo:

apiVersion: v1
kind: UserCluster
name: "minimal-installation-user-cluster"
gkeOnPremVersion: "1.32.300-gke.85"
enableControlplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: "10.96.0.0/20"
  podCIDR: "192.168.0.0/16"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "USER_CONTROL_PLANE_NODE_IP"
      hostname: "cp-vm-1"
loadBalancer:
  vips:
    controlPlaneVIP: "USER_CONTROL_PLANE_VIP"
    ingressVIP: "USER_INGRESS_VIP"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "uc-address-pool"
      addresses:
      - "USER_INGRESS_VIP/32"
      - "SERVICE_VIP_1/32"
      - "SERVICE_VIP_2/32"
enableDataplaneV2: true
nodePools:
- name: "uc-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: false
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
autoRepair:
  enabled: true

Validar la configuración y crear el clúster

  1. Verifica que el archivo de configuración del clúster de usuarios sea válido y se pueda usar para crear el clúster:

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
  2. Crea el clúster de usuarios:

    gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml

    La creación del clúster tarda aproximadamente 30 minutos.

Buscar el archivo kubeconfig del clúster de usuarios

El comando gkectl create cluster crea un archivo kubeconfig llamado USER_CLUSTER_NAME-kubeconfig en el directorio actual. Necesitarás este archivo kubeconfig más adelante para interactuar con tu clúster de usuario.

Verificar que el clúster de usuarios esté en funcionamiento

Verifica que tu clúster de usuario esté en funcionamiento:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Sustituye USER_CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig de tu clúster de usuario.

El resultado muestra los nodos del clúster de usuarios. Por ejemplo:

cp-vm-1     Ready    control-plane,master
user-vm-1   Ready
user-vm-2   Ready
user-vm-3   Ready

Habilitar la autorización RBAC

Para asignar a tu cuenta de usuario el rol clusterrole/cluster-admin de Kubernetes en el clúster, ejecuta el siguiente comando:

gcloud container fleet memberships generate-gateway-rbac \
  --membership=minimal-installation-user-cluster \
  --role=clusterrole/cluster-admin \
  --users=GOOGLE_ACCOUNT_EMAIL \
  --project=PROJECT_ID \
  --kubeconfig=USER_CLUSTER_KUBECONFIG \
  --context=minimal-installation-user-cluster \
  --apply

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

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

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

Registro automático en la API GKE On-Prem

Como la API de GKE On-Prem está habilitada en tu proyecto, el clúster se registra automáticamente en la API de GKE On-Prem. De esta forma, puedes usar la consola o la CLI de gcloud para ver los detalles del clúster y gestionar su ciclo de vida. Por ejemplo, puedes ejecutar comandos gcloud para obtener información sobre tu clúster de usuarios.

Consola

  1. En la Google Cloud consola, ve a la página Crear un clúster de Google Distributed Cloud.

    Ir a Crear un clúster de Google Distributed Cloud

  2. Selecciona el Google Cloud proyecto en el que quieras crear el clúster. El proyecto seleccionado también se usa como proyecto host de la flota. Debe ser el mismo proyecto en el que está registrado el clúster de administrador. Una vez creado el clúster de usuarios, se registra automáticamente en la flota del proyecto seleccionado.

En las siguientes secciones se explica cómo configurar el clúster de usuarios.

Requisitos previos

  1. Familiarízate con la información de la página Requisitos previos.

  2. En la parte inferior de la página, haz clic en Siguiente.

Información básica de los clústeres

  1. En Nombre, escribe un nombre para el clúster de usuarios. Por ejemplo: minimal-installation-user-cluster.

  2. En Clúster de administrador, selecciona minimal-installation-admin-cluster.

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

  4. En Versión, selecciona 1.32.300-gke.85.

  5. No es necesario que abra las secciones Autorización ni Configuración de vCenter.

  6. Haz clic en Siguiente.

Plano de control

  1. En IPs de nodos del plano de control, en Pasarela, introduce DEFAULT_GATEWAY_IP.

  2. En Máscara de subred, introduce NETMASK.

  3. En Direcciones IP, en Dirección IP 1, introduzca USER_CONTROL_PLANE_NODE_IP. Deja en blanco el campo Nombre de host 1.

  4. Haz clic en Siguiente.

Redes

En esta sección, se especifican las direcciones IP de los nodos, los pods y los servicios del clúster. Un clúster de usuarios necesita una dirección IP para cada nodo y una dirección IP adicional para un nodo temporal que se necesita durante las actualizaciones, las actualizaciones y la reparación automática del clúster. Para obtener más información, consulta ¿Cuántas direcciones IP necesita un clúster de usuarios?

  1. En IPs de nodos de trabajo, en Modo de IP, comprueba que esté seleccionada la opción Estático.

  2. En Pasarela, introduce DEFAULT_GATEWAY_IP.

  3. En Máscara de subred, introduce NETMASK.

  4. En Direcciones IP, introduzca estas direcciones:

  • USER_NODE_IP_1
  • USER_NODE_IP_2
  • USER_NODE_IP_3
  • USER_NODE_IP_4

Deja en blanco los campos Nombre de host.

  1. En CIDR de servicio, introduce 10.96.0.0/20. En CIDR de pods, introduce 192.168.0.0/16.

  2. En Servidor DNS 1, introduce DNS_SERVER_IP.

  3. En Servidor NTP 1, introduce NTP_SERVER_IP.

  4. Deja en blanco el campo Dominio de búsqueda de DNS.

  5. Haz clic en Siguiente.

Balanceador de carga

  1. En Tipo de balanceador de carga, selecciona Agrupado con MetalLB.

  2. En Grupos de direcciones, usa el nombre predeterminado.

  3. En Direcciones IP, en Intervalo de direcciones IP 1, introduzca USER_INGRESS_VIP/32.

    Haz clic en Añadir intervalo de direcciones IP. En Intervalo de direcciones IP 1, introduce SERVICE_VIP_1/32

    Haz clic en Añadir intervalo de direcciones IP. En Intervalo de direcciones IP 2, introduce SERVICE_VIP_2/32

  4. En Asignación de direcciones IP, selecciona Automática.

  5. Deja la opción Evitar direcciones IP con errores sin marcar.

  6. En IPs virtuales, en IP virtual del plano de control, introduce USER_CONTROL_PLANE_VIP. El campo Ingress VIP ya está rellenado.

  7. Haz clic en Continuar.

Funciones

  1. Deja todos los valores predeterminados.

  2. Haz clic en Siguiente.

Grupos de nodos

  1. Deja todos los valores predeterminados.

  2. Haz clic en Verificar y completar para crear el clúster de usuarios. La creación del clúster de usuarios tarda 15 minutos o más. La consola muestra mensajes de estado mientras verifica la configuración y crea el clúster en tu centro de datos.

    Si se produce un error al verificar 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.

    Para obtener más información sobre los posibles errores y cómo solucionarlos, consulta Solucionar problemas de clústeres registrados en la API de GKE On-Prem.

Terraform

En esta sección se muestra cómo crear un clúster de usuario y un grupo de nodos con Terraform. Para obtener más información y otros ejemplos, consulta lo siguiente:

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

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

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

    resource "google_gkeonprem_vmware_cluster" "cluster-basic" {
      name = "minimal-installation-user-cluster"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster"
      description = "User cluster config with MetalLB, static IPs, and Controlplane V2"
      enable_control_plane_v2 = "true"
      on_prem_version = "1.32.300-gke.85"
      control_plane_node {
        cpus = 4
        memory = 8192
        replicas = 1
      }
      network_config {
        service_address_cidr_blocks = ["10.96.0.0/20"]
        pod_address_cidr_blocks = ["192.168.0.0/16"]
        host_config {
          dns_servers = ["DNS_SERVER_IP"]
          ntp_servers = ["NTP_SERVER_IP"]
        }
        static_ip_config {
          ip_blocks {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_NODE_IP_1"
              hostname = "user-vm-1"
            }
            ips {
              ip = "USER_NODE_IP_2"
              hostname = "user-vm-2"
            }
            ips {
              ip = "USER_NODE_IP_3"
              hostname = "user-vm-3"
            }
            ips {
              ip = "USER_NODE_IP_4"
              hostname = "user-vm-4"
            }
          }
        }
        control_plane_v2_config {
          control_plane_ip_block {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_CONTROL_PLANE_NODE_IP"
              hostname = "cp-vm-1"
            }
          }
        }
      }
      load_balancer {
        vip_config {
          control_plane_vip = "USER_CONTROL_PLANE_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "uc-address-pool"
            manual_assign = "true"
            addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"]
          }
        }
      }
      authorization {
        admin_users {
        username = "GOOGLE_ACCOUNT_EMAIL"
      }
    }
      provider = google-beta
    }
    
    resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" {
      name = "uc-node-pool"
      project = "PROJECT_ID"
      vmware_cluster = "minimal-installation-user-cluster"
      location = "us-central1"
      config {
        replicas = 3
        image_type = "ubuntu_containerd"
        enable_load_balancer = "true"
      }
      depends_on = [
        google_gkeonprem_vmware_cluster.cluster-basic
      ]
      provider = google-beta
    }
    
  3. Copia el recurso de Terraform en main.tf y guarda el archivo.

  4. Inicializa y crea el plan de Terraform:

    terraform init
    

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

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

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

    terraform apply
    

    Cuando se te solicite, introduce yes.

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

gcloud

Crea el clúster:

gcloud container vmware clusters create minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \
  --location=us-central1 \
  --version=1.32.300-gke.85 \
  --admin-users=GOOGLE_ACCOUNT_EMAIL \
  --service-address-cidr-blocks=10.96.0.0/20 \
  --pod-address-cidr-blocks=192.168.0.0/16 \
  --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \
  --control-plane-vip=USER_CONTROL_PLANE_VIP \
  --ingress-vip=USER_INGRESS_VIP \
  --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \
  --dns-servers=DNS_SERVER_IP \
  --ntp-servers=NTP_SERVER_IP \
  --enable-control-plane-v2 \
  --enable-dataplane-v2 \
  --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'

La salida del comando es similar a la siguiente:

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

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

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

Para obtener más información, consulta gcloud container vmware operations.

La creación del clúster de usuarios tarda 15 minutos o más. Puedes ver el clúster en la consola, en la página de descripción general de clústeres de Google Kubernetes Engine.

Crea un grupo de nodos:

gcloud container vmware node-pools create  uc-node-pool \
  --cluster=minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --location=us-central1 \
  --image-type=ubuntu_containerd  \
  --boot-disk-size=40 \
  --cpus=4 \
  --memory=8192 \
  --replicas=3 \
  --enable-load-balancer

Siguientes pasos

Ya has completado esta instalación mínima de Google Distributed Cloud. Como paso opcional, puedes ver tu instalación en acción implementando una aplicación.