Generar inventario para integraciones con terceros

En esta página se describe cómo generar un inventario de clústeres para una flota. Un inventario de clústeres de una flota te permite trabajar con integraciones de código abierto y de terceros que usan la especificación ClusterProfile.

Un inventario de clústeres es el equivalente de código abierto de una flota: una agrupación lógica de clústeres de Kubernetes y otros recursos que se pueden gestionar conjuntamente. La especificación ClusterProfile contiene información que es un subconjunto de la información de una flota.

La función de sincronización de ClusterProfile es una sincronización unidireccional entre una flota y un inventario de clústeres. Cuando la sincronización de ClusterProfile está habilitada, la flota es la fuente de información veraz y los cambios que se realicen en ella se aplican automáticamente al inventario de clústeres mediante la sincronización de ClusterProfile. Los cambios realizados directamente en los recursos del perfil de clúster no se aplican a la flota.

Antes de empezar

  1. Asegúrate de haber seguido los requisitos generales para trabajar con flotas.

  2. Crea una flota o identifica una que ya tengas para trabajar con ella.

Habilitar la sincronización de ClusterProfile

La sincronización de ClusterProfile se ejecuta en un clúster de la flota. Este clúster se llama clúster central y se puede usar para ejecutar controladores multiclúster que necesiten información sobre el resto de los clústeres de la flota. Entre los controladores multiclústeres se incluyen los controladores de Argo CD y el orquestador multiclúster. Te recomendamos que no ejecutes otras cargas de trabajo en el clúster de concentrador.

Habilita la sincronización de ClusterProfile en un clúster añadiendo la etiqueta fleet-clusterinventory-management-cluster=true. Puedes hacer lo siguiente:

Después de habilitar la función de sincronización ClusterProfile en una flota, se crea automáticamente un perfil de clúster para cada clúster de la flota mediante la API ClusterProfile. Estos perfiles de clúster se crean, actualizan y eliminan automáticamente cuando se hacen cambios en la flota.

Habilitar la sincronización de ClusterProfile en un clúster nuevo

Para crear un clúster para el clúster central y habilitar la sincronización de ClusterProfile, usa el siguiente comando:

gcloud container clusters create CLUSTER --location LOCATION --enable-fleet
    --labels=fleet-clusterinventory-management-cluster=true

Haz los cambios siguientes:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.

De forma predeterminada, los perfiles de clúster se crean en el espacio de nombres fleet-cluster-inventory. Para cambiar el espacio de nombres, especifica la etiqueta fleet-clusterinventory-namespace.

gcloud container clusters update CLUSTER --location LOCATION
    --update-labels=fleet-clusterinventory-namespace=NAMESPACE

Haz los cambios siguientes:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.
  • NAMESPACE: el espacio de nombres donde se generan los perfiles de clúster. Si no se especifica, los perfiles de clúster se generan en el espacio de nombres fleet-cluster-inventory.

Habilitar la sincronización de ClusterProfile en un clúster

Para habilitar la sincronización de ClusterProfile en un clúster ya creado, usa el siguiente comando:

gcloud container clusters update CLUSTER --location LOCATION
    --update-labels=fleet-clusterinventory-management-cluster=true

Haz los cambios siguientes:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.

De forma predeterminada, los perfiles de clúster se crean en el espacio de nombres fleet-cluster-inventory. Para cambiar el espacio de nombres, especifica la etiqueta fleet-clusterinventory-namespace.

gcloud container clusters update CLUSTER --location LOCATION
    --update-labels=fleet-clusterinventory-namespace=NAMESPACE

Haz los cambios siguientes:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.
  • NAMESPACE: el espacio de nombres donde se generan los perfiles de clúster. Si no se especifica, los perfiles de clúster se generan en el espacio de nombres fleet-cluster-inventory.

Verificar que la sincronización de ClusterProfile esté habilitada

Comprueba que la sincronización de ClusterProfile esté habilitada. Para ello, verifica que el clúster de concentrador incluya la etiqueta fleet-clusterinventory-management-cluster = true. Para ello, usa el siguiente comando:

gcloud container clusters describe CLUSTER --location LOCATION

Sustituye lo siguiente:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.

La salida debería ser similar a la siguiente:

resourceLabels:
  fleet-clusterinventory-management-cluster: 'true'

Verificar los recursos del perfil de clúster generados

Verifica que los recursos del perfil de clúster se han generado en el clúster de concentrador con el siguiente comando:

gcloud container clusters get-credentials CLUSTER --location LOCATION

kubectl get clusterprofiles -n fleet-cluster-inventory

Haz los cambios siguientes:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.

La salida debería ser similar a la siguiente:

NAME                           AGE
cluster-1-us-west1             10s
cluster-2-us-west1             20s

Este resultado debe incluir un perfil de clúster para cada clúster de la flota. El nombre del perfil de clúster tiene el formato MEMBERSHIP-LOCATION.

Ver el contenido del perfil del clúster

Para ver el contenido del perfil de un clúster específico, usa el siguiente comando:

kubectl get clusterprofile CLUSTER-LOCATION -n fleet-cluster-inventory -o yaml

Haz los cambios siguientes:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.

La salida debería ser similar a la siguiente:

apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ClusterProfile
metadata:
  annotations:
    fleet.gke.io/membershipName: projects/123456789/locations/us-west1/memberships/cluster-1
  labels:
    x-k8s.io/cluster-manager: gke-fleet
  name: cluster-1-us-west1
  namespace: fleet-cluster-inventory

Inhabilitar la sincronización de ClusterProfile

Inhabilita la sincronización de ClusterProfile en el clúster de concentrador de la flota quitando la etiqueta fleet-clusterinventory-management-cluster:

gcloud container clusters update CLUSTER --location LOCATION \
    --remove-labels=fleet-clusterinventory-management-cluster

Haz los cambios siguientes:

  • CLUSTER: el nombre de tu google_container_cluster recurso.
  • LOCATION: la ubicación en la que se crea el clúster.

Siguientes pasos