Crea una estación de trabajo de administrador

En esta página, se muestra cómo crear una estación de trabajo de administrador que puedas usar para crear clústeres de GKE On-Prem.

En este tema, 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 tema, se usa la herramienta de línea de comandos de gkeadm, que está disponible para Linux, Windows 10, Windows Server 2019 y macOS Catalina.

Descarga gkeadm

Linux

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.5.0-gke.27/linux/gkeadm ./
chmod +x gkeadm

macOS

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.5.0-gke.27/darwin/gkeadm ./
chmod +x gkeadm

Windows

Descarga la herramienta de línea de comandos de gkeadm

gsutil cp gs://gke-on-prem-release-public/gkeadm/1.5.0-gke.27/windows/gkeadm.exe ./

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:

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

En el ejemplo anterior, [VCENTER_IP] es la dirección IP de vCenter Server.

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:

vCenrer:
  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"

En el ejemplo anterior, [MY_CLUSTER] es 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

En el ejemplo anterior, [SERVER_ADDRESS] es la dirección de vCenter Server.

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. Es el nombre de host o la dirección IP del servidor del protocolo NTP que debe usar 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

En este paso, usarás gkeadm para crear una 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.

Crea tu estación de trabajo de administrador y un conjunto de cuentas de servicio:

./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.

  • 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 y user-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 de la salida anterior, existe un comando que puedes usar para establecer una conexión SSH con 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

Luego, 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 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.