En este documento, se muestra cómo crear una estación de trabajo de administrador que puedes usar para crear clústeres locales de GKE.
En este documento, crearás una estación de trabajo de administrador que tenga una dirección IP estática. Esto es coherente con el proceso de instalación básico, que crea clústeres que usan direcciones IP estáticas.
Si deseas crear una estación de trabajo de administrador que use el protocolo de configuración de host dinámico (DHCP) para obtener su dirección IP, consulta Crea una estación de trabajo de administrador con DHCP.
En los pasos que se muestran en este documento, se usa la herramienta de línea de comandos gkeadm
, que está disponible para Linux, Windows 10 y Windows Server 2019, pero no para el SO MAC. En una versión futura de GKE On-Prem, gkeadm
estará disponible para MAC OS. Si deseas usar una computadora que ejecute MAC OS para crear una estación de trabajo de administrador, consulta Crea una estación de trabajo de administrador con una dirección IP estática o Crea una estación de trabajo de administrador con DHCP.
Descarga gkeadm
Descarga la herramienta de línea de comandos de gkeadm
y haz que sea ejecutable:
gsutil cp gs://gke-on-prem-release-public/gkeadm/1.4.3-gke.3/linux/gkeadm ./ chmod +x gkeadm
Genera una plantilla para tu archivo de configuración
Para crear una estación de trabajo de administrador, la herramienta de gkeadm
requiere un archivo de configuración.
Genera una plantilla para tu archivo de configuración:
./gkeadm create config
El resultado es un archivo llamado admin-ws-config.yaml
.
Valores propagados
Los siguientes campos en el archivo de configuración se propagan con valores predeterminados o generados. Por ejemplo:
adminWorkstation: name: gke-admin-ws-200617-113711 cpus: 4 memoryMB: 8192 diskGB: 50 dataDiskName: gke-on-prem-admin-workstation-data-disk/gke-admin-ws-200617-113711-data-disk.vmdk dataDiskMB: 512 ntpServer: ntp.ubuntu.com
Conserva todos los valores predeterminados y generados.
Observa el valor generado de dataDiskName
. Este disco de máquina virtual (VMDK) se creó para ti. Más adelante, si borras de forma manual la estación de trabajo de administrador, el VMDK se borrará de manera automática.
Completa el resto del archivo de configuración
En el archivo de configuración, ingresa los valores de campo, como se describe en esta sección.
gcp.whitelistedServiceAccountKeyPath
String. Es la ruta de acceso del archivo de claves JSON para la cuenta de servicio incluida en la lista de anunciantes permitidos. Para obtener información sobre la creación de un archivo de claves JSON, consulta Cuenta de servicio incluida en la lista de anunciantes permitidos. Por ejemplo:
gcp: whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"
vCenter.credentials.address
String. Es la dirección IP o el nombre de host de vCenter Server.
Antes de completar el campo address
, descarga e inspecciona el certificado de entrega de vCenter Server. Ingresa el siguiente comando para descargar el certificado y guardarlo en un archivo llamado vcenter.pem
.
true | openssl s_client -connect VCENTER_IP:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
Reemplaza VCENTER_IP
por la dirección IP de tu servidor de vCenter.
Abre el archivo de certificado para ver el nombre común y el alternativo de la entidad:
openssl x509 -in vcenter.pem -text -noout
En el resultado, se muestra el nombre común (CN) de Subject
. Este puede ser una dirección IP o un nombre de host. Por ejemplo:
Subject: ... CN = 203.0.113.100
Subject: ... CN = my-host.my-domain.example
Puede que, en el resultado, también se incluyan uno o más nombres de DNS en Subject Alternative Name
:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
Elige el nombre común de Subject
o uno de los nombres de DNS en Subject Alternative Name
para usarlo como el valor de vcenter.credentials.address
en el archivo de configuración. Por ejemplo:
vCenter: credentials: address: "203.0.113.1"
vCenter: credentials: address: "my-host.my-domain.example"
vCenter.credentials.username
String. Es una cuenta de usuario de vCenter Server. La cuenta de usuario debe tener la función de administrador o privilegios equivalentes. Consulta los requisitos de vSphere.
Por ejemplo:
vCenter: credentials: username: "administrator@vsphere.local"
vCenter.credentials.password
String. Es la contraseña de la cuenta de usuario de vCenter Server. Por ejemplo:
vCenter: credentials: password: "#STyZ2T#Ko2o"
vCenter.datacenter
String. Es el nombre de tu centro de datos de vSphere. Por ejemplo:
vCenter: datacenter: "MY-DATACENTER"
vCenter.datastore
String. Es el nombre de tu almacén de datos de vSphere. Por ejemplo:
vCenter: datastore: "MY-DATASTORE"
vCenter.cluster
String. Es el nombre de tu clúster de vSphere. Por ejemplo:
vCenter: cluster: "MY-CLUSTER"
vCenter.network
String. Es el nombre de la red de vSphere en la que deseas crear tu estación de trabajo de administrador. Por ejemplo:
vCenter: network: "MY-VM-NETWORK"
vCenter.resourcePool
String. Si no usas un grupo predeterminado, proporciona el nombre de tu grupo de recursos de vSphere. Por ejemplo:
vCenter: resourcePool: "MY-POOL"
Si usas el grupo de recursos predeterminado, proporciona el siguiente valor:
vCenter: resourcePool: "MY_CLUSTER/Resources"
Reemplaza MY_CLUSTER
por el nombre de tu clúster de vSphere.
Consulta Specifying the root resource pool for a standalone host (Especifica el grupo de recursos raíz de un host independiente).
vCenter.caCertPath
String. Cuando un cliente, como GKE On-Prem, envía una solicitud a vCenter Server, el servidor debe demostrar su identidad al cliente mediante la presentación de un certificado o un paquete de certificados. Para verificar el certificado o el paquete, GKE On-Prem debe tener el certificado raíz en la cadena de confianza.
Establece vCenter.caCertPath
en la ruta de acceso del certificado raíz. Por ejemplo:
vCenter: caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"
Tu instalación de VMware tiene una autoridad certificada (CA) que emite un certificado para vCenter Server. El certificado raíz de la cadena de confianza es un certificado autofirmado que crea VMware.
Si no deseas usar la CA de VMware, que es la opción predeterminada, puedes configurar VMware para usar una autoridad certificada diferente.
Si vCenter Server usa un certificado que emitió la CA predeterminada de VMware, descarga el certificado de la siguiente manera:
curl -k "https://SERVER_ADDRESS/certs/download.zip" > download.zip
Reemplaza SERVER_ADDRESS
por la dirección de tu servidor de vCenter.
Instala el comando unzip
y descomprime el archivo del certificado:
sudo apt-get install unzip unzip downloads.zip
Si el comando de descompresión no funciona la primera vez, vuelve a ingresarlo.
Busca el archivo de certificado en certs/lin
.
proxyUrl
String: Si la máquina que usas a fin de ejecutar gkeadm
usa un servidor proxy para acceder a Internet, configura este campo con la URL del servidor proxy. Por ejemplo:
proxyUrl: "https://my-proxy.example.local"
adminWorkstation.network.ipAllocationMode
String. Configura esto como "static"
. Por ejemplo:
adminWorkstation: network: ipAllocationMode: "static"
adminWorkstation.network.hostConfig.ip
String. Es una dirección IP que elijas para tu estación de trabajo de administrador. Por ejemplo:
adminWorkstation: network: hostconfig: ip: "172.16.5.1"
adminWorkstation.network.hostConfig.gateway
String. Es la dirección IP de la puerta de enlace predeterminada para la red que contiene tu estación de trabajo de administrador. Por ejemplo:
adminWorkstation: network: hostconfig: gateway: "172.16.6.254"
adminWorkstation.network.hostConfig.netmask
String. Es la máscara de red de la red que contiene tu estación de trabajo de administrador. Por ejemplo:
adminWorkstation: network: hostconfig: netmask: "255.255.248.0"
adminWorkstation.network.hostConfig.dns
Arreglo de strings. Es un arreglo de direcciones IP para servidores DNS que tu estación de trabajo de administrador puede usar. Por ejemplo:
adminWorkstation: network: hostconfig: dns: - "172.16.255.1" - "172.16.255.2"
adminWorkstation.proxyUrl
String. Si la red se encuentra detrás de un servidor proxy, y deseas que tu estación de trabajo de administrador y tus clústeres de GKE On-Prem usen el mismo servidor proxy, configura adminworkstation.proxyURL
en la URL del servidor proxy.
Por ejemplo:
adminworkstation: proxyUrl: "http://aw-proxy.example"
adminWorkstation.ntpServer
String. El nombre de host o la dirección IP del servidor del protocolo de tiempo de red que se usa en tu estación de trabajo de administrador. Por ejemplo:
adminWorkstation: ntpServer: "216.239.35.0"
Si dejas este campo vacío, GKE On-Prem usará "ntp.ubuntu.com"
.
A continuación, se muestra un ejemplo de un archivo admin-ws-config.yaml
completo:
gcp: whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json" vCenter: credentials: address: "203.0.113.1" username: "administrator.vsphere.local" password: "#STyZ2T#Ko2o" datacenter: "MY-DATACENTER" datastore: "MY-DATASTORE" cluster: "MY-CLUSTER" network: "MY-VM-NETWORK" resourcePool: "MY-POOL" caCertPath: "/usr/local/google/home/me/certs/the-root.cert" proxyUrl: "" adminWorkstation: name: "gke-admin-ws-200617-113711" cpus: 4 memoryMB: 8192 diskGB: 50 dataDiskName: "gke-on-prem-admin-workstation-data-disk/gke-admin-ws-200617-113711-data-disk.vmdk" dataDiskMB: 512 network: ipAllocationMode: "static" hostConfig: ip: "172.16.5.1" gateway: "172.16.6.254" netmask: "255.255.248.0" dns: - "172.16.255.1" - "172.16.255.2" proxyUrl: "" ntpServer: "ntp.ubuntu.com"
Crea tu estación de trabajo de administrador
La Cuenta de Google que se configuró como tu propiedad account
del SDK debe tener estas funciones de IAM para que gkeadm
pueda crear y administrar cuentas de servicio por ti:
resourcemanager.projectIamAdmin
serviceusage.serviceUsageAdmin
iam.serviceAccountCreator
iam.serviceAccountKeyAdmin
Para ver el valor de la propiedad account
de tu SDK, haz lo siguiente:
gcloud config get-value account
Para otorgar funciones, debes tener ciertos permisos en tu proyecto de Google Cloud. Para obtener detalles, consulta Otorga, cambia y revoca el acceso a los recursos.
Si tienes los permisos necesarios, puedes otorgar las funciones tú mismo. De lo contrario, alguien de tu organización deberá otorgar las funciones por ti.
Para otorgar las funciones, sigue estos pasos:
Linux y macOS
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/resourcemanager.projectIamAdmin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/serviceusage.serviceUsageAdmin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/iam.serviceAccountCreator" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/iam.serviceAccountKeyAdmin"
Windows
gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/resourcemanager.projectIamAdmin" gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/serviceusage.serviceUsageAdmin" gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/iam.serviceAccountCreator" gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/iam.serviceAccountKeyAdmin"
Reemplaza lo siguiente:
PROJECT_ID
: el valor de tu propiedadproject
del SDKACCOUNT
: el valor de tu propiedadaccount
del SDK.
Crea tu estación de trabajo de administrador y un conjunto de cuentas de servicio: Si prefieres crear y configurar las cuentas de servicio de forma manual, puedes omitir la marca --auto-create-service-accounts
.
./gkeadm create admin-workstation --auto-create-service-accounts
En el resultado, se proporciona información detallada sobre la creación de tu estación de trabajo de administrador. Por ejemplo, puedes ver que gkeadm
realizó las siguientes tareas:
Ejecutó comprobaciones previas.
Descargó una imagen OVA y la subió como una plantilla de vSphere.
Creó una clave SSH.
Creó una VM de estación de trabajo de administrador.
Imprimió las versiones de
gkectl
y Docker instaladas en la estación de trabajo de administrador.Imprimió información sobre el servidor NTP en la estación de trabajo de administrador.
Creó cuentas de servicio y sus archivos de claves JSON. Estas cuentas de servicio son miembros del proyecto que es el superior de tu cuenta de servicio incluida en la lista de anunciantes permitidos.
Asignó las funciones de IAM adecuadas a las cuentas de servicio. Estas funciones se otorgan en el proyecto que es el superior de la cuenta de servicio de tu lista de anunciantes permitidos.
Copió los archivos de claves JSON para las cuentas de servicio en la estación de trabajo de administrador.
Copió el archivo de certificado de CA de vCenter Server en la estación de trabajo de administrador.
Preparó
admin-cluster.yaml
yuser-cluster.yaml
en la estación de trabajo de administrador. Más adelante, usarás estos archivos de configuración para crear clústeres.
... - Validation Category: vCenter - [SUCCESS] Credentials - [SUCCESS] Version - [SUCCESS] Datacenter - [SUCCESS] Datastore - [SUCCESS] Resource Pool - [SUCCESS] Folder - [SUCCESS] Network - [SUCCESS] Datadisk All validation results were SUCCESS. ****************************************** Admin workstation VM successfully created: - Name: my-admin-workstation - IP: 172.16.5.1 - SSH Key: /usr/local/google/home/me/.ssh/gke-admin-workstation ****************************************** Printing gkectl and docker versions on admin workstation... gkectl version gkectl 1.4.0-gke.13 (git-b39331512) docker version Client: Version: 19.03.2 API version: 1.40 Go version: go1.12.9 Git commit: 6a30dfca03 Built: Mon Sep 30 22:47:02 2019 OS/Arch: linux/amd64 Experimental: false Getting allowlisted service account... Creating other service accounts and JSON key files... - connect-agent-sa-2007081316 - connect-register-sa-2007081316 - log-mon-sa-2007081316 Enabling APIs... - project my-project - serviceusage.googleapis.com - iam.googleapis.com - cloudresourcemanager.googleapis.com Configuring IAM roles for service accounts... - my-allowlisted-sa for project my-project - roles/serviceusage.serviceUsageViewer - roles/iam.serviceAccountCreator - roles/iam.roleViewer - connect-agent-sa-2007081316 for project my-project - roles/gkehub.connect - connect-register-sa-2007081316 for project my-project - roles/gkehub.admin - roles/serviceusage.serviceUsageViewer - log-mon-sa-2007081316 for project my-project - roles/stackdriver.resourceMetadata.writer - roles/logging.logWriter - roles/monitoring.metricWriter Copying files to admin workstation... - /usr/local/google/home/me/certs/vcenter-ca-cert.pem - /usr/local/google/home/me/service-account-keys/whitelisted-key.json - connect-agent-sa-2007081316.json - connect-register-sa-2007081316.json - log-mon-sa-2007081316.json Preparing "admin-cluster.yaml" for gkectl... Preparing "user-cluster.yaml" for gkectl... ******************************************************************** Admin workstation is ready to use. Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation This file is required for future upgrades SSH into the admin workstation with the following command: ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1 ********************************************************************
Obtén una conexión SSH a tu estación de trabajo de administrador
Cerca del final del resultado anterior, hay un comando que puedes usar para obtener una conexión SSH a tu estación de trabajo de administrador. Ingresa ese comando ahora. Por ejemplo:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
Enumera los archivos en tu estación de trabajo de administrador:
ls -1
En el resultado, puedes ver dos archivos de configuración del clúster, el archivo de certificado de CA y los archivos de claves JSON para tus cuentas de servicio:
admin-cluster.yaml connect-agent-sa-2007081316.json connect-register-sa-2007081316.json log-mon-sa-2007081316.json user-cluster.yaml vcenter-ca-cert.pem whitelisted-key.json
Inspecciona los archivos de configuración del clúster
En tu estación de trabajo de administrador, gkeadm
creó dos archivos de configuración del clúster: admin-cluster.yaml
y user-cluster.yaml
. Usarás estos archivos más adelante para crear los clústeres de administrador y de usuario.
Usa un editor de texto para abrir admin-cluster.yaml
. Ten en cuenta que muchos de los campos ya están propagados con valores que proporcionaste en tu archivo admin-ws-config.yaml
. Por ejemplo:
apiVersion: v1 kind: AdminCluster bundlePath: /var/lib/gke/bundles/gke-onprem-vsphere-1.4.0-gke.13-full.tgz vCenter: address: 203.0.113.1 datacenter: MY-DATACENTER cluster: MY-CLUSTER resourcePool: MY-POOL datastore: MY-DATASTORE caCertPath: vcenter-ca-cert.pem credentials: username: administrator@vsphere.local password: STyZ2T#Ko2o ... gcrKeyPath: whitelisted-key.json stackdriver: projectID: my-project-id serviceAccountKeyPath: log-mon-sa-2007081316.json
Abre user-cluster.yaml
. Ten en cuenta que muchos de los campos ya están propagados con valores que proporcionaste en tu archivo admin-ws-config.yaml
.
Por ejemplo:
apiVersion: v1 kind: UserCluster gkeOnPremVersion: 1.4.0-gke.13 ... stackdriver: projectID: my-project-id serviceAccountKeyPath: log-mon-sa-2007081316.json gkeConnect: projectID: my-project-id registerServiceAccountKeyPath: connect-register-sa-2007081316.json agentServiceAccountKeyPath: connect-agent-sa-2007081316.json
Usa un solo proyecto de Google Cloud
El archivo de configuración de GKE On-Prem tiene varios campos en los que puedes especificar un ID del proyecto de Google Cloud. Por ejemplo, puedes especificar un ID del proyecto para gkeconnect
y otro para stackdriver
:
gkeconnect: projectid: "" ... stackdriver: projectid: ""
Cuando gkeadm
preparó tu archivo de configuración de GKE On-Prem, configuró todos los campos projectid
en el proyecto que es el superior de tu cuenta de servicio de la lista de anunciantes permitidos. Además, gkeadm
otorgó funciones a tus cuentas de servicio en el proyecto que es el superior de tu cuenta de servicio incluida en la lista de anunciantes permitidos.
En resumen, gkeadm
usó un solo proyecto de Google Cloud.
Si deseas obtener la flexibilidad de usar varios proyectos de Google Cloud, debes completar los campos projectid
y otorgar funciones a las cuentas de servicio de forma manual. Para obtener más información, consulta Usa varios proyectos de Google Cloud.