Práticas recomendadas para o Config Connector


Nesta página, explicamos as práticas recomendadas que você deve considerar ao usar o Config Connector.

Gerenciar limites de cota da API

Se você encontrar erros indicando que excedeu o limite de cota da API, talvez tenha criado muitos recursos do Config Connector do mesmo tipo no mesmo projeto de cota. Quando você cria muitos recursos, eles podem gerar muitas solicitações de API para o mesmo endpoint devido à estratégia de reconciliação que o Config Connector usa.

Uma maneira de resolver esse problema é solicitar um aumento de cota. Além de um aumento de cota, se você confirmou que o erro de cota é causado por solicitações GET em relação aos recursos Google Cloud gerenciados pelo Config Connector, considere uma das seguintes opções:

Aumentar o intervalo de reconciliação

É possível aumentar o tempo entre a reconciliação de um recurso pelo Config Connector para evitar o atingimento de cotas da API. A recomendação é definir o intervalo de reconciliação como 1 hora.

Para aumentar o intervalo de reconciliação, siga as etapas em Como configurar o intervalo de reconciliação.

Dividir seus recursos em vários projetos

Essa abordagem distribui os recursos do Config Connector em diferentes projetos. Essa abordagem funciona bem ao adicionar novos recursos, mas pode ser arriscado dividir os recursos atuais porque você precisa excluir os recursos existentes e recriar em projetos diferentes. A exclusão de recursos pode causar a perda de dados com alguns tipos de recursos, como SpannerInstance ou BigtableTable. Faça o backup dos seus dados antes de excluí-los.

Para dividir os recursos do Config Connector em diferentes projetos, siga estas etapas:

  1. Decida quais recursos do Config Connector você planeja mover para projetos diferentes.
  2. Exclua os recursos do Config Connector. Confira se a anotação cnrm.cloud.google.com/deletion-policy não está definida como abandon.
  3. Atualize o campo spec.projectRef ou a anotação cnrm.cloud.google.com/project-id na configuração YAML dos recursos do Config Connector que você planeja mover para os novos projetos.
  4. Conceda à conta de serviço do IAM usada pelo Config Connector as permissões adequadas nos novos projetos.
  5. Aplique a configuração YAML atualizada para criar os recursos do Config Connector.

Mudar para o modo com namespace

É possível vincular diferentes contas de serviço do IAM de diferentes projetosGoogle Cloud a diferentes namespaces em que o Config Connector está instalado no modo de namespace e dividir seus recursos em diferentes namespaces. Para isso, siga estas etapas:

  1. Configure o Config Connector para ser executado no modo com namespace. Crie novas contas de serviço do IAM em projetos diferentes e vincule-as a namespaces diferentes seguindo as instruções para configurar o Config Connector em cada projeto.

  2. Conceda às novas contas de serviço do IAM as permissões adequadas para o projeto que contém os recursos.

  3. Decida quais recursos do Config Connector você planeja mover para diferentes namespaces.

  4. Atualize a configuração YAML dos recursos do Config Connector e defina a anotação cnrm.cloud.google.com/deletion-policy abandon.

  5. Aplique a configuração YAML atualizada para atualizar a política de exclusão dos recursos do Config Connector.

  6. Abandone os recursos do Config Connector.

  7. Atualize o campo metadata.namespace na configuração YAML dos recursos do Config Connector que você planeja mover para os diferentes namespaces.

  8. Aplique a configuração YAML atualizada para adquirir os recursos abandonados.

Gerenciar pools de nós em clusters do GKE

Você pode encontrar erros ao criar um cluster aplicando um recurso ContainerCluster no Config Connector e tentar atualizar o nodeConfig ou outros campos relacionados ao nó aplicando uma configuração ContainerCluster atualizada. Esses erros são devidos a campos imutáveis, como nodeConfig, nodeConfig.labels, nodeConfig.taint, que é uma limitação técnica da APIGoogle Cloud .

Se você precisar atualizar esses campos, use o recurso ContainerNodePool para gerenciar pools de nós em que esses campos não são imutáveis. Para gerenciar pools de nós usando o recurso ContainerNodePool, é necessário especificar uma anotação cnrm.cloud.google.com/remove-default-node-pool: "true". Essa anotação remove o pool de nós padrão que é criado durante a criação do cluster. Em seguida, para criar pools de nós separados, especifique os campos nodeConfig em ContainerNodePool em vez de ContainerCluster. Consulte o exemplo de recurso ContainerNodePool para referência.

Defina a anotação cnrm.cloud.google.com/state-into-spec: absent para os recursos ContainerCluster e ContainerNodePool. Essa anotação evita possíveis erros de reconciliação durante a interação entre o controlador do Config Connector e as APIs subjacentes.

Os exemplos a seguir mostram uma configuração ContainerCluster e ContainerNodePool com estas anotações definidas:

apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerCluster
metadata:
  name: containercluster-sample
  annotations:
    cnrm.cloud.google.com/remove-default-node-pool: "true"
    cnrm.cloud.google.com/state-into-spec: absent
spec:
  description: A sample cluster.
  location: us-west1
  initialNodeCount: 1
apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerNodePool
metadata:
  labels:
    label-one: "value-one"
  name: containernodepool-sample
  annotations:
    cnrm.cloud.google.com/state-into-spec: absent
spec:
  location: us-west1
  autoscaling:
    minNodeCount: 1
    maxNodeCount: 3
  nodeConfig:
    machineType: n1-standard-1
    preemptible: false
    oauthScopes:
      - "https://www.googleapis.com/auth/logging.write"
      - "https://www.googleapis.com/auth/monitoring"
  clusterRef:
    name: containercluster-sample