Crear clústeres de administrador

En Google Distributed Cloud, puedes configurar clústeres de administrador para gestionar otros clústeres de forma segura. Puedes crear, actualizar, mejorar o eliminar clústeres de usuarios desde admin clusters. Los clústeres de usuarios ejecutan cargas de trabajo de forma independiente a la administración, por lo que la información sensible está protegida.

Los clústeres de administrador que gestionan cargas de trabajo de varios clústeres pueden proporcionar una fiabilidad de alta disponibilidad. En un clúster de alta disponibilidad, si falla un nodo del plano de control, los demás nodos seguirán funcionando.

Un clúster de administrador en un entorno multiclúster proporciona la mejor seguridad fundamental. Como el acceso a los datos de administración está separado de las cargas de trabajo, los usuarios que acceden a las cargas de trabajo no tienen acceso a datos administrativos sensibles, como las claves SSH y los datos de las cuentas de servicio. Por lo tanto, hay un equilibrio entre la seguridad y los recursos necesarios, ya que un clúster de administrador independiente significa que necesitas recursos específicos para la gestión y las cargas de trabajo.

Para crear un clúster de administrador, usa el comando bmctl. Después de crear un clúster de administrador, puedes crear clústeres de usuario para ejecutar cargas de trabajo.

Requisitos previos:

  • Se descarga la versión más reciente de bmctl (gs://anthos-baremetal-release/bmctl/1.33.100-gke.89/linux-amd64/bmctl) de Cloud Storage.
  • La estación de trabajo que ejecuta bmctl tiene conectividad de red con todos los nodos de los clústeres de usuario de destino.
  • La estación de trabajo que ejecuta bmctl tiene conectividad de red con el servidor de la API del clúster (VIP del plano de control).
  • La clave SSH que se usa para crear el clúster de administrador está disponible para root o para un usuario que no sea root con privilegios sudo sin contraseña en todos los nodos del clúster de administrador de destino.
  • La cuenta de servicio de conexión y registro está configurada para usarse con Connect.

Consulta la guía de inicio rápido de Google Distributed Cloud para ver instrucciones detalladas sobre cómo crear un clúster híbrido. Crear un clúster de administradores es similar a crear un clúster híbrido, excepto que no ejecutas cargas de trabajo en el clúster de administradores.

Habilitar SELinux

Si quieres habilitar SELinux para proteger tus contenedores, debes asegurarte de que SELinux esté habilitado en modo Enforced en todas tus máquinas host. A partir de la versión 1.9.0 de Google Distributed Cloud, puedes habilitar o inhabilitar SELinux antes o después de crear o actualizar un clúster. SELinux está habilitado de forma predeterminada en Red Hat Enterprise Linux (RHEL). Si SELinux está inhabilitado en tus máquinas host o no lo tienes claro, consulta el artículo Protege tus contenedores mediante SELinux para obtener instrucciones sobre cómo habilitarlo.

Google Distributed Cloud solo admite SELinux en sistemas RHEL.

Inicia sesión en la CLI de gcloud y crea un archivo de configuración de clúster de administrador

  1. Define las credenciales predeterminadas que Google Distributed Cloud puede usar para crear el clúster con el siguiente comando:

    gcloud auth application-default login
    
  2. Para usar las funciones de habilitación automática de APIs y creación de cuentas de servicio de esta página, otorga el rol Propietario del proyecto a esa entidad. Si la entidad de seguridad no puede tener el rol Propietario del proyecto, completa el siguiente paso.

  3. Para asegurarte de que el clúster se pueda crear sin conceder el rol Propietario del proyecto, añade los siguientes roles de gestión de identidades y accesos al principal:

    • Administrador de cuentas de servicio
    • Administrador de claves de cuentas de servicio
    • Administrador de gestión de identidades y accesos de proyectos
    • Lector de Compute
    • Administrador del uso del servicio

    Si el principal es una cuenta de servicio con esos roles, puedes ejecutar lo siguiente:

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Sustituye JSON_KEY_FILE por la ruta al archivo de clave JSON de tu cuenta de servicio.

  4. Obtén el ID de tu proyecto Google Cloud y guárdalo en una variable de entorno para usarlo al crear el clúster:

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

Crea una configuración de clúster de administrador con bmctl

Una vez que hayas iniciado sesión en la CLI de gcloud y hayas configurado tu proyecto, puedes crear el archivo de configuración del clúster con el comando bmctl.

.

En el siguiente ejemplo, el comando bmctl create config crea automáticamente todas las cuentas de servicio:

bmctl create config -c ADMIN_CLUSTER_NAME --enable-apis \
    --create-service-accounts --project-id=CLOUD_PROJECT_ID

Haz los cambios siguientes:

  • ADMIN_CLUSTER_NAME: el nombre del nuevo clúster.
  • CLOUD_PROJECT_ID: tu ID de proyecto Google Cloud o la variable de entorno $CLOUD_PROJECT_ID.

Aquí tienes un ejemplo para crear un archivo de configuración de un clúster de administrador llamado admin1 asociado al ID de proyecto my-gcp-project:

bmctl create config -c admin1 --create-service-accounts --enable-apis --project-id=my-gcp-project

El archivo se escribe en bmctl-workspace/admin1/admin1.yaml.

Como alternativa a habilitar automáticamente las APIs y crear cuentas de servicio, también puedes proporcionar a tus cuentas de servicio los permisos de gestión de identidades y accesos adecuados. Esto significa que puedes saltarte la creación automática de la cuenta de servicio en el ejemplo anterior del comando bmctl:

bmctl create config -c admin1 --project-id=my-gcp-project

Editar el archivo de configuración del clúster

Ahora que tienes un archivo de configuración de clúster, edítalo para hacer los siguientes cambios:

  1. Proporciona la clave privada SSH para acceder a los nodos del clúster de administrador:

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/admin cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. Registra tus clústeres en una flota. El ID de proyecto que has especificado en el comando bmctl create config se añade automáticamente al campo gkeConnect.projectID del archivo de configuración del clúster. Este proyecto se denomina proyecto del host de la flota.

    • Si has creado el archivo de configuración mediante las funciones de habilitación automática de APIs y de creación de cuentas de servicio, puedes saltarte este paso.

    • Si has creado el archivo de configuración sin usar las funciones de habilitación automática de la API y de creación de cuentas de servicio, haz referencia a las claves JSON de la cuenta de servicio descargadas en los campos gkeConnectAgentServiceAccountKeyPath y gkeConnectRegisterServiceAccountKeyPath correspondientes del archivo de configuración del clúster.

    • De forma opcional, puedes añadir gkeConnect.location a la especificación del clúster para especificar la región Google Cloud en la que se ejecutan los servicios Fleet y Connect. Esta pertenencia regional restringe el tráfico del servicio de flota a tu región. Si incluyes gkeConnect.location en la especificación del clúster, la región que especifiques debe ser la misma que la región configurada en clusterOperations.location. Si las regiones no son las mismas, no se podrá crear el clúster.

  3. Comprueba que la configuración especifica el tipo de clúster admin (el valor predeterminado):

    spec:
      # Cluster type. This can be:
      #   1) admin:  to create an admin cluster. This can later be used to create user clusters.
      #   2) user:   to create a user cluster. Requires an existing admin cluster.
      #   3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.
      #   4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.
      type: admin
    
  4. Si la API de GKE On-Prem está habilitada en tuGoogle Cloud proyecto, todos los clústeres del proyecto se registran en la API de GKE On-Prem automáticamente en la región configurada en clusterOperations.location.

    • Si quieres registrar todos los clústeres del proyecto en la API GKE On-Prem, sigue los pasos que se indican en la sección Antes de empezar para activar y usar la API GKE On-Prem en el proyecto.

    • Si no quieres registrar el clúster en la API GKE On-Prem, incluye esta sección y asigna el valor false a gkeOnPremAPI.enabled. Si no quieres registrar ningún clúster en el proyecto, inhabilita gkeonprem.googleapis.com (el nombre del servicio de la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilitar servicios.

  5. Cambia el archivo de configuración para especificar un plano de control de alta disponibilidad con varios nodos. Especifica un número impar de nodos para tener un quórum mayoritario para la alta disponibilidad:

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    
  6. Especifica la densidad de pods de los nodos del clúster:

    ....
    # NodeConfig specifies the configuration that applies to all nodes in the cluster.
    nodeConfig:
      # podDensity specifies the pod density configuration.
      podDensity:
        # maxPodsPerNode specifies at most how many pods can be run on a single node.
        maxPodsPerNode: 250
    ....
    

    En los clústeres de administrador, los valores permitidos para maxPodsPerNode son 32-250 en los clústeres de alta disponibilidad y 64-250 en los que no lo son. El valor predeterminado si no se especifica es 110. Una vez que se haya creado el clúster, no se podrá actualizar este valor.

    La densidad de pods también está limitada por los recursos de IP disponibles de tu clúster. Para obtener más información, consulta Redes de pods.

Crea el clúster de administrador con la configuración del clúster

Usa el comando bmctl para implementar el clúster:

bmctl create cluster -c ADMIN_CLUSTER_NAME

ADMIN_CLUSTER_NAME especifica el nombre del clúster creado en la sección anterior.

A continuación, se muestra un ejemplo del comando para crear un clúster llamado admin1:

bmctl create cluster -c admin1

Ejemplos de configuraciones de clústeres de administrador

Para ver ejemplos de configuraciones de clústeres de administrador, consulta Clústeres de administrador en la sección Ejemplos de configuración de clústeres.