Esta página es la segunda parte de una guía que te explica cómo usar Google Distributed Cloud (solo software) en hardware desnudo (antes conocido como Google Distributed Cloud Virtual y anteriormente como clústeres de Anthos en hardware desnudo) para crear una pequeña instalación de prueba de concepto de clústeres de GKE en tu hardware desnudo. En la primera parte, Configurar la infraestructura mínima, se explica cómo configurar el hardware, planificar las direcciones IP y configurar la infraestructuraGoogle Cloud necesaria. Este documento se basa en la configuración y la planificación de la sección anterior y muestra cómo crear un clúster de administrador y un clúster de usuario. A continuación, puedes crear objetos Ingress y Service.
Esta página está dirigida a administradores, arquitectos y operadores que configuran, monitorizan y gestionan el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas de usuario habituales de GKE.Google Cloud
Esta guía te ayuda a crear una instalación mínima de Google Distributed Cloud. Esta instalación mínima puede no ser adecuada para tus necesidades de producción y casos prácticos. Para obtener información sobre las instalaciones de producción, consulta las guías de instalación.
Antes de empezar
Asegúrate de haber configurado el hardware y de haber planificado tus direcciones IP tal como se describe en la parte anterior de esta guía, Configurar la infraestructura mínima. También puedes usar el planificador de requisitos de red de la sección Requisitos previos del flujo Crear un clúster de administrador bare metal en la consola de Google Cloud .
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.
Asegúrate de que tienes instalados los componentes más recientes de Google Cloud CLI:
gcloud components update
Sigue estos pasos para activar y usar la API GKE On-Prem:
Habilita la API en tu proyecto:
gcloud services enable \ --project PROJECT_ID \ gkeonprem.googleapis.com
Sustituye
PROJECT_ID
por el ID del proyecto host de tu flota.Si aparece un error
PERMISSION_DENIED
, comprueba el ID del proyecto que has introducido. Si el ID de proyecto es correcto, ejecutagcloud auth login
para iniciar sesión en la CLI de Google Cloud con la cuenta que tiene acceso al proyecto.Si es la primera vez que habilitas la API GKE On-Prem en tu proyecto, debes inicializar la API. Para ello, puedes llamar a un comando de la CLI de gcloud 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
Para crear clústeres básicos, sigue estos pasos principales:
Recopila información que se usa para especificar la configuración de tus clústeres.
Crea un clúster de administradores para gestionar tu clúster de usuarios.
Crea un clúster de usuarios que pueda ejecutar tus cargas de trabajo.
1. Recoger información
Utilice la información que ha preparado en la sección Configurar la infraestructura mínima o en el planificador de redes para rellenar cada marcador de posición de la siguiente tabla. Los marcadores de posición corresponden a los valores de los campos de los archivos de configuración del clúster para la instalación mínima de un clúster de administradores y un clúster de usuarios. Algunos marcadores de posición se definen con los valores rellenados automáticamente 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 vas a crear. La ubicación y el nombre de los artefactos del clúster en la estación de trabajo del 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 usuarios que vas a crear. La ubicación y el nombre de los artefactos del clúster en la estación de trabajo del 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 has descargado en la primera parte de esta guía. |
CLUSTER_VERSION |
Información de la cuenta | |
Ruta al archivo de clave privada SSH en tu estación de trabajo de administrador. De forma predeterminada, la ruta es /home/USERNAME/.ssh/id_rsa . |
SSH_PRIVATE_KEY_PATH |
El ID del Google Cloud proyecto que quieres usar para conectar tu clúster a Google Cloud y ver los registros y las métricas. Este proyecto también se conoce como proyecto host de la flota. | PROJECT_ID |
La dirección de correo asociada a tu cuenta de Google Cloud. Por ejemplo: alex@example.com . |
GOOGLE_ACCOUNT_EMAIL |
Direcciones IP de las máquinas de los nodos | |
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 de plano de control del clúster de usuarios. | USER_CP_NODE_IP |
Una dirección IP para el nodo de trabajo del clúster de usuarios. | USER_WORKER_NODE_IP |
Direcciones VIP | |
VIP del servidor de la API de Kubernetes del clúster de administrador. | ADMIN_CP_VIP |
VIP del servidor de la API de Kubernetes del clúster de usuario. | USER_CP_VIP |
Una IP virtual que se usará como dirección externa del proxy de entrada. | USER_INGRESS_VIP |
Intervalo de diez direcciones IP que se pueden usar como direcciones IP externas para servicios de tipo LoadBalancer. Ten en cuenta que este intervalo incluye el VIP de entrada, que es obligatorio para MetalLB. Ninguna otra dirección IP puede solaparse con este intervalo. | START_IP-END_IP |
CIDRs de pods y servicios | |
Intervalo de direcciones IP en notación de bloque CIDR que usarán los pods del clúster de administrador. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado, es 192.168.0.0/16 . |
192.168.0.0/16 |
Intervalo de direcciones IP en notación de bloque CIDR que usan los servicios del clúster de administración. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado, es 10.96.0.0/20 . |
10.96.0.0/20 |
Intervalo de direcciones IP en notación de bloque CIDR que usan los pods del clúster de usuarios. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado y es el valor predeterminado en la consola, es 192.168.0.0/16 . |
192.168.0.0/16 |
Intervalo de direcciones IP en notación de bloque CIDR que usan los servicios en el clúster de usuario. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado y es el valor predeterminado en la consola, es 10.96.0.0/20 . |
10.96.0.0/20 |
2. Crear clúster de administradores
En los pasos siguientes se crea un clúster de administradores para una instalación mínima de clúster de administradores y de usuarios. Antes de continuar, asegúrate de haber proporcionado valores para cada marcador de posición de la tabla de la sección Recopilar información anterior.
Cuando la API de GKE On-Prem (gkeonprem.googleapis.com
) esté habilitada en tu proyecto, los clústeres que crees se registrarán automáticamente en la API.
El registro se produce aunque no se especifique
spec.gkeOnPremAPI
en el archivo de configuración del clúster. Si te registras con esta API alojada enGoogle Cloud, podrás gestionar el ciclo de vida de tu clúster mediante la consola o la CLI de gcloud.Google Cloud
Para inhabilitar el registro automático, quita el comentario de la sección spec.gkeOnPremAPI
del archivo de configuración del clúster y asigna el valor spec.gkeOnPremAPI.enabled
a 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 crearlo.
Para crear un clúster de administrador para la instalación mínima, sigue estos pasos:
Define 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 de clúster, ejecuta el siguiente comando desde el directorio
/baremetal
de 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 de clúster se rellena con los valores que has introducido en la tabla de planificación de la sección anterior. Además de los valores que has introducido, ten en cuenta las siguientes diferencias con respecto al archivo de configuración generado:
- Se han eliminado los comentarios de este ejemplo para mejorar la legibilidad.
- Se ha quitado la especificación
NodePool
. Los nodos de trabajador no están permitidos 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
Sustituye 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 sustituye su contenido por el del ejemplo que has verificado en el paso anterior.Para crear el clúster de administrador, ejecuta el siguiente comando desde el directorio
/baremetal
en tu estación de trabajo de administrador:bmctl create cluster -c ADMIN_CLUSTER_NAME
El comando
bmctl
muestra la salida en la pantalla mientras ejecuta comprobaciones previas 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 del administrador.La creación del clúster puede tardar varios minutos en completarse.
Verifica que el clúster se ha creado y está en ejecución:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ get nodes
Si tu clúster está en funcionamiento, la respuesta tendrá un aspecto similar a este:
NAME STATUS ROLES AGE VERSION node-01 Ready control-plane 16h v1.25.7-gke.1000
Para asignar 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 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: /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 iniciar sesión en tu clúster en la Google Cloud consola para ver más detalles sobre el clúster.
3. Crear clúster de usuarios
En los pasos siguientes se crea un clúster de usuarios para una instalación mínima de clúster de administrador y de clúster de usuarios. Antes de continuar, asegúrate de haber proporcionado valores para cada marcador de posición de la tabla de la sección Recopilar información.
Para crear un clúster de usuarios para la instalación mínima, sigue estos pasos:
bmctl
Cuando la API de GKE On-Prem (gkeonprem.googleapis.com
) esté habilitada en tu proyecto, los clústeres que crees se registrarán automáticamente en la API.
El registro se produce aunque no se especifique
spec.gkeOnPremAPI
en el archivo de configuración del clúster. Cuando tu clúster se registre con esta API alojada en Google Cloud, podrás usar la consola de Google Cloud o la CLI de gcloud para gestionar el ciclo de vida del clúster.
Para inhabilitar el registro automático, quita el comentario de la sección spec.gkeOnPremAPI
del archivo de configuración del clúster y asigna el valor spec.gkeOnPremAPI.enabled
a 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 crearlo.
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 usuarios:
El siguiente archivo de configuración de clúster se rellena con los valores que has introducido en la tabla de planificación anteriormente. Además de los valores que has introducido, ten en cuenta las siguientes diferencias con respecto al archivo de configuración generado:
- Se han eliminado los comentarios de este ejemplo para mejorar la legibilidad.
- El tipo de clúster,
spec.type
, se ha definido comouser
. - Se ha añadido el campo
spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts
para conceder elclusterrole/cluster-admin
a tu cuenta. Entre otras cosas, este campo te permite iniciar sesión en tu clúster en la consolaGoogle Cloud para ver más detalles sobre el 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
Sustituye 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 sustituye su contenido por el del ejemplo que has verificado en el paso anterior.Crea el clúster de usuarios:
bmctl create cluster -c USER_CLUSTER_NAME \ --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
El comando
bmctl
muestra la salida en la pantalla mientras ejecuta comprobaciones previas 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 del administrador.La creación del clúster puede tardar varios minutos en completarse.
Verifica que el clúster se ha creado y está en ejecución:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \ get nodes
Si tu clúster está en funcionamiento, la respuesta tendrá un aspecto similar a este:
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
Consola
Sigue estos pasos para crear un clúster de usuarios en la consola:
En la consola, ve a la página Crear un clúster de metal desnudo.
Asegúrate de que la lista de proyectos tenga Google Cloud
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. Se muestra la página Requisitos previos.
En Elige el tipo de clúster, selecciona Crear un clúster de usuarios para un clúster de administradores ya creado.
Haz clic en Siguiente.
Información básica de los clústeres
Introduce
USER_CLUSTER_NAME
como nombre del clúster de usuarios o usa el predeterminado.Asegúrate de que esté seleccionado el clúster de administrador que has creado.
En GCP API Location (Ubicación de la API de GCP), seleccione us-central1.
En Versión de Google Distributed Cloud, selecciona
CLUSTER_VERSION
o usa el valor predeterminado. Puedes usar los valores predeterminados para el resto de los ajustes de esta página.En la barra de navegación de la izquierda, haga clic en Redes.
Redes
En la sección Plano de control, introduce lo siguiente en el campo IP del nodo del plano de control 1:
USER_CP_NODE_IP
En la sección Balanceador de carga, usa el balanceador de carga predeterminado Agrupado con MetalLB.
Ve a la sección Nuevo grupo de direcciones. Introduce el intervalo de direcciones IP en el campo Intervalo de direcciones IP 1:
10.200.0.51-10.200.0.70
Haz clic en Listo.
En la sección IPs virtuales, introduce la dirección IP de VIP del plano de control:
USER_CP_VIP
Introduce la dirección IP del VIP de entrada:
USER_INGRESS_VIP
En la sección CIDRs de servicio y de pod, si no has cambiado los CIDRs de servicio y de pod en el planificador, puedes usar los valores predeterminados.
Si has cambiado los CIDRs, introduce los que quieras usar:
- CIDR de servicio:
10.96.0.0/20
- CIDR de pod:
192.168.0.0/16
En la barra de navegación de la izquierda, haga clic en grupo predeterminado.
Crear un grupo de nodos
Tu clúster debe tener al menos un grupo de nodos para los nodos de trabajo. Un grupo de nodos es una plantilla para los grupos de nodos de trabajo creados en este clúster.
Introduce la dirección IP del nodo de trabajo del clúster de usuarios en el campo Dirección 1 de los nodos:
USER_WORKER_NODE_IP
Crear el clúster
Haz clic en Verificar y crear 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 los ajustes y crea el clúster.
Si hay algún 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 de configuración y volver a intentar crear el clúster.
Para ver información adicional sobre el proceso de creación, haga clic en Mostrar detalles para que se muestre un panel lateral. Haz clic en
para cerrar el panel de detalles.Cuando se cree el clúster, se mostrará el mensaje Estado del clúster: en ejecución.
Una vez creado el clúster, haz clic en
Clústeres para volver a la página Clústeres.
CLI de gcloud
En esta sección se muestra cómo crear un clúster de usuario y un grupo de nodos con gcloud CLI.
Ejecuta el siguiente comando para crear un clúster de usuarios:
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
La salida del comando es similar a la 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 consultar 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 unos 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 crea el clúster, se muestra un resultado similar al siguiente:
Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/bareMetalClusters/USER_CLUSTER_NAME].
Una vez creado 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 lo siguiente:
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 en él. 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 rellena con los valores que has introducido 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 el plan de Terraform:
terraform init
Terraform instala las bibliotecas necesarias, como el Google Cloud proveedor.
Revisa la configuración y haz los cambios necesarios:
terraform plan
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.
Para crear un archivo kubeconfig para el clúster de usuarios, ejecuta el siguiente comando en la estación de trabajo del 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 del clúster de usuario. Por ejemplo:
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig
El
TIMESTAMP
del nombre de archivo indica la fecha y la hora en que se creó el archivo.Como este archivo contiene las credenciales de autenticación de tu clúster, debes almacenarlo en una ubicación segura con acceso restringido.
Verifica que el clúster se ha creado y está en ejecución:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \ get nodes
Si tu clúster está en funcionamiento, la respuesta tendrá un aspecto similar a este:
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 lo siguiente:
Conectarse al clúster de usuarios
Independientemente de la herramienta que hayas usado para crear el clúster de usuario, tu dirección de correo electrónico tiene asignadas las políticas de control de acceso basado en roles (RBAC) que te permiten conectarte al clúster con privilegios de administrador completos. El lugar donde se especifica tu dirección de correo depende de la herramienta:
bmctl
: tu dirección de correo se incluye en la secciónclusterSecurity
del archivo de configuración de usuario de ejemplo.Terraform: tu dirección de correo 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 se incluye automáticamente en la página Información básica del clúster de la sección Autorización.
Aunque solo se especifica tu dirección de correo, puedes incluir otras direcciones de correo para conceder acceso administrativo al clúster a otros usuarios.
Las políticas de control de acceso basado en roles concedidas a tu dirección de correo hacen lo siguiente:
Te concede el rol
clusterrole/cluster-admin
de Kubernetes en el clúster.Permite iniciar sesión en el clúster en la consola Google Cloud con tu identidad de Google. Puedes ver el clúster en la página Clústeres de GKE de la consola.
Te permite ejecutar comandos
kubectl
en tu ordenador local mediante el archivo kubeconfig de la pasarela de conexión.
Para obtener el archivo kubeconfig de la pasarela de conexión, ejecuta los siguientes comandos desde tu ordenador local:
Obtén la entrada kubeconfig que puede acceder al clúster a través de la pasarela de conexión.
gcloud container fleet memberships get-credentials USER_CLUSTER_NAME \ --project=PROJECT_ID
El resultado debería ser 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
kubectl
a través de la pasarela de conexión:kubectl get nodes
El resultado debería ser 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 de
kubectl
requieren el archivo kubeconfig del clúster de administrador. Tendrás que ejecutar esos comandos en la estación de trabajo de administrador.
Siguientes pasos
Consulta más información sobre lo siguiente: