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 de este documento, se usa la herramienta de línea de comandos gkeadm
, que está disponible solo para Linux. En una versión futura de GKE On-Prem, gkeadm
estará disponible para Windows y macOS. Si deseas usar una computadora que ejecute Windows o macOS 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 mediante 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.3.2-gke.1/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
.
gcp: # Path of the allowlisted service account's JSON key file whitelistedServiceAccountKeyPath: "" # Specify which vCenter resources to use vCenter: # The credentials and address GKE On-Prem should use to connect to vCenter credentials: address: "" username: "" ... adminWorkstation: ... network: # The IP allocation mode: 'dhcp' or 'static' ipAllocationMode: "" # # The host config in static IP mode. Do not include if using DHCP # hostConfig: # # The IPv4 static IP address for the admin workstation ...
Completa el 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:
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_IPVCENTER_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:
username: "administrator@vsphere.local"
vCenter.credentials.password
String. Es la contraseña de la cuenta de usuario de vCenter Server. Por ejemplo:
password: "#STyZ2T#Ko2o"
vCenter.datacenter
String. Es el nombre de tu centro de datos de vSphere. Por ejemplo:
datacenter: "MY-DATACENTER"
vCenter.datastore
String. Es el nombre de tu almacén de datos de vSphere. Por ejemplo:
datastore: "MY-DATASTORE"
vCenter.cluster
String. Es el nombre de tu clúster de vSphere. Por ejemplo:
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:
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:
resourcePool: "MY-POOL"
Si usas el grupo de recursos predeterminado, proporciona el siguiente valor:
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:
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 tu servidor de vCenter. 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.name
String. Puede ser cualquier nombre que elijas para tu estación de trabajo de administrador. Por ejemplo:
name: "my-admin-workstation"
adminWorkstation.cpus
String. Es la cantidad de CPU virtuales para tu estación de trabajo de administrador. Por ejemplo:
cpus: 4
adminWorkstation.memoryMB
String. Es la cantidad de megabytes de memoria para tu estación de trabajo de administrador. Por ejemplo:
memoryMB: 8192
adminWorkstation.diskGB
String. Es la cantidad de gigabytes de espacio en disco virtual para tu estación de trabajo de administrador. Debe ser 50 como mínimo. Por ejemplo:
diskGB: 50
adminWorkstation.network.ipAllocationMode
String. Configura esto como "static"
. Por ejemplo:
ipAllocationMode: "static"
adminWorkstation.network.hostConfig.ip
String. Es una dirección IP que elijas para tu estación de trabajo de administrador. Por ejemplo:
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:
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:
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:
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:
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: "my-admin-workstation" cpus: 4 memoryMB: 8192 diskGB: 50 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: "216.239.35.0"
Crea tu estación de trabajo de administrador
Para usar gkeadm
a fin de crear una estación de trabajo de administrador y un conjunto de cuentas de servicio, debes otorgar las funciones de IAM resourcemanager.projectIamAdmin
y serviceusage.serviceUsageAdmin
a la cuenta de facturación de Cloud predeterminada.
Para ver la cuenta predeterminada, haz lo siguiente:
gcloud config get-value account
Para otorgar las funciones obligatorias, haz lo siguiente:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEFAULT_ACCOUNT" \ --role="roles/resourcemanager.projectIamAdmin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEFAULT_ACCOUNT" \ --role="roles/serviceusage.serviceUsageAdmin"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID de tu proyecto de conexión.DEFAULT_ACCOUNT
: la cuenta de facturación de Cloud predeterminada.
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 tu servidor de vCenter en la estación de trabajo de administrador.
Preparó
config.yaml
en la estación de trabajo de administrador. Más adelante, usarásconfig.yaml
para crear clústeres.
... - Validation Category: vCenter - [SUCCESS] Credentials - [SUCCESS] Version - [SUCCESS] Datacenter - [SUCCESS] Datastore - [SUCCESS] Resource Pool - [SUCCESS] Network 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.3.1-gke.0 (git-3aaf91927) 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... - log-mon-sa-2004211642 - connect-agent-sa-2004211642 - connect-register-sa-2004211642 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 - log-mon-sa-2004211642 for project my-project - roles/stackdriver.resourceMetadata.writer - roles/logging.logWriter - roles/monitoring.metricWriter - connect-agent-sa-2004211642 for project my-project - roles/gkehub.connect - connect-register-sa-2004211642 for project my-project - roles/gkehub.admin - roles/serviceusage.serviceUsageViewer 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 - log-mon-sa-2004211642.json - connect-agent-sa-2004211642.json - connect-register-sa-2004211642.json Preparing config.yaml for gkectl... ******************************************************************** Admin workstation is ready to use. 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 ******************************************************************** Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
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 la salida, puedes ver un archivo de configuración de GKE On-Prem, tu archivo de certificado de CA y los archivos de claves JSON para tus cuentas de servicio:
config.yaml connect-agent-sa-200303-143027.json connect-register-sa-200303-143027.json log-mon-sa-200303-143027.json the-root.crt whitelisted-key.json
Inspecciona el archivo de configuración de GKE On-Prem
En tu estación de trabajo de administrador, se creó el archivo de configuración con el nombre config.yaml
. Usarás este archivo más tarde para crear tus clústeres de administrador y de usuario. Usa un editor de texto para abrir config.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:
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 … gkeconnect: projectid: my-project-id registerserviceaccountkeypath: /home/ubuntu/connect-register-sa-xxx.json agentserviceaccountkeypath: /home/ubuntu/connect-agent-sa-xxx.json stackdriver: projectid: my-project-id clusterlocation: "" enablevpc: false serviceaccountkeypath: /home/ubuntu/log-mon-sa-xxx.json
Usa un proyecto de Cloud único
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 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.