Crear una estación de trabajo de administrador

En este documento, se muestra cómo crear una estación de trabajo de administrador para GKE en VMware. La estación de trabajo de administrador aloja las herramientas de la interfaz de línea de comandos (CLI) y los archivos de configuración para aprovisionar clústeres durante la instalación, así como las herramientas de la CLI con el fin de interactuar con los clústeres aprovisionados después de la instalación.

Las instrucciones que aparecen aquí están completas. Para obtener una introducción más corta a fin de crear una estación de trabajo de administrador, consulta Crea una estación de trabajo de administrador (guía de inicio rápido).

Existen dos formas de crear una estación de trabajo de administrador:

  • Usa gkeadm para crear una VM de estación de trabajo de administrador en el entorno de vSphere.
  • Crea una estación de trabajo de administrador administrada por el usuario en cualquier computadora que elijas.

gkeadm

La herramienta de línea de comandos de gkeadm está disponible para Linux de 64 bits, Linux 10, Windows Server 2019, macOS 10.15 y versiones posteriores.

Antes de comenzar

Conoce la dirección del servidor de vCenter.

Conoce tu ruta de acceso del certificado de CA.

Instala Google Cloud CLI.

Crea uno o más proyectos de Google Cloud como se describe en Usa varios proyectos de Google Cloud.

Planifica tus cuentas de servicio

Cuando usas gkeadm para crear una estación de trabajo de administrador, tienes la opción de dejar que gkeadm cree la mayoría de las cuentas de servicio y claves por ti. En ese caso, gkeadm también otorga las funciones adecuadas de Identity and Access Management a las cuentas de servicio.

Como alternativa, puedes crear tus cuentas de servicio y claves de forma manual. En ese caso, debes otorgar de forma manual las funciones de IAM a tus cuentas de servicio.

Cuando creas cuentas de servicio de forma manual, tienes más flexibilidad que permitir que gkeadm las cree por ti:

  • Todas las cuentas de servicio creadas automáticamente tienen el mismo proyecto superior de Google Cloud que la cuenta de servicio de acceso a los componentes. Cuando creas una cuenta de servicio de forma manual, puedes elegir el proyecto superior de Google Cloud.

  • A todas las cuentas de servicio creadas automáticamente se les otorgan funciones de IAM en el proyecto superior de Google Cloud de tu cuenta de servicio de acceso a los componentes. Esto está bien si ese es el único proyecto de Google Cloud asociado con tus clústeres. Sin embargo, si deseas asociar tus clústeres con varios proyectos de Google Cloud, necesitas la flexibilidad de otorgar funciones a una cuenta de servicio en el proyecto de Google Cloud que elijas.

Si decides crear tus propias cuentas de servicio, sigue las instrucciones que se brindan en Claves y cuentas de servicio.

Independientemente de que gkeadm cree cuentas de servicio de forma automática por ti, hay una cuenta de servicio que debes crear de forma manual: la cuenta de servicio de acceso a componentes. A fin de obtener instrucciones para crear tu cuenta de servicio de acceso a componentes y otorgarle las funciones de IAM adecuadas, consulta Cuenta de servicio de acceso a componentes.

Genera plantillas para tus archivos de configuración

Descarga gkeadm en tu directorio actual.

Genera plantillas:

./gkeadm create config

El comando anterior creó estos archivos en el directorio actual:

  • credential.yaml
  • admin-ws-config.yaml

Completa credential.yaml

En credential.yaml, completa tu nombre de usuario y contraseña de vCenter. Por ejemplo:

kind: CredentialFile
items:
- name: vCenter
username: "my-account-name"
password: "AadmpqGPqq!a"

Completa admin-ws-config.yaml

Varios campos en admin-ws-config.yaml ya se llenaron con valores predeterminados o generados. Puedes conservar los valores propagados o realizar los cambios que prefieras.

Campos que debes completar

Completa los siguientes campos obligatorios. Si deseas obtener información para completar los campos, consulta Archivo de configuración de la estación de trabajo de administrador.

gcp:
 componentAccessServiceAccountKeyPath: "Fill in"
vCenter:
credentials:
  address: "Fill in"
datacenter: "Fill in"
datastore: "Fill in"
cluster: "Fill in"
network: "Fill in"
resourcePool: "Fill in"
caCertPath: "Fill in"

Si deseas crear la estación de trabajo de administrador dentro de una carpeta de VM de vSphere, completa el campo vCenter.folder:

vCenter:
folder: "Fill in"

Si tu estación de trabajo de administrador estará detrás de un servidor proxy, completa el campo proxyURL:

adminWorkstation:
proxyURL: "Fill in"

Si quieres que tu estación de trabajo de administrador obtenga su dirección IP de un servidor DHCP, configura ipAllocationMode como "dhcp" y quita la sección hostconfig:

adminWorkstation:
network:
  ipAllocationMode: "dhcp"

Si deseas especificar una dirección IP estática para tu estación de trabajo de administrador, configura ipAllocationMode como "static" y completa la sección hostconfig:

adminWorkstation:
network:
  ipAllocationMode: "static"
  hostconfig:
    ip: "Fill in"
    gateway: "Fill in"
    netmask: "Fill in"
    dns:
    - "Fill in"

Accede a Google Cloud

  1. Accede con cualquier Cuenta de Google. Esto establece la propiedad account de tu SDK:
gcloud auth login
  1. Verifica que la propiedad account de tu SDK esté configurada correctamente:
gcloud config list
  1. La Cuenta de Google configurada como tu propiedad account del SDK se denomina cuenta del SDK. La herramienta de línea de comandos de gkeadm usa tu cuenta del SDK para descargar el OVA de la estación de trabajo de administrador y habilitar los servicios en tu proyecto de Google Cloud.

Si eliges hacer que gkeadm cree cuentas de servicio automáticamente por ti, entonces gkeadm también usa tu cuenta de SDK para crear claves y cuentas de servicio, y otorgar roles a las cuentas de servicio. Por lo tanto, es importante que establezcas la propiedad account de tu SDK antes de ejecutar gkeadm para crear una estación de trabajo de administrador.

En el resultado, se muestran los valores de la propiedad account de tu SDK. Por ejemplo:

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

Otorga roles a tu cuenta del SDK

Tu cuenta del SDK debe tener el siguiente rol de IAM en el proyecto principal de Google Cloud de la cuenta de servicio de acceso a los componentes. Esto es para que gkeadm pueda habilitar servicios en el proyecto de Google Cloud.

  • serviceUsage.serviceUsageAdmin

Si eliges que gkeadm cree cuentas de servicio automáticamente por ti, la cuenta del SDK también debe tener los siguientes roles en el proyecto superior de la cuenta de servicio de acceso a los componentes. Esto es para que gkeadm pueda crear cuentas de servicio y claves.

  • resourcemanager.projectIamAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

Para otorgar roles en un proyecto de Google Cloud, debes tener ciertos permisos en el 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 el rol necesaria a tu cuenta del SDK, ejecuta lo siguiente:

Linux y macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:ACCOUNT" \
  --role="roles/serviceusage.serviceUsageAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/serviceusage.serviceUsageAdmin"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto superior de Google Cloud de la cuenta de servicio de acceso a los componentes.

  • ACCOUNT: Es tu cuenta del SDK.

Para otorgar funciones adicionales en caso de que quieras que gkeadm cree de forma automática cuentas de servicio.

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/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/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/iam.serviceAccountKeyAdmin"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto superior de tu cuenta de servicio de acceso a los componentes.

  • ACCOUNT: Es tu cuenta del SDK.

Crea tu estación de trabajo de administrador

Ingresa este comando para crear tu estación de trabajo de administrador. Si deseas que gkeadm cree cuentas de servicio, incluye la marca --auto-create-service-accounts. Si deseas crear tus propias cuentas de servicio de forma manual, omite la marca.

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

...
Getting ... service account...
...
********************************************************************
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 de clúster, el archivo de certificado de CA y el archivo de claves JSON para tu cuenta de servicio de acceso a componentes. Si gkeadm creó cuentas de servicio por ti, también puedes ver los archivos de claves JSON para esas cuentas de servicio. Por ejemplo:

admin-cluster.yaml
user-cluster.yaml
vcenter-ca-cert.pem
component-access-key.json

Verifica que gkeadm haya activado tu cuenta de servicio de acceso de componentes en la estación de trabajo de administrador:

gcloud config get-value account

Copia el archivo de claves JSON a tu estación de trabajo de administrador

Antes de crear un clúster, los archivos de claves JSON para tus cuentas de servicio deben estar en tu estación de trabajo de administrador en el directorio principal.

La clave para tu cuenta de servicio de acceso a componentes ya se encuentra en tu estación de trabajo de administrador.

Si incluiste la marca --auto-create-service-accounts cuando ejecutaste gkeadm create admin-workstation, las claves para las siguientes cuentas de servicio ya se encuentran en tu estación de trabajo de administrador en el directorio principal. De lo contrario, debes copiar de forma manual las claves en el directorio principal de tu estación de trabajo de administrador:

  • Cuenta de servicio del registro de Connect
  • Cuenta de servicio de supervisión de registros

Si creaste alguna de las siguientes cuentas de servicio, debes copiar de forma manual las claves de esas cuentas en el directorio principal de tu estación de trabajo de administrador:

  • Cuenta de servicio de medición de uso
  • Cuenta de servicio de registro de auditoría
  • Cuenta de servicio de autorización binaria

Restablece la estación de trabajo de administrador a partir de un archivo de copia de seguridad

Cuando actualizas una estación de trabajo de administrador, el comando gkeadm upgrade también guarda un archivo de copia de seguridad de forma predeterminada. Más adelante, si ya no tienes una estación de trabajo de administrador o si perdiste algunos de los archivos que estaban en la estación de trabajo de administrador actualizada, puedes usar este archivo de copia de seguridad para crear una estación de trabajo de administrador que se restablezca a lo que se implementó inmediatamente después de la actualización.

Para crear una estación de trabajo de administrador a partir de un archivo de copia de seguridad, ejecuta este comando:

gkeadm create admin-workstation --restore-from-backup ADMIN_WORKSTATION_NAME-backup.tar.gz

Reemplaza ADMIN_WORKSTATION_NAME por el nombre de la estación de trabajo de administrador.

Administrada por el usuario

Elige una computadora para que funcione como la estación de trabajo de administrador. Puedes usar Ubuntu o Red Hat Enterprise Linux (RHEL). Estos son los requisitos:

  • Ubuntu 20.04 LTS o 22.04 LTS

    • 4 núcleos de CPU
    • 8 GiB de RAM
    • 100 GiB de almacenamiento
  • RHEL 8.6, 8.7 u 8.8

    • 4 núcleos de CPU
    • 12 GB de RAM
    • 256 GiB de almacenamiento

Acceso a Google Cloud

La estación de trabajo de administrador debe tener acceso a Google Cloud para descargar e instalar herramientas, procesar solicitudes de autorización, crear cuentas de servicio y mucho más.

Para obtener información sobre las diferentes formas de conectarse a Google Cloud, consulta Conéctate a Google.

El acceso a Google Cloud puede ser directo o a través de un servidor proxy. Para obtener información sobre las reglas de firewall y la configuración de un servidor proxy, consulta Reglas de proxy y firewall.

Acceso a vCenter Server

Para crear y administrar clústeres desde la estación de trabajo de administrador, necesitas acceso a la instancia de vCenter Server. Para obtener más información, consulta los siguientes vínculos:

Configura un servidor NTP

Cuando el clúster está configurado para usar un servidor NTP, debes configurar un servicio de sincronización de tiempo en la estación de trabajo de administrador a fin de asegurarte de que timedatectl informe la hora que esté sincronizada con el clúster. Esto es necesario para evitar grandes problemas de desvío de reloj, que pueden causar fallas en la verificación de certificados debido a fechas de vencimiento sin coincidencias.

Ubuntu

Te recomendamos que uses el servidor de hora chrony.

Para instalar chrony, haz lo siguiente:

sudo apt-get update
sudo apt install chrony

Esto proporciona dos objetos binarios:

  • chronyd: El daemon que se sincronizará y entregará a través del protocolo de hora de red.
  • chronyc: Es la interfaz de línea de comandos del daemon chrony.

Para configurar chronyd, haz lo siguiente:

Edita /etc/chrony/chrony.conf para agregar o quitar líneas de servidor. Luego, reinicia chrony:

sudo systemctl restart chrony.service

RHEL

Te recomendamos que uses el servidor de hora chrony.

Para obtener instrucciones de instalación, consulta Cómo configurar Chrony.

Sudo sin contraseña

Si tu política de seguridad lo permite, habilita el protocolo sudo sin contraseña para el usuario actual. Esto permite que gkectl prepare un registro privado, si se proporciona uno, configura un proxy para Docker si tu red está detrás de un servidor proxy y fuerza la eliminación del clúster de arranque que se usa para las operaciones del ciclo de vida del clúster de administrador en caso de que la eliminación falle.

Si decides no habilitar sudo sin contraseña y quieres usar un registro privado para el clúster de administrador, realiza la siguiente configuración manual antes de crear el clúster de administrador:

Si eliges no habilitar sudo sin contraseña, es posible que debas borrar de forma manual el clúster kind después de crear un clúster de administrador. Para obtener más información, consulta Los clústeres de tipos no se borran en la documentación de solución de problemas.

Instalar el software

Ubuntu

Instala el siguiente software:

sudo apt-get update
sudo apt-get -y install kubectl

RHEL

Instala el siguiente software:

Docker 19.03 o posterior

  1. Quita cualquier versión anterior de Docker:

    sudo dnf remove docker \
      docker-client \
      docker-client-latest \
      docker-common \
      docker-latest \
      docker-latest-logrotate \
      docker-logrotate \
      docker-engine
    
  2. Quita podman-manpages:

    sudo dnf remove podman-manpages
    
  3. Instala Docker 19.03+:

    sudo dnf install -y yum-utils
    
    sudo yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo
    
    sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io
    
    sudo systemctl start docker
    
  4. Verifica que se esté ejecutando la versión 19.03+:

    sudo docker version
    
  5. Compara tu resultado con el siguiente ejemplo para garantizar que las versiones de cliente y servidor sean 19.03+:

    Client: Docker Engine - Community
    Version:           19.03.13
    ...
    Server: Docker Engine - Community
    Engine:
    Version:          19.03.13
    
  6. Verifica que se ejecute Docker:

    docker run hello-world
    

    Deberías ver un resultado similar a este:

    Hello from Docker!
    

    This message shows that your installation appears to be working correctly.

Versión más reciente de Google Cloud CLI:

Consulta Instala gcloud CLI.

kubectl

Ejecuta gcloud components install kubectl.

Acceder

La Cuenta de Google configurada como tu propiedad account del SDK se denomina cuenta del SDK. La herramienta de línea de comandos de gkectl usa tu cuenta del SDK para descargar OVAs de nodo de clúster, extraer imágenes de contenedor y mucho más. Por lo tanto, es importante que configures la propiedad de tu cuenta del SDK antes de ejecutar los comandos gkectl.

Accede con cualquier Cuenta de Google. Esto establece la propiedad account de tu SDK:

gcloud auth login

Verifica que la propiedad account de tu SDK esté configurada correctamente:

gcloud config list

En el resultado, se muestran los valores de la propiedad account de tu SDK. Por ejemplo:

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

Descarga gkectl y el paquete

Navega a un directorio en el que quieras instalar gkectl.

Descargar gkectl:

gsutil cp gs://gke-on-prem-release/gkectl/VERSION/gkectl ./
chmod +x gkectl

Reemplaza VERSION por la versión de GKE en VMware. Por ejemplo: 1.16.0-gke.1.

Descarga el paquete de GKE en VMware. Asegúrate de que la versión coincida con la que usaste para descargar gkectl:

gsutil cp gs://gke-on-prem-release/gke-onprem-bundle/VERSION/gke-onprem-vsphere-VERSION.tgz ./

¿Qué sigue?

Crear un clúster de administrador