Esta página es la segunda parte de una guía en la que se explica el uso del software de Google Distributed Cloud (antes conocido como Google Distributed Cloud Virtual) para crear una pequeña instalación de prueba de concepto de los clústeres de GKE en tu hardware Bare Metal. En la primera parte, Configura la infraestructura mínima, se muestra cómo configurar tu hardware, planificar direcciones IP y configurar la infraestructura de Google Cloud necesaria. Este documento se basa en la configuración y la planificación de la sección anterior y te muestra cómo crear un clúster de administrador y un clúster de usuario. Luego, puedes continuar con Crea un servicio y un Ingress.
Esta guía te ayuda a crear una instalación mínima de Google Distributed Cloud. Es posible que esta instalación mínima no sea adecuada para tus casos de uso y necesidades de producción reales. Para obtener información sobre las instalaciones de producción, consulta las guías de instalación.
Antes de comenzar
Asegúrate de haber configurado el hardware y planificado tus direcciones IP como se describe en la parte anterior de esta guía Configura la infraestructura mínima. Como alternativa, usa el planificador de requisitos de red de la sección Requisitos previos del flujo Crea un clúster de administrador de GKE en Bare Metal en la consola de Google Cloud.
Si quieres usar Terraform para crear el clúster de usuario, necesitas Terraform, ya sea en tu estación de trabajo de administrador o en otra computadora.
Asegúrate de tener instalados los componentes más recientes de Google Cloud CLI:
gcloud components update
Sigue estos pasos para activar y usar la API de GKE On-Prem:
Habilita la API en tu proyecto:
gcloud services enable \ --project PROJECT_ID \ gkeonprem.googleapis.com
Reemplaza
PROJECT_ID
por el ID del proyecto host de tu flota.Si recibes un error
PERMISSION_DENIED
, vuelve a verificar el ID del proyecto que ingresaste. Si el ID del proyecto es correcto, ejecutagcloud auth login
para acceder a Google Cloud CLI con la cuenta que tiene acceso al proyecto.Si es la primera vez que habilitas la API de GKE On-Prem en tu proyecto, deberás inicializar la API. Para ello, llama a un comando de gcloud CLI que muestra las versiones disponibles que puedes usar para crear un clúster:
gcloud container bare-metal clusters query-version-config \ --project=PROJECT_ID \ --location="us-central1"
Descripción general del procedimiento
La creación de clústeres básicos consta de estos pasos principales:
Recopila información que se usa para especificar la configuración de tus clústeres.
Crea un clúster de administrador para administrar el clúster de usuario.
Crea un clúster de usuario que pueda ejecutar tus cargas de trabajo.
1. Recopila información
Usa la información que preparaste en Configura la infraestructura mínima o del planificador de red para completar cada marcador de posición en la siguiente tabla. Los marcadores de posición corresponden a los valores de campo en los archivos de configuración del clúster para la instalación mínima de un clúster de administrador y un clúster de usuario. Algunos marcadores de posición se establecen en los valores completados previamente del archivo de configuración del clúster generado, pero todos los marcadores de posición son editables.
Información básica del clúster | |
El nombre del clúster de administrador que creas. La ubicación y el nombre de los artefactos del clúster en la estación de trabajo de administrador se basan en el nombre del clúster. El espacio de nombres del clúster deriva del nombre del clúster. | ADMIN_CLUSTER_NAME |
El nombre del clúster de usuario que estás creando. La ubicación y el nombre de los artefactos del clúster en la estación de trabajo de administrador se basan en el nombre del clúster. El espacio de nombres del clúster deriva del nombre del clúster. | USER_CLUSTER_NAME |
Es la versión de bmctl que descargaste en la primera parte de esta guía. |
CLUSTER_VERSION |
Información de la cuenta | |
Es la ruta de acceso al archivo de claves privadas SSH en la estación de trabajo de administrador. De forma predeterminada, la ruta es/home/USERNAME/.ssh/id_rsa . |
SSH_PRIVATE_KEY_PATH |
El ID del proyecto de Google Cloud que deseas usar para conectar tu clúster a Google Cloud y ver registros y métricas. Este proyecto también se conoce como el proyecto host de flota. | PROJECT_ID |
La dirección de correo electrónico que está asociada con tu cuenta de Google Cloud. Por ejemplo: alex@example.com . |
GOOGLE_ACCOUNT_EMAIL |
Direcciones IP de la máquina del nodo | |
Una dirección IP para el nodo del plano de control del clúster de administrador. | ADMIN_CP_NODE_IP |
Una dirección IP para el nodo del plano de control del clúster de usuario. | USER_CP_NODE_IP |
Una dirección IP para el nodo trabajador del clúster de usuario. | USER_WORKER_NODE_IP |
Direcciones VIP | |
Es la VIP para el servidor de la API de Kubernetes del clúster de administrador. | ADMIN_CP_VIP |
VIP para el servidor de la API de Kubernetes del clúster de usuario. | USER_CP_VIP |
Una VIP para usar como dirección externa del proxy de entrada | USER_INGRESS_VIP |
Rango de diez direcciones IP para usar como direcciones IP externas para Services de tipo LoadBalancer. Ten en cuenta que este rango incluye la VIP de entrada, que es requerida por MetalLB. Ninguna otra dirección IP puede superponerse a este rango. | START_IP-END_IP |
CIDR de Pod y Service | |
Rango de direcciones IP en notación de bloques CIDR para que las usen los Pods en el
clúster de administrador. El valor de inicio recomendado, que se completa previamente en el
archivo de configuración del clúster generado es 192.168.0.0/16 . |
192.168.0.0/16 |
Rango de direcciones IP en notación de bloques CIDR para que las usen los servicios en el clúster de administrador. El valor de inicio recomendado, que se completa previamente en el
archivo de configuración del clúster generado es 10.96.0.0/20 . |
10.96.0.0/20 |
Rango de direcciones IP en notación de bloques CIDR para que las usen los Pods en el
clúster de usuario. El valor inicial recomendado, que está completado previamente en el
archivo de configuración del clúster generado y es el valor predeterminado en la
consola, es 192.168.0.0/16 . |
192.168.0.0/16 |
Rango de direcciones IP en notación de bloques CIDR para que las usen los servicios en el clúster de usuario. El valor inicial recomendado, que está completado previamente en el
archivo de configuración del clúster generado y es el valor predeterminado en la
consola, es 10.96.0.0/20 . |
10.96.0.0/20 |
2. Crear un clúster de administrador
Mediante los siguientes pasos, se crea un clúster de administrador para una instalación mínima de clústeres de administrador y de usuario. Asegúrate de proporcionar valores para cada marcador de posición en la tabla de la sección anterior Recopilar información antes de continuar.
Cuando la API de GKE On-Prem (gkeonprem.googleapis.com
) está habilitada en tu proyecto, los clústeres recién creados se inscriben en la API de forma automática.
La inscripción se produce incluso cuando no se especifica spec.gkeOnPremAPI
en el archivo de configuración del clúster. Inscríbete en esta
API alojada en Google Cloud te permite administrar el ciclo de vida de tu clúster con la
consola de Google Cloud o gcloud CLI.
Para inhabilitar la inscripción automática, quita el comentario de la sección spec.gkeOnPremAPI
en el archivo de configuración del clúster y establece spec.gkeOnPremAPI.enabled
en false
antes de crear el clúster. El campo spec.gkeOnPremAPI.enabled
es mutable, por lo que puedes dar de baja tu clúster en cualquier momento después de su creación.
Para crear un clúster de administrador para la instalación mínima, haz lo siguiente:
Establece las credenciales predeterminadas que Google Distributed Cloud puede usar para crear el clúster con el siguiente comando:
gcloud auth application-default login
Para generar un archivo de configuración del clúster, ejecuta el siguiente comando desde el directorio
/baremetal
en la estación de trabajo de administrador:bmctl create config -c ADMIN_CLUSTER_NAME \ --enable-apis --create-service-accounts --project-id=PROJECT_ID
Verifica el archivo de configuración del clúster de administrador:
El siguiente archivo de configuración del clúster se completa con los valores que ingresaste en la tabla de planificación de la sección anterior. Además de los valores que ingresaste, ten en cuenta las siguientes diferencias con respecto al archivo de configuración generado:
- Se quitaron los comentarios de esta muestra para mejorar la legibilidad.
- Se quitó la especificación
NodePool
. No se permiten nodos trabajadores para un clúster de administrador.
gcrKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-gcr.json sshPrivateKeyPath: SSH_PRIVATE_KEY_PATH gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-connect.json gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-register.json cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-cloud-ops.json --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: CLUSTER_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: ADMIN_CP_NODE_IP clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: ADMIN_CP_VIP clusterOperations: projectID: PROJECT_ID location: us-central1 storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem # API to enable/disable cluster lifecycle management from gcloud UI and Terraform. # gkeOnPremAPI: # enabled: false # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled. # location: us-central1
Reemplaza el contenido del archivo de configuración generado en tu estación de trabajo de administrador por el contenido del ejemplo anterior.
Abre el archivo generado
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml
y reemplaza su contenido por el de la muestra que verificaste en el paso anterior.Para crear el clúster de administrador, ejecuta el siguiente comando desde el directorio
/baremetal
en la estación de trabajo de administrador:bmctl create cluster -c ADMIN_CLUSTER_NAME
El comando
bmctl
muestra el resultado en la pantalla mientras ejecuta las comprobaciones preliminares y crea el clúster. La información detallada se escribe en los registros de la carpetabaremetal/bmctl-workspace/ADMIN_CLUSTER_NAME/log
de la estación de trabajo de administrador.La creación del clúster puede tomar varios minutos en completarse.
Verifica que tu clúster se haya creado y esté en ejecución:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ get nodes
Si se está ejecutando el clúster, la respuesta debería ser similar a la siguiente:
NAME STATUS ROLES AGE VERSION node-01 Ready control-plane 16h v1.25.7-gke.1000
Para otorgar a tu cuenta de usuario el rol
clusterrole/cluster-admin
de Kubernetes en el clúster, ejecuta el siguiente comandogcloud
:gcloud container fleet memberships generate-gateway-rbac \ --membership=ADMIN_CLUSTER_NAME \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ --context=ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME \ --apply
El resultado de este comando es similar al siguiente, que se trunca para facilitar la lectura:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-kubeconfig, context: <var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-admin@<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var> Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
Entre otras cosas, la política de RBAC te permite acceder a tu clúster en la consola de Google Cloud para ver más detalles del clúster.
3. Crea un clúster de usuario
Mediante los siguientes pasos, se crea un clúster de usuario para una instalación mínima de clústeres de administrador y de usuario. Asegúrate de proporcionar valores para cada marcador de posición en la tabla de la sección Recopilar información anterior antes de continuar.
Para crear un clúster de usuario para la instalación mínima, haz lo siguiente:
bmctl
Cuando la API de GKE On-Prem (gkeonprem.googleapis.com
) está habilitada en tu proyecto, los clústeres recién creados se inscriben en la API de forma automática.
La inscripción se produce incluso cuando no se especifica spec.gkeOnPremAPI
en el archivo de configuración del clúster. Cuando tu clúster está
inscrito en esta API alojada en Google Cloud, puedes usar la consola de Google Cloud
o gcloud CLI para administrar su ciclo de vida.
Para inhabilitar la inscripción automática, quita el comentario de la sección spec.gkeOnPremAPI
en el archivo de configuración del clúster y establece spec.gkeOnPremAPI.enabled
en false
antes de crear el clúster. El campo spec.gkeOnPremAPI.enabled
es mutable, por lo que puedes dar de baja tu clúster en cualquier momento después de su creación.
Genera un archivo de configuración del clúster:
bmctl create config -c USER_CLUSTER_NAME \ --project-id=PROJECT_ID
Verifica el archivo de configuración del clúster de usuario:
El siguiente archivo de configuración del clúster se completa con los valores que ingresaste en la tabla de planificación antes. Además de los valores que ingresaste, ten en cuenta las siguientes diferencias con respecto al archivo de configuración generado:
- Se quitaron los comentarios de esta muestra para mejorar la legibilidad.
- El tipo de clúster,
spec.type
, se estableció enuser
. - Se agregó el campo
spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts
para otorgarclusterrole/cluster-admin
a tu cuenta. Entre otras cosas, este campo te permite acceder a tu clúster en la consola de Google Cloud para ver más detalles del clúster.
--- apiVersion: v1 kind: Namespace metadata: name: cluster-USER_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: USER_CLUSTER_NAME namespace: cluster-USER_CLUSTER_NAME spec: type: user profile: default anthosBareMetalVersion: CLUSTER_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: USER_CP_NODE_IP clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: USER_CP_VIP ingressVIP: USER_INGRESS_VIP addressPools: - name: pool1 addresses: - START_IP-END_IP clusterOperations: projectID: PROJECT_ID location: us-central1 clusterSecurity: authorization: clusterAdmin: gcpAccounts: - GOOGLE_ACCOUNT_EMAIL storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem # API to enable/disable cluster lifecycle management from gcloud UI and Terraform. # gkeOnPremAPI: # enabled: false # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled. # location: us-central1 --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: cluster-USER_CLUSTER_NAME spec: clusterName: USER_CLUSTER_NAME nodes: - address: USER_WORKER_NODE_IP
Reemplaza el contenido del archivo de configuración generado en tu estación de trabajo de administrador por el contenido del ejemplo anterior.
Abre el archivo generado
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME.yaml
y reemplaza su contenido por el de la muestra que verificaste en el paso anterior.Crea el clúster de usuario:
bmctl create cluster -c USER_CLUSTER_NAME \ --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
El comando
bmctl
muestra el resultado en la pantalla mientras ejecuta las comprobaciones preliminares y crea el clúster. La información detallada se escribe en los registros de la carpetabaremetal/bmctl-workspace/USER_CLUSTER_NAME/log
de la estación de trabajo de administrador.La creación del clúster puede tomar varios minutos en completarse.
Verifica que tu clúster se haya creado y esté en ejecución:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \ get nodes
Si se está ejecutando el clúster, la respuesta debería ser similar a la siguiente:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Console
Sigue estos pasos para crear un clúster de usuario en la consola:
En la consola, ve a la página Crea un clúster de GKE en Bare Metal.
Asegúrate de que la lista de proyectos de Google Cloud tenga seleccionado
PROJECT_ID
.Haz clic en Crear clúster.
En el cuadro de diálogo, haz clic en Local.
Junto a Bare metal, haz clic en Configurar. Aparecerá la página Requisitos previos.
En Elige tu tipo de clúster, selecciona Crear un clúster de usuario para un clúster de administrador existente.
Haz clic en Siguiente.
Conceptos básicos del clúster
Ingresa
USER_CLUSTER_NAME
como el nombre del clúster de usuario o usa el predeterminado.Asegúrate de que esté seleccionado el clúster de administrador recién creado.
En GCP API Location, selecciona us-central1.
En Versión de Google Distributed Cloud, selecciona
CLUSTER_VERSION
o usa la configuración predeterminada. Puedes usar los valores predeterminados para el resto de la configuración de esta página.Haz clic en Herramientas de redes en la barra de navegación de la izquierda.
Herramientas de redes
En la sección Plano de control, ingresa lo siguiente en el campo IP 1 del nodo del plano de control:
USER_CP_NODE_IP
En la sección Balanceador de cargas, usa el balanceador de cargas predeterminado, Bundled with MetalLB.
Ve a la sección Nuevo grupo de direcciones. Ingresa el rango de direcciones IP en el campo Rango de direcciones IP 1:
10.200.0.51-10.200.0.70
Haz clic en Listo.
En la sección IP virtuales, ingresa la dirección IP para la VIP del plano de control:
USER_CP_VIP
Ingresa la dirección IP para la VIP de entrada:
USER_INGRESS_VIP
En la sección CIDR de Service y Pod, si no cambiaste los CIDR de Service y Pod en el planificador, puedes usar los valores predeterminados.
Si cambiaste los CIDR, ingresa los que deseas utilizar:
- CIDR de Service:
10.96.0.0/20
- CIDR del Pod:
192.168.0.0/16
Haz clic en default pool en la barra de navegación izquierda.
Crear un grupo de nodos
Tu clúster debe tener al menos un grupo de nodos para los nodos trabajadores. Un grupo de nodos es una plantilla para los grupos de nodos trabajadores que se crean en este clúster.
Ingresa la dirección IP del nodo trabajador del clúster de usuario en el campo Dirección de nodos 1:
USER_WORKER_NODE_IP
Crea el clúster
Haz clic en Verificar y crear para crear el clúster de usuario.
La creación del clúster de usuario lleva 15 minutos o más. En la consola, se muestran mensajes de estado mientras verifica la configuración y crea el clúster.
Si hay un problema con la configuración, la consola mostrará un mensaje de error que debería ser lo suficientemente claro como para que puedas solucionar el problema y volver a crear el clúster.
Si quieres ver información adicional sobre el proceso de creación, haz clic en Mostrar detalles para mostrar un panel lateral. Haz clic en
para cerrar el panel de detalles.Cuando se crea el clúster, se muestra Estado del clúster: en ejecución.
Después de crear el clúster, haz clic en
Clústeres para volver a la página Clústeres.
gcloud CLI
En esta sección, se muestra cómo crear un clúster de usuario y un grupo de nodos con gcloud CLId.
Ejecuta el siguiente comando para crear un clúster de usuario:
gcloud container bare-metal clusters create USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=us-central1 \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=PROJECT_ID \ --admin-cluster-membership-location=global \ --version=CLUSTER_VERSION \ --admin-users=GOOGLE_ACCOUNT_EMAIL \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=START_IP-END_IP' \ --control-plane-node-configs='node-ip=USER_CP_NODE_IP' \ --control-plane-vip=USER_CP_VIP \ --control-plane-load-balancer-port=443 \ --ingress-vip=USER_INGRESS_VIP \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
El resultado del comando es similar al siguiente:
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
En el resultado de ejemplo, la cadena
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
es elOPERATION_ID
de la operación de larga duración. Puedes averiguar el estado de la operación con el siguiente comando:gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=us-central1
La creación del clúster tarda alrededor de 15 minutos o más. A medida que se crea el clúster, puedes ejecutar el comando anterior de vez en cuando para obtener el estado actual.
Cuando se cree el clúster, verás un resultado como el siguiente:
Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/bareMetalClusters/USER_CLUSTER_NAME].
Después de crear el clúster, ejecuta el siguiente comando para crear un grupo de nodos en el clúster recién creado.
gcloud container bare-metal node-pools create node-pool-1 \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=us-central1 \ --node-configs node-ip=USER_WORKER_NODE_IP
Para obtener más información y otros ejemplos, consulta los siguientes vínculos:
Terraform
En esta sección, se muestra cómo crear un clúster de usuario y un grupo de nodos con Terraform.
Crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
. En esta guía, el archivo se llamamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Verifica el recurso de Terraform del clúster de usuario:
El siguiente ejemplo de recurso de Terraform se completa con los valores que ingresaste en la tabla de planificación de la sección anterior.
resource "google_gkeonprem_bare_metal_cluster" "cluster-basic" { provider = google-beta name = "USER_CLUSTER_NAME" project = "PROJECT_ID" location = "us-central1" admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME" bare_metal_version = "CLUSTER_VERSION" network_config { island_mode_cidr { service_address_cidr_blocks = ["10.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] } } control_plane { control_plane_node_pool_config { node_pool_config { labels = {} operating_system = "LINUX" node_configs { labels = {} node_ip = "USER_CP_NODE_IP" } } } } load_balancer { port_config { control_plane_load_balancer_port = 443 } vip_config { control_plane_vip = "USER_CP_VIP" ingress_vip = "USER_INGRESS_VIP" } metal_lb_config { address_pools { pool = "pool1" addresses = [ "START_IP-END_IP" ] avoid_buggy_ips = true manual_assign = true } } } storage { lvp_share_config { lvp_config { path = "/mnt/localpv-share" storage_class = "local-shared" } shared_path_pv_count = 5 } lvp_node_mounts_config { path = "/mnt/localpv-disk" storage_class = "local-disks" } } security_config { authorization { admin_users { username = "GOOGLE_ACCOUNT_EMAIL" } } } } resource "google_gkeonprem_bare_metal_node_pool" "node-pool-default" { provider = google-beta name = "node-pool-1" bare_metal_cluster = google_gkeonprem_bare_metal_cluster.cluster-basic.name project = "PROJECT_ID" location = "us-central1" node_pool_config { operating_system = "LINUX" node_configs { node_ip = "USER_WORKER_NODE_IP" } } }
Copia el recurso de Terraform en
main.tf
y guarda el archivo.Inicializa y crea terraform plan:
terraform init
Terraform instala las bibliotecas necesarias, como el proveedor de Google Cloud.
Revisa la configuración y realiza cambios si es necesario:
terraform plan
Aplica el plan de Terraform para crear el clúster de usuario:
terraform apply
Cuando se te solicite, ingresa
yes
.Toma alrededor de 15 minutos (o más, según tu red) crear el clúster de usuario y el grupo de nodos básicos.
Si deseas crear un archivo kubeconfig para el clúster de usuario, ejecuta el siguiente comando en la estación de trabajo de administrador:
bmctl get credentials --cluster USER_CLUSTER_NAME \ --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
El resultado del comando muestra el nombre del archivo kubeconfig para el clúster de usuario, por ejemplo:
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig
El
TIMESTAMP
en el nombre del archivo indica la fecha y hora en que se creó el archivo.Debido a que este archivo contiene credenciales de autenticación para tu clúster, debes almacenarlo en una ubicación segura con acceso restringido.
Verifica que tu clúster se haya creado y esté en ejecución:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \ get nodes
Si se está ejecutando el clúster, la respuesta debería ser similar a la siguiente:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Para obtener más información y otros ejemplos, consulta los siguientes vínculos:
Conéctate al clúster de usuario
Sin importar qué herramienta hayas usado para crear el clúster de usuario, a tu dirección de correo electrónico se le otorgan las políticas de control de acceso basado en funciones (RBAC) que te permiten conectarte al clúster con privilegios administrativos completos. La ubicación en la que se especifique tu dirección de correo electrónico depende de la herramienta:
bmctl
: Tu dirección de correo electrónico se incluye en la secciónclusterSecurity
del archivo de configuración de usuario de ejemplo.Terraform: Tu dirección de correo electrónico se incluye en la sección
security_config
del recursogoogle_gkeonprem_bare_metal_cluster
de ejemplo.La consola: Como creador del clúster, tu dirección de correo electrónico se incluye automáticamente en la página Aspectos básicos del clúster en la sección Autorización.
Aunque solo se especifica tu dirección de correo electrónico, puedes incluir otras direcciones de correo electrónico para otorgar acceso de administrador al clúster a otros usuarios.
Las políticas de RBAC otorgadas a tu dirección de correo electrónico hacen lo siguiente:
Otorgando el rol
clusterrole/cluster-admin
de Kubernetes en el clústerPermite acceder al clúster en la consola de Google Cloud con tu identidad de Google. Puedes ver el clúster en la página Clústeres de GKE en la consola.
Te permite ejecutar comandos de
kubectl
en tu computadora local mediante el kubeconfig de la puerta de enlace de conexión.
Para obtener el kubeconfig de la puerta de enlace de Connect, ejecuta los siguientes comandos desde tu computadora local:
Obtén la entrada kubeconfig que puede acceder al clúster a través de la puerta de enlace de conexión.
gcloud container fleet memberships get-credentials USER_CLUSTER_NAME \ --project=PROJECT_ID
El resultado es similar al siguiente:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
Ahora puedes ejecutar comandos de
kubectl
a través de la puerta de enlace de conexión:kubectl get nodes
El resultado es similar al siguiente:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Muchos comandos
kubectl
requieren el kubeconfig para el clúster de administrador. Deberás ejecutar esos comandos en la estación de trabajo de administrador.
¿Qué sigue?
- Crea un Service y un Ingress
Conoce más sobre: