Bonnes pratiques concernant Config Connector


Cette page présente les bonnes pratiques à prendre en compte lorsque vous utilisez Config Connector.

Gérer les limites de quota de l'API

Si vous rencontrez des erreurs indiquant que vous avez dépassé la limite de quota d'API, il est possible que vous ayez créé trop de ressources Config Connector du même genre dans le même projet de quota. Lorsque vous créez un grand nombre de ressources, celles-ci peuvent générer trop de requêtes API vers le même point de terminaison d'API en raison de la stratégie de rapprochement utilisée par Config Connector.

Pour résoudre ce problème, vous pouvez demander une augmentation de quota. En plus d'une augmentation de quota, si vous avez confirmé que l'erreur de quota est provoquée par des requêtes GET envoyées aux ressources Google Cloud gérées par vos ressources Config Connector, vous pouvez envisager l'une des options suivantes:

Augmenter l'intervalle de rapprochement

Vous pouvez augmenter le délai entre le rapprochement d'une ressource par Config Connector pour éviter d'atteindre les quotas d'API. Nous vous recommandons de définir l'intervalle de rapprochement sur une heure.

Pour augmenter l'intervalle de rapprochement, suivez les étapes décrites dans Configurer l'intervalle de rapprochement.

Répartissez vos ressources en plusieurs projets

Cette approche répartit vos ressources Config Connector sur différents projets. Cette approche fonctionne bien lors de l'ajout de ressources, mais il peut être risqué de diviser des ressources existantes, car vous devez les supprimer et les recréer dans différents projets. La suppression de ressources peut entraîner la perte de données pour certains types de ressources, tels que les ressources SpannerInstance ou BigtableTable. Vous devez sauvegarder vos données avant de les supprimer.

Pour répartir les ressources Config Connector existantes en différents projets, procédez comme suit:

  1. Choisissez les ressources Config Connector que vous prévoyez de déplacer vers différents projets.
  2. Supprimez les ressources Config Connector. Assurez-vous que l'annotation cnrm.cloud.google.com/deletion-policy n'est pas définie sur abandon.
  3. Mettez à jour le champ spec.projectRef ou l'annotation cnrm.cloud.google.com/project-id dans la configuration YAML des ressources Config Connector que vous prévoyez de déplacer vers les nouveaux projets.
  4. Accordez au compte de service IAM utilisé par Config Connector les autorisations appropriées sur les nouveaux projets.
  5. Appliquez la configuration YAML mise à jour pour créer les ressources Config Connector.

Passer en mode espace de noms

Vous pouvez lier différents comptes de service IAM appartenant à différents projets Google Cloud à différents espaces de noms où Config Connector est installé en mode Espace de noms, et diviser vos ressources en différents espaces de noms. Pour ce faire, procédez comme suit:

  1. Configurez Config Connector pour qu'il s'exécute en mode d'espace de noms. Créez des comptes de service IAM à partir de différents projets et associez-les à différents espaces de noms en suivant les instructions de configuration de Config Connector pour chaque projet.

  2. Accordez aux nouveaux comptes de service IAM les autorisations appropriées sur le projet contenant les ressources.

  3. Décidez quelles ressources Config Connector vous prévoyez de déplacer vers différents espaces de noms.

  4. Mettez à jour la configuration YAML des ressources Config Connector et définissez l'annotation cnrm.cloud.google.com/deletion-policy sur abandon.

  5. Appliquez la configuration YAML mise à jour pour mettre à jour la règle de suppression des ressources Config Connector.

  6. Abandonnez les ressources Config Connector.

  7. Mettez à jour le champ metadata.namespace dans la configuration YAML des ressources de Config Connector que vous prévoyez de déplacer vers les différents espaces de noms.

  8. Appliquez la configuration YAML mise à jour pour acquérir les ressources abandonnées.

Gérer les pools de nœuds dans les clusters GKE

Vous pouvez rencontrer des erreurs lorsque vous créez un cluster en appliquant une ressource ContainerCluster dans Config Connector, puis essayez de mettre à jour le champ nodeConfig ou d'autres champs liés aux nœuds en appliquant une configuration ContainerCluster mise à jour. Ces erreurs sont dues à des champs immuables tels que nodeConfig, nodeConfig.labels et nodeConfig.taint, ce qui constitue une limite technique de l'API Google Cloud sous-jacente.

Si vous devez mettre à jour ces champs, vous pouvez utiliser la ressource ContainerNodePool pour gérer les pools de nœuds dont ces champs ne sont pas immuables. Pour gérer les pools de nœuds à l'aide de la ressource ContainerNodePool, vous devez spécifier une annotation cnrm.cloud.google.com/remove-default-node-pool: "true". Cette annotation supprime le pool de nœuds par défaut créé lors de la création du cluster. Ensuite, pour créer des pools de nœuds distincts, spécifiez les champs nodeConfig dans ContainerNodePool plutôt que dans ContainerCluster. Consultez l'exemple de ressource ContainerNodePool pour référence.

Vous devez définir l'annotation cnrm.cloud.google.com/state-into-spec: absent pour les ressources ContainerCluster et ContainerNodePool. Cette annotation évite les erreurs de rapprochement potentielles lors de l'interaction entre le contrôleur Config Connector et les API sous-jacentes.

Les exemples suivants illustrent une configuration ContainerCluster et ContainerNodePool avec ces annotations définies:

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