Gerar inventário para integrações de terceiros

Nesta página, descrevemos como gerar um inventário de cluster para uma frota atual. Um inventário de clusters para uma frota permite trabalhar com integrações de código aberto e de terceiros que usam a especificação ClusterProfile.

Um inventário de clusters é o equivalente de código aberto de uma frota: um agrupamento lógico de clusters do Kubernetes e outros recursos que podem ser gerenciados juntos. A especificação ClusterProfile contém informações que são um subconjunto das informações em uma frota.

O recurso de sincronização ClusterProfile é uma sincronização unidirecional entre uma frota e um inventário de clusters. Quando a sincronização do ClusterProfile está ativada, a frota é a fonte de informações, e todas as mudanças feitas nela são aplicadas automaticamente ao inventário de clusters pela sincronização do ClusterProfile. As mudanças feitas diretamente nos recursos de perfil do cluster não são aplicadas à frota.

Antes de começar

  1. Verifique se você seguiu os pré-requisitos gerais para trabalhar com frotas.

  2. Crie uma frota ou identifique uma frota para trabalhar.

Ativar a sincronização do ClusterProfile

A sincronização do ClusterProfile é executada em um cluster na frota. Esse cluster é chamado de cluster de hub e pode ser usado para executar controladores multicluster que precisam de informações sobre o restante dos clusters na frota. Exemplos de controladores de vários clusters incluem controladores do Argo CD e orquestrador de vários clusters. Recomendamos que você não execute outras cargas de trabalho no cluster do hub.

Ative a sincronização do ClusterProfile em um cluster adicionando o rótulo fleet-clusterinventory-management-cluster=true. Faça o seguinte:

Depois de ativar o recurso de sincronização ClusterProfile para uma frota, ele cria automaticamente um perfil de cluster para cada cluster na frota usando a API ClusterProfile. Esses perfis de cluster são criados, atualizados e excluídos automaticamente quando são feitas mudanças na frota.

Ativar a sincronização do ClusterProfile em um novo cluster

Para criar um cluster para o hub e ativar a sincronização do ClusterProfile, use o seguinte comando:

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

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.

Por padrão, os perfis de cluster são criados no namespace fleet-cluster-inventory. Para mudar o namespace, especifique o rótulo fleet-clusterinventory-namespace.

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

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.
  • NAMESPACE: o namespace em que os perfis de cluster são gerados. Se não for especificado, os perfis de cluster serão gerados no namespace fleet-cluster-inventory.

Ativar a sincronização do ClusterProfile em um cluster atual

Para ativar a sincronização do ClusterProfile em um cluster atual, use o seguinte comando:

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

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.

Por padrão, os perfis de cluster são criados no namespace fleet-cluster-inventory. Para mudar o namespace, especifique o rótulo fleet-clusterinventory-namespace.

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

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.
  • NAMESPACE: o namespace em que os perfis de cluster são gerados. Se não for especificado, os perfis de cluster serão gerados no namespace fleet-cluster-inventory.

Verificar se a sincronização do ClusterProfile está ativada

Verifique se a sincronização do ClusterProfile está ativada. Para isso, confira se o cluster do hub inclui o rótulo fleet-clusterinventory-management-cluster = true. Para isso, use o seguinte comando:

gcloud container clusters describe CLUSTER --location LOCATION

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.

A saída será semelhante a esta:

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

Verificar os recursos de perfil de cluster gerados

Verifique se os recursos de perfil do cluster foram gerados no cluster do hub usando o seguinte comando:

gcloud container clusters get-credentials CLUSTER --location LOCATION

kubectl get clusterprofiles -n fleet-cluster-inventory

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.

A resposta precisa ser semelhante a esta:

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

Essa saída precisa incluir um perfil para cada cluster na frota. O nome do perfil do cluster tem o formato MEMBERSHIP-LOCATION.

Ver o conteúdo do perfil do cluster

Para ver o conteúdo do perfil de um cluster específico, use o seguinte comando:

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

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.

A resposta precisa ser semelhante a esta:

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

Desativar a sincronização do ClusterProfile

Desative a sincronização do ClusterProfile no cluster de hub da frota removendo o rótulo fleet-clusterinventory-management-cluster:

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

Substitua:

  • CLUSTER: o nome do recurso google_container_cluster.
  • LOCATION: o local em que o cluster é criado.

A seguir