Crea una estación de trabajo de administrador

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ás config.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.