Usa Terraform para crear un clúster de administrador para el software de Google Distributed Cloud solo para
VMware si ya usas Terraform para administrar tus Google Cloud recursos de VMware locales. También puedes crear un clúster de administrador con gkectl
o la Google Cloud consola.
Antes de comenzar
Asegúrate de haber configurado tu estación de trabajo de administrador y de poder acceder a ella como se describe en Crea una estación de trabajo de administrador.
Asegúrate de que los archivos de claves JSON para las cuentas de servicio estén en tu estación de trabajo de administrador.
Revisa el documento de planificación de direcciones IP. Asegúrate de tener suficientes direcciones IP disponibles para los tres nodos del plano de control y una VIP del plano de control. Si planeas crear clústeres de usuario de kubeception, debes tener suficientes direcciones IP disponibles para los nodos del plano de control de esos clústeres de usuario.
Revisa la descripción general del balanceo de cargas y revisa la decisión sobre el tipo de balanceador de cargas que deseas usar. Para los balanceadores de cargas manuales, debes configurar el balanceador de cargas antes de crear tu clúster de administrador.
Si usas
gkectlpara crear el clúster de administrador, decide si deseas usar un registro público o privado para los componentes de Google Distributed Cloud. Para obtener información sobre el uso de un registro privado de Docker, consultaprivateRegistry. Ni Terraform ni la Google Cloud consola admiten el uso de un registro privado de Docker para los componentes del sistema.Decide qué tipo de sistema operativo deseas ejecutar en los nodos del clúster de administrador.
Si tu organización requiere que el tráfico saliente pase por un proxy server, asegúrate de incluir en la lista de entidades permitidas las APIs requeridas y la dirección de Artifact Registry.
En la versión 1.29 y versiones posteriores, las comprobaciones previas del servidor están habilitadas de forma predeterminada. Las comprobaciones previas del lado del servidor requieren reglas de firewall adicionales. En Reglas de firewall para clústeres de administrador, busca "Comprobaciones previas" y asegúrate de que todas las reglas de firewall requeridas estén configuradas. Las comprobaciones previas del lado del servidor se ejecutan en el clúster de arranque en lugar de forma local en la estación de trabajo de administrador.
Descripción general del procedimiento
Antes de crear el clúster de administrador, debes ejecutar el comando gkectl 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 del administrador. Este clúster de arranque aloja los controladores de Kubernetes necesarios para crear el clúster de administrador. Cuando crees 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 automáticamente después de que se crea correctamente el clúster de administrador.
Estos son los pasos de alto nivel para crear un clúster de administrador con Terraform:
Completa el archivo de configuración. Usa el google_gkeonprem_vmware_admin_cluster recurso y el ejemplo que sigue para crear el
main.tfarchivo de configuración.Crea un clúster
bootstrap. Ejecutagkectl register bootstrappara crear el clúster de arranque. Cuando el comando termine de crear el clúster de arranque, el resultado te informará que debes finalizar la configuración del clúster de administrador. El proceso continúa ejecutándose hasta que se crea el clúster de administrador.Crea un clúster de administrador. En otra ventana de la terminal o en otra computadora que tenga acceso a la API de GKE On-Prem, ejecuta comandos
terraformpara crear un clúster de administrador nuevo como se especifica en el archivo de configuraciónmain.tfcompletado.
Completa el archivo de configuración
En el siguiente ejemplo, se muestra la creación de un clúster de administrador con alta disponibilidad (HA) con tres nodos del plano de control con MetalLB. En la versión 1.28 y versiones posteriores, los clústeres de administrador nuevos deben tener alta disponibilidad. Debido a este requisito, debes establecer control_plane_node.replicas en 3.
Para obtener más información y otros ejemplos, consulta la
google_gkeonprem_vmware_admin_cluster documentación de referencia. Para obtener información
sobre el uso de un registro privado para imágenes del sistema, consulta
Configura un registro de contenedores privado.
Completa las variables de marcador de posición en el siguiente ejemplo y, luego, cópialo y pégalo en main.tf. Si usaste gkeadm para crear tu estación de trabajo de administrador, abre el archivo de configuración de la estación de trabajo de administrador para poder copiar valores de la sección vCenter a las variables de marcador de posición correspondientes.
resource "google_gkeonprem_vmware_admin_cluster" "admin-cluster-metallb" {
provider = google-beta
name = "ADMIN_CLUSTER_NAME"
project = "PROJECT_ID"
location = "REGION"
description = "DESCRIPTION"
bootstrap_cluster_membership = "projects/PROJECT_ID/locations/REGION/memberships/bootstrap-ADMIN_CLUSTER_NAME"
on_prem_version = "VERSION"
image_type = "IMAGE_TYPE"
vcenter {
address = "VCENTER_ADDRESS"
datacenter = "DATA_CENTER"
cluster = "VCENTER_CLUSTER"
resource_pool = "RESOURCE_POOL"
datastore = "DATASTORE"
ca_cert_data = "CA_CERT_DATA"
}
network_config {
service_address_cidr_blocks = ["10.96.232.0/24"]
pod_address_cidr_blocks = ["192.168.0.0/16"]
vcenter_network = "NETWORK"
dhcp_ip_config {
enabled = true
}
host_config {
dns_servers = ["DNS_SERVERS"]
ntp_servers = ["NTP_SERVERS"]
}
ha_control_plane_config {
control_plane_ip_block {
gateway = "GATEWAY"
netmask = "NETMASK"
ips {
hostname = "CONTROL_PLANE_HOST_1"
ip = "CONTROL_PLANE_NODE_IP_1"
}
ips {
hostname = "CONTROL_PLANE_HOST_2"
ip = "CONTROL_PLANE_NODE_IP_2"
}
ips {
hostname = "CONTROL_PLANE_HOST_3"
ip = "CONTROL_PLANE_NODE_IP_3"
}
}
}
}
control_plane_node {
cpus = NUM_CPUS
memory = MEMORY
replicas = 3
}
load_balancer {
vip_config {
control_plane_vip = "CONTROL_PLANE_VIP"
}
metal_lb_config {
enabled = true
}
}
}
Reemplaza lo siguiente:
ADMIN_CLUSTER_NAME: Es el nombre del clúster de administrador. El nombre tiene una longitud máxima de 20 caracteres.PROJECT_ID: Es el Google Cloud ID del proyecto.REGION: Es la Google Cloud región en la que se ejecutan la API de GKE On-Prem (gkeonprem.googleapis.com), el servicio de flota (gkehub.googleapis.com) y el servicio de Connect (gkeconnect.googleapis.com). Especificaus-west1o cualquier otra región admitida.El campo
locationcorresponde a la marca--locationen el comandogkectl register bootstrap.DESCRIPTION: Es una descripción del clúster de administrador.VERSION: Es la versión de Google Distributed Cloud para el clúster. La creación de un clúster con Terraform solo se admite en las versiones 1.28 y posteriores. La versión que especifiques aquí debe coincidir con la versión del paquete que especifiques en la--bundle-pathmarca en el comandogkectl register bootstrap. Para obtener una lista de versiones, consulta Versiones de Google Distributed Cloud.IMAGE_TYPE: Es el tipo de imagen de SO que se ejecutará en los nodos del clúster de administrador. Especifica una de las siguientes opciones: "ubuntu_containerd", "cos", "ubuntu_cgv2" o "cos_cgv2".VCENTER_ADDRESS: la dirección de vCenter Server.Archivo de configuración de la estación de trabajo de administrador: Usa el valor del campo
vCenter.credentials.address.El campo
vcenter.addresscorresponde a la marca--vcenter-addressen el comandogkectl register bootstrap.
DATA_CENTER: Es el nombre de tu centro de datos de vCenter.Archivo de configuración de la estación de trabajo de administrador: Usa el valor del
vCenter.datacentercampo.El campo
vcenter.datacentercorresponde a la marca--vcenter-datacenteren el comandogkectl register bootstrap.
VCENTER_CLUSTER: Es el nombre de tu clúster de vCenter.Archivo de configuración de la estación de trabajo de administrador: Usa el valor del campo
vCenter.cluster.El campo
vcenter.clustercorresponde a la marca--vcenter-clusteren el comandogkectl register bootstrap.
RESOURCE_POOL: Es el nombre o la ruta de acceso de tu grupo de recursos de vCenter.Archivo de configuración de la estación de trabajo de administrador: Usa el valor del campo
vCenter.resourcePool.El campo
vcenter.resource_poolcorresponde a la marca--vcenter-resource-poolen el comandogkectl register bootstrap.
DATASTORE: Es el nombre de tu almacén de datos de vCenter. El valor que especifiques debe ser un nombre, no una ruta de acceso. Si necesitas ingresar una ruta de acceso, agrega el siguiente campo:folder = "FOLDER"Archivo de configuración de la estación de trabajo de administrador: Usa el valor del campo
vCenter.datastore.El campo
vcenter.datastorecorresponde a la marca--vcenter-datastoreen el comandogkectl register bootstrap.
Si deseas usar una política de almacenamiento de VM para los nodos del clúster, quita el campo
vcenter.datastorey agregavcenter.storage_policy_nameen su lugar. Además, agrega la marca--vcenter-storage-policyal comandogkectl register bootstrap. Debes especificar un valor paravcenter.datastoreovcenter.storage_policy_name, pero no para ambos.FOLDER: Es el nombre de la carpeta de vCenter en la que se ubicarán las VMs del clúster. Si no usas una carpeta, quita este campo.Archivo de configuración de la estación de trabajo de administrador: Usa el valor del campo
vCenter.folder.El campo
vcenter.foldercorresponde a la marca--vcenter-folderen el comandogkectl register bootstrap.
CA_CERT_DATA: Es el certificado de la AC de vCenter en formato PEM, pero con todos los saltos de línea reemplazados por la cadena\n.Ejecuta el siguiente comando para reemplazar los saltos de línea por
\n:awk 'ORS="\\n" {print}' CA_CERT_PATH_LOCALReemplaza
CA_CERT_PATH_LOCALpor la ruta de acceso al certificado de la AC raíz de tu vCenter Server. Si usastegkeadmpara crear tu estación de trabajo de administrador, puedes usar el valor del campocaCertPathen el archivo de configuración de la estación de trabajo de administrador, que es la ruta de acceso en tu computadora local.gkeadmcopió el archivo de certificado de la AC en tu estación de trabajo de administrador. Debes especificar la ruta de acceso de la estación de trabajo de administrador en la marca--vcenter-ca-cert-pathen el comandogkectl register bootstrap.Copia el resultado del comando anterior y pégalo en la variable de marcador de posición
CA_CERT_DATA.
NETWORK: Es el nombre de tu red de vCenter.Archivo de configuración de la estación de trabajo de administrador: Usa el valor del campo
vCenter.network.El campo
network_config.vcenter_networkcorresponde a la marca--vcenter-networken el comandogkectl register bootstrap.
GATEWAY: Es la dirección IP de la puerta de enlace predeterminada para la subred que tiene los nodos del clúster del plano de control.NETMASK: Es la máscara de red para la subred que tiene los nodos del clúster del plano de control.DNS_SERVERS: Es la dirección IP del servidor DNS.NTP_SERVERS: Es la dirección IP del servidor de hora (NTP).Ingresa las direcciones IP y, de forma opcional, el nombre de host para los tres nodos del plano de control en la sección
control_plane_ip_block.ips. Si no ingresas un nombre de host, quita los camposhostnamede la configuración.NUM_CPUS: Es la cantidad de vCPUs para cada nodo del plano de control en el clúster de administrador. Debe ser un mínimo de 4.MEMORY: Es la cantidad de mebibytes de memoria para cada nodo del plano de control en el clúster de administrador. Debe ser un mínimo de 8192, pero recomendamos 16384.CONTROL_PLANE_VIP: Es la dirección IP que decidiste configurar en el balanceador de cargas para el servidor de la API de Kubernetes del clúster de administrador.
Opcional: Configura un registro privado
De forma predeterminada, durante la creación o actualización del clúster, Google Distributed Cloud extrae imágenes del sistema
de gcr.io/gke-on-prem-release con la
cuenta de servicio de acceso a componentes.
De forma opcional, puedes proporcionar tu propio servidor de registro de contenedores para que las imágenes del sistema se extraigan de tu servidor de registro privado.
Para configurar un registro privado, haz lo siguiente:
Agrega lo siguiente al archivo de configuración del clúster de administrador:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }Reemplaza lo siguiente:
ADDRESS: Es la dirección IP o FQDN (nombre de dominio completamente calificado) de la máquina que ejecuta tu registro privado.CA_CERT: Son los datos del certificado de la AC de la clave pública, pero con todos los saltos de línea reemplazados por la cadena\n.
Ejecuta el siguiente comando para reemplazar los saltos de línea por
\n:awk 'ORS="\\n" {print}' PUBLIC_KEY_PATHReemplaza
PUBLIC_KEY_PATHpor la ruta de acceso a la clave pública.Copia el resultado del comando anterior y pégalo en la variable de marcador de posición
CA_CERT.
Si la red está detrás de un servidor proxy, agrega lo siguiente:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }Reemplaza lo siguiente:
PROXY_SERVER_ADDRESS: Es la dirección HTTP de tu servidor proxy. Incluye el número de puerto incluso si es el mismo que el puerto predeterminado del esquema.BYPASS_LIST: Es una lista separada por comas de direcciones IP, rangos de direcciones IP, nombres de host y nombres de dominio que no deben pasar por el servidor proxy.
Ejemplo:
url: "http://my-proxy.example.local:80" no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"Cuando Google Distributed Cloud envía una solicitud a una de estas direcciones, hosts o dominios, la solicitud omite el servidor proxy y se envía directamente al destino.
Para obtener más información sobre el uso de un registro privado, incluidas las diferencias entre los clústeres normales y los clústeres avanzados, consulta Configura un registro de contenedores privado.
Verifica el archivo de configuración y el plan
En el directorio donde se encuentra main.tf, ejecuta los siguientes comandos:
Inicializa Terraform mediante este comando:
terraform initTerraform instala las bibliotecas necesarias, como el Google Cloud proveedor. Corrige los errores en
maint.tfsi es necesario.Crea el plan de Terraform:
terraform plan -out tfplanRevisa la configuración y realiza cambios si es necesario.
Antes de aplicar el plan, primero debes crear el clúster de arranque como se describe en la siguiente sección.
Crea el clúster de arranque
Cuando ejecutas el comando gkectl register bootstrap, se te solicita el nombre de usuario y la contraseña de la cuenta de vCenter. Asegúrate de tener las credenciales disponibles. Si usaste gkeadm para crear la estación de trabajo de administrador, el nombre de usuario y la contraseña se encuentran en el archivo credential.yaml.
Accede a tu estación de trabajo de administrador con SSH.
Autentica con Google Cloud CLI
gcloud auth login
Ejecuta el siguiente comando para crear el clúster de arranque. Muchos de los valores de las marcas son los mismos que en los campos
main.tf. Sin embargo, ten en cuenta que el comando toma valores adicionales que debes especificar en las variables de marcador de posición proporcionadas.gkectl register bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --vcenter-address=VCENTER_ADDRESS \ --vcenter-datacenter=DATA_CENTER \ --vcenter-cluster=VCENTER_CLUSTER \ --vcenter-resource-pool=RESOURCE_POOL \ --vcenter-datastore=DATASTORE \ --vcenter-network=NETWORK \ --vcenter-ca-cert-path=CA_CERT_PATH \ --bundle-path=BUNDLE_PATH \ --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \ --stackdriver-service-account-key-path=LOG_MON_SA_PATH \ --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \ --admin-kubeconfig-out=KUBECONFIG_NAMEReemplaza lo siguiente por las rutas de acceso de la estación de trabajo de administrador:
CA_CERT_PATH: Es la ruta de acceso al certificado de la AC raíz de vCenter Server.BUNDLE_PATH: Es la ruta de acceso al archivo del paquete. Si usastegkeadmpara crear la estación de trabajo de administrador, el archivo del paquete se encuentra en/var/lib/gke/bundles/. El nombre del archivo depende de la versión de Google Distributed Cloud, por ejemplo,gke-onprem-vsphere-1.31.0-gke.889-full.tgz.COMPONENT_ACCESS_SA_PATH: Es la ruta de acceso al archivo de claves de la cuenta de servicio de acceso a componentes.CONNECT_REGISTER_SA_PATH: Es la ruta de acceso al archivo de claves de la cuenta de servicio de registro de conexión.LOG_MON_SA_PATH: Es la ruta de acceso al archivo de claves de la cuenta de servicio de supervisión de registros.CLOUD_AUDIT_SA_PATH: Es la ruta de acceso a la cuenta de servicio de registro de auditoría. Si no creaste una cuenta de servicio de registro de auditoría, especifica la ruta de acceso al archivo de claves de la cuenta de servicio de supervisión de registros.KUBECONFIG_NAME: Es el nombre del archivo kubeconfig que crea el comandogkectl register bootstrap. Si no especificas esta marca, el comando crea el archivo con el nombrekubeconfigen el directorio de trabajo actual. Si hay un archivo existente llamadokubeconfig, el comando lo reemplaza.
Modifica el comando según sea necesario para las siguientes marcas:
- Si especificaste una carpeta en
main.tf, agrega la siguiente marca:--vcenter-folder=FOLDER - Si especificaste una política de almacenamiento de VM en
main.tf, quita--vcenter-datastorey agrega la siguiente marca:--vcenter-storage-policy-name=STORAGE_POLICY_NAME Si tu estación de trabajo de administrador estará en una red que se encuentra detrás de un servidor proxy, agrega las siguientes marcas:
--proxy-url=PROXY_URL--no-proxy=NO_PROXY
Reemplaza lo siguiente:
- PROXY_URL: Es la URL del servidor proxy.
- NO_PROXY: Es el valor de los dominios y las direcciones IP excluidos del proxy, separados por comas.
Si agregas una marca, asegúrate de agregar el carácter de barra invertida de continuación de la línea de comandos (\).
Cuando se te solicite, ingresa (o copia y pega) el nombre de usuario de vCenter. El nombre de usuario no se muestra en la pantalla.
Cuando se te solicite, ingresa (o copia y pega) la contraseña de vCenter. La contraseña no se muestra en la pantalla.
El comando ejecuta varias validaciones. Después de que gkectl cree correctamente el clúster de arranque, verás un resultado similar al siguiente, que se trunca para facilitar la lectura:
Running workstation validations
- Validation Category: Workstation
- [SUCCESS] Workstation OS
- [SUCCESS] Workstation Hardware
- [SUCCESS] Workstation Package
- [SUCCESS] Workstation NTP
- [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -
El proceso continúa ejecutándose hasta que se crea el clúster de administrador.
Si sales del comando gkectl register bootstrap antes de que se cree el clúster de administrador, la creación fallará y deberás borrar el clúster de arranque con el siguiente comando:
gkectl delete bootstrap \
--target-cluster-name=ADMIN_CLUSTER_NAME \
--project-id=PROJECT_ID \
--location=REGION \
--register-service-account-key-path=CONNECT_REGISTER_SA_PATH
Crea el clúster de administrador:
Aplica el plan de Terraform para crear el clúster de administrador:
terraform apply "tfplan"
La creación del clúster de administrador toma 15 minutos o más. Puedes ver el clúster en la Google Cloud consola en la página Clústeres de GKE.
Conéctate al clúster de administrador
El comando gkectl register bootstrap crea un archivo kubeconfig para el clúster de administrador en tu estación de trabajo de administrador. Si no especificaste la
--admin-kubeconfig-out marca cuando ejecutaste gkectl register bootstrap, el
comando crea un archivo kubeconfig llamado kubeconfig en el directorio en
el que ejecutaste el comando.
Debes restringir el acceso a este kubeconfig porque contiene credenciales de autenticación para el clúster.
Además, puedes ejecutar comandos kubectl de solo lectura a través de la puerta de enlace de conexión.
Ejecuta el siguiente comando en una computadora que tenga gcloud CLI para obtener una entrada
kubeconfigque pueda acceder al clúster a través de la puerta de enlace de conexión.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_IDEl resultado es similar a este:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.Ahora puedes ejecutar comandos
kubectlde solo lectura a través de la puerta de enlace de conexión, como los siguientes:kubectl get pods -ASi necesitas privilegios administrativos completos para el clúster de administrador, consulta Configura la puerta de enlace de conexión.