Gerar inventário para integrações de terceiros

Esta página descreve como gerar um inventário de clusters para uma frota. Um inventário de clusters para uma frota permite trabalhar com integrações de código aberto e de terceiros que usam a 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 em conjunto. A ClusterProfile contém informações que são um subconjunto das informações em uma frota.

O recurso de sincronização do 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 na frota são aplicadas automaticamente ao inventário de clusters pela sincronização do ClusterProfile. As mudanças feitas diretamente nos recursos do perfil de 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 de vários clusters 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 não executar outras cargas de trabalho no cluster de 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 do ClusterProfile para uma frota, ele cria automaticamente um perfil de cluster para cada cluster na frota usando a ClusterProfile API. Esses perfis de cluster são criados, atualizados e excluídos automaticamente quando as mudanças são feitas na frota.

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

Para criar um cluster para o cluster de 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 seu google_container_cluster recurso.
  • 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 seu google_container_cluster recurso.
  • 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

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

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

Substitua:

  • CLUSTER: o nome do seu google_container_cluster recurso.
  • 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 seu google_container_cluster recurso.
  • 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 verificando se o cluster de hub inclui o rótulo fleet-clusterinventory-management-cluster = true. Para fazer isso, use o seguinte comando:

gcloud container clusters describe CLUSTER --location LOCATION

Substitua:

  • CLUSTER: o nome do seu google_container_cluster recurso.
  • 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 de cluster são gerados no cluster de 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 seu google_container_cluster recurso.
  • 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 de cluster para cada cluster na frota. O nome do perfil de cluster tem o formato MEMBERSHIP-LOCATION.

Conferir o conteúdo do perfil de cluster

Para conferir o conteúdo do perfil de cluster 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 seu google_container_cluster recurso.
  • 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 seu google_container_cluster recurso.
  • LOCATION: o local em que o cluster é criado.

A seguir