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 privilegiossudo
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
Define las credenciales predeterminadas que Google Distributed Cloud puede usar para crear el clúster con el siguiente comando:
gcloud auth application-default login
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.
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.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:
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
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 campogkeConnect.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
ygkeConnectRegisterServiceAccountKeyPath
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 incluyesgkeConnect.location
en la especificación del clúster, la región que especifiques debe ser la misma que la región configurada enclusterOperations.location
. Si las regiones no son las mismas, no se podrá crear el clúster.
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
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
agkeOnPremAPI.enabled
. Si no quieres registrar ningún clúster en el proyecto, inhabilitagkeonprem.googleapis.com
(el nombre del servicio de la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilitar servicios.
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
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
son32-250
en los clústeres de alta disponibilidad y64-250
en los que no lo son. El valor predeterminado si no se especifica es110
. 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.