Crea clústeres de administrador en una configuración de varios clústeres

En clústeres de Anthos en equipos físicos, configura clústeres de administrador para administrar otros clústeres de manera segura. Puedes crear, actualizar, o borrar clústeres de usuario de los clústeres de administrador. Los clústeres de usuarios ejecutan cargas de trabajo por separado de la administración, por lo que la información sensible está protegida.

Los clústeres de administrador que administran cargas de trabajo de varios clústeres pueden proporcionar confiabilidad con alta disponibilidad (HA). En un clúster de HA, si un nodo del plano de control falla, otros nodos seguirán funcionando.

Un clúster de administrador en un entorno de varios clústeres proporciona la mejor seguridad básica. Debido a que el acceso a los datos de administración está separado de las cargas de trabajo, las personas que acceden a las cargas de trabajo de usuarios no tienen acceso a datos administrativos sensibles, como las claves SSH y los datos de cuentas de servicio. Como resultado, se genera una compensación entre la seguridad y los recursos requeridos, ya que un clúster de administrador independiente significa que necesitarás recursos dedicados para la administración y las cargas de trabajo.

Puedes crear un clúster de administrador con el comando bmctl. Después de crear un clúster de administrador, debes crear clústeres de usuario para ejecutar las cargas de trabajo.

Requisitos previos:

  • Se descarga la versión más reciente de bmctl (gs://anthos-baremetal-release/bmctl/1.11.8/linux-amd64/bmctl) de Cloud Storage.
  • La estación de trabajo que ejecuta bmctl tiene conectividad de red a todos los nodos en los clústeres de usuario de destino.
  • La estación de trabajo que ejecuta bmctl tiene conectividad de red al servidor de la API del clúster (plano de control de VIP).
  • La clave SSH que se usa para crear el clúster de administrador está disponible para la raíz, o hay acceso de usuario SUDO en todos los nodos del clúster de administrador de destino.
  • La cuenta de servicio del registro de Connect está configurada para usarse con Connect.

Consulta la guía de inicio rápido de los clústeres de Anthos en equipos físicos para obtener instrucciones detalladas sobre cómo crear un clúster híbrido. Crear un clúster de administrador es similar a crear un clúster híbrido, excepto que no ejecutas cargas de trabajo en el clúster de administrador.

Habilita SELinux

Si deseas habilitar SELinux para proteger tus contenedores, debes asegurarte de que SELinux esté habilitado en el modo Enforced en todas tus máquinas anfitrión. A partir de la versión 1.9.0 o posterior de los clústeres de Anthos en equipos físicos, puedes habilitar o inhabilitar SELinux antes o después de crear o actualizar clústeres. SELinux está habilitado de forma predeterminada en Red Hat Enterprise Linux (RHEL) y CentOS. Si SELinux está inhabilitado en tus máquinas anfitrión o no estás seguro, consulta Protege tus contenedores con SELinux a fin de obtener instrucciones para habilitarlo.

Los clústeres de Anthos en equipos físicos son compatibles con SELinux en sistemas RHEL y CentOS.

Accede a la CLI de gcloud y crea un archivo de configuración del clúster de administrador

  1. Configura las credenciales predeterminadas que los clústeres de Anthos en el equipo físico pueden usar para crear el clúster con el siguiente comando:

    gcloud auth application-default login
    
  2. Para usar las funciones automáticas de habilitación de API y creación de cuentas de servicio en esta página, otorga la función de propietario del proyecto a ese principal. Si el principal no puede tener la función de propietario del proyecto, completa el siguiente paso.

  3. Para asegurarte de que la creación del clúster se pueda realizar sin necesidad de otorgar la función de propietario del proyecto, agrega las siguientes funciones de IAM al principal:

    • Administrador de cuenta de servicio
    • Administrador de clave de cuenta de servicio
    • Administrador de IAM de proyecto
    • Lector de Compute
    • Administrador de Service Usage

    Si el principal es una cuenta de servicio con esas funciones, puedes ejecutar lo siguiente:

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Reemplaza JSON_KEY_FILE por la ruta al archivo de claves JSON de tu cuenta de servicio.

  4. Obtén el ID del proyecto de Google Cloud y almacénalo en una variable de entorno para usarlo en la creación del clúster:

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

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

Después de acceder a gcloud y configurar el proyecto, puedes crear el archivo de configuración del clúster con el comando bmctl.

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

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

Reemplaza lo siguiente:

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

A continuación, se muestra un ejemplo a fin de crear un archivo de configuración para un clúster de administrador llamado admin1 asociado con el ID del 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 las API y crear cuentas de servicio automáticamente, también puedes proporcionar tus cuentas de servicio existentes con los permisos de IAM adecuados. Esto significa que puedes omitir la creación automática de cuentas de servicio en el paso anterior en el comando bmctl:

bmctl create config -c admin1

Edita el archivo de configuración del clúster

Ahora que tienes un archivo de configuración del clúster, edítalo para realizar 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. En el caso de las versiones 1.7.0 y posteriores, debes registrar tus clústeres con Connect en el entorno de proyecto.

    • Si creaste el archivo de configuración con las funciones de habilitación automática de la API y de creación de cuentas de servicio, puedes omitir este paso.
    • Si creaste el archivo de configuración sin usar las funciones automáticas de habilitación de 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.
  3. Asegúrate de que la configuración especifique un tipo de clúster de 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. Cambia el archivo de configuración para especificar un plano de control de varios nodos y alta disponibilidad. Especifica una cantidad impar de nodos a fin de tener la mayoría de quórum para la HA:

      # 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
    
  5. Especifica la densidad del Pod de los nodos del clúster y el entorno de ejecución del contenedor:

    ....
    # 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
      # containerRuntime specifies which container runtime to use for scheduling containers on nodes.
      # containerd and docker are supported.
      containerRuntime: containerd
    ....
    

    En los clústeres de administrador, los valores permitidos para maxPodsPerNode son 32-250 para los clústeres de alta disponibilidad y 64-250 para los clústeres que no son HA. El valor predeterminado si no se especifica, es 110. Este valor no se puede actualizar una vez que se crea el clúster.

    El entorno de ejecución del contenedor predeterminado es containerd. De forma alternativa, puedes usar Docker. Si deseas obtener más información para cambiar el entorno de ejecución, consulta la Guía de cambio del entorno de ejecución de contenedores.

    La densidad del Pod también está limitada por los recursos IP disponibles de tu clúster. Para obtener más detalles, consulta Herramientas de 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 configuración de clústeres de administrador

Para ver ejemplos de configuración de clústeres de administrador, consulta Clústeres de administrador en las muestras de configuración de clústeres.