Esta página es la segunda parte de una guía en la que se explica una pequeña instalación de prueba de concepto de GKE en Bare Metal. En la primera parte, Configura la infraestructura mínima, se muestra cómo configurar el hardware, planificar las direcciones IP y configurar la infraestructura necesaria de Google Cloud. En este documento, se basa en la configuración y la planificación de la sección anterior y se muestra cómo crear un clúster de administrador y uno de usuario. Luego, puedes pasar a Crea un servicio y un Ingress.
Esta guía te ayuda a crear una instalación mínima de GKE en Bare Metal. Esta instalación mínima podría no ser adecuada para tus necesidades de producción y casos de uso 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 las 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 que se encuentra en 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 deseas usar Terraform para crear el clúster de usuario, necesitas Terraform 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 la 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, debes inicializar la API. Para ello, puedes llamar a un comando de gcloud CLI que muestre 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 gestionar tu 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 redes 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 con los valores completados previamente del archivo de configuración del clúster generado, pero todos los marcadores de posición se pueden editar.
Información básica del clúster | |
El nombre del clúster de administrador que creas. La ubicación y la denominación 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 se deriva del nombre del clúster. | ADMIN_CLUSTER_NAME |
El nombre del clúster de usuario que creas. La ubicación y la denominación 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 se deriva del nombre del clúster. | USER_CLUSTER_NAME |
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 los registros y las métricas. Este proyecto también se conoce como el proyecto host de la flota. | PROJECT_ID |
La dirección de correo electrónico 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 los servicios de tipo LoadBalancer. Ten en cuenta que este rango incluye la VIP de entrada, que requiere MetalLB. Ninguna otra dirección IP puede superponerse en este rango. | START_IP-END_IP |
CIDR del Pod y del Service | |
Rango de direcciones IP en la notación de bloques CIDR para que las usen los Pods del
clúster de administrador. El valor de inicio recomendado, que se completó 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 la notación de bloques CIDR para que las usen los servicios en el clúster de administrador. El valor de inicio recomendado, que se completó 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 la notación de bloques CIDR para que las usen los Pods del
clúster de usuario. El valor de inicio recomendado, que se completa 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 Services del clúster de usuario. El valor de inicio recomendado, que se completa 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 un clúster de administrador y un clúster de usuario. Asegúrate de haber proporcionado valores para cada marcador de posición en la tabla de la sección anterior Recopila información antes de continuar.
Cuando se habilita la API de GKE On-Prem (gkeonprem.googleapis.com
) en tu proyecto, los clústeres recién creados se inscriben en la API automáticamente.
La inscripción ocurre incluso cuando no se especifica spec.gkeOnPremAPI
en el archivo de configuración del clúster. La inscripción 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
del 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.
Si deseas crear un clúster de administrador para la instalación mínima, haz lo siguiente:
Configura las credenciales predeterminadas que GKE en Bare Metal puede usar para crear el clúster con el siguiente comando:
gcloud auth application-default login
Para generar un archivo de configuración de clúster, ejecuta el siguiente comando desde el directorio
/baremetal
en tu 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 en 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 facilitar la lectura.
- Se quitó la especificación de
NodePool
. No se permiten nodos trabajadores en 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 contenido 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 el clúster se haya creado y se esté ejecutando:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ get nodes
Si tu clúster está en ejecución, la respuesta es 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 truncó 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 un clúster de administrador y de usuario. Antes de continuar, asegúrate de haber proporcionado valores para cada marcador de posición en la tabla de la sección Recopilar información anterior.
Si deseas crear un clúster de usuario para la instalación mínima, sigue estos pasos:
bmctl
Cuando se habilita la API de GKE On-Prem (gkeonprem.googleapis.com
) en tu proyecto, los clústeres recién creados se inscriben en la API automáticamente.
La inscripción ocurre incluso cuando no se especifica spec.gkeOnPremAPI
en el archivo de configuración del clúster. Cuando tu clúster esté
inscrito con esta API alojada en Google Cloud, puedes usar la consola de Google Cloud
o gcloud CLI para administrar el ciclo de vida del clúster.
Para inhabilitar la inscripción automática, quita el comentario de la sección spec.gkeOnPremAPI
del 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 de 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 antes en la tabla de planificación. 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 facilitar la lectura.
- 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.
--- 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 contenido 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 el clúster se haya creado y se esté ejecutando:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \ get nodes
Si tu clúster está en ejecución, la respuesta es 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
PROJECT_ID
seleccionado.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 Ubicación de la API de GCP, selecciona us-central1.
En la versión de GKE en Bare Metal, selecciona
CLUSTER_VERSION
o usa la opción predeterminada. Puedes usar los valores predeterminados para el resto de la configuración en esta página.Haz clic en Herramientas de redes en la barra de navegación izquierda.
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 de la VIP de Ingress:
USER_INGRESS_VIP
En la sección CIDR de servicio y Pod, si no cambiaste los CIDR de servicio y Pod en el Planificador, puedes usar los valores predeterminados.
Si cambiaste los CIDR, ingresa los que deseas usar:
- CIDR del servicio:
10.96.0.0/20
- CIDR del Pod:
192.168.0.0/16
Haz clic en grupo predeterminado 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 crearon en este clúster.
Ingresa la dirección IP del nodo trabajador del clúster de usuario en el campo Nodes address 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 tarda 15 minutos o más. La consola muestra mensajes de estado mientras verifica la configuración y crea el clúster.
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 lo soluciones y, luego, intentes crear el clúster.
Si deseas ver información adicional sobre el proceso de creación, haz clic en Mostrar detalles para mostrar un panel lateral. Haz clic en
para cerrar el panel de detalles.Cuando se cree el clúster, se mostrará Cluster status: running.
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 string
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
es laOPERATION_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. Mientras 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 en 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
.La creación del clúster de usuario básico y el grupo de nodos tarda alrededor de 15 minutos (o más, según tu red).
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
En el resultado del comando, se muestra el nombre del archivo kubeconfig del clúster de usuario, por ejemplo:
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig
El
TIMESTAMP
en el nombre de 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 el clúster se haya creado y se esté ejecutando:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \ get nodes
Si tu clúster está en ejecución, la respuesta es 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 usaste para crear el clúster de usuario, tu dirección de correo electrónico recibe 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 especifica 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 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:
Te otorgará el rol
clusterrole/cluster-admin
de Kubernetes en el clúster.Te permite 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.
Permite que ejecutes comandos
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 conexión, ejecuta los siguientes comandos desde tu computadora local:
Obtén la entrada de 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: