Best Practices für Config Connector
Auf dieser Seite werden Best Practices für die Verwendung von Config Connector erläutert.
API-Kontingentlimits verwalten
Wenn Sie Fehler erhalten, die darauf hinweisen, dass Sie das API-Kontingent überschritten haben, haben Sie möglicherweise zu viele Config Connector-Ressourcen derselben Art im selben Kontingentprojekt erstellt. Wenn Sie viele Ressourcen erstellen, können diese aufgrund der Abgleichsstrategie, die Config Connector verwendet, zu viele API-Anfragen an denselben API-Endpunkt generieren.
Eine Möglichkeit zur Behebung dieses Problems ist, eine Kontingenterhöhung anzufordern. Wenn Sie festgestellt haben, dass der Kontingentfehler durch GET-Anfragen an die Google Cloud von Ihrem Config Connector verwalteten Ressourcen verursacht wird, können Sie neben einer Kontingenterhöhung eine der folgenden Optionen in Betracht ziehen:
- Erhöhen Sie das Abgleichintervall für Ihre Config Connector-Ressourcen.
- Ressourcen auf mehrere Projekte aufteilen
- Config Connector in den Namespace-Modus umstellen
Intervall für die Abgleiche verlängern
Sie können die Zeit zwischen den Abgleichvorgängen von Config Connector für eine Ressource verlängern, um API-Kontingente nicht zu überschreiten. Wir empfehlen, das Intervall für die Abgleiche auf 1 Stunde festzulegen.
Wenn Sie das Abgleichintervall verlängern möchten, folgen Sie der Anleitung unter Abgleichintervall konfigurieren.
Ressourcen auf mehrere Projekte aufteilen
Bei diesem Ansatz werden Ihre Config Connector-Ressourcen auf verschiedene Projekte verteilt. Dieser Ansatz funktioniert gut, wenn neue Ressourcen hinzugefügt werden. Es kann jedoch riskant sein, vorhandene Ressourcen aufzuteilen, da Sie die vorhandenen Ressourcen löschen und in verschiedenen Projekten neu erstellen müssen. Das Löschen von Ressourcen kann bei einigen Arten von Ressourcen zu Datenverlusten führen, z. B. bei SpannerInstance
- oder BigtableTable
-Ressourcen. Sie sollten Ihre Daten sichern, bevor Sie sie löschen.
So teilen Sie vorhandene Config Connector-Ressourcen in verschiedene Projekte auf:
- Entscheiden Sie, welche Config Connector-Ressourcen Sie in andere Projekte verschieben möchten.
- Löschen Sie die Config Connector-Ressourcen.
Die Anmerkung
cnrm.cloud.google.com/deletion-policy
darf nicht aufabandon
festgelegt sein. - Aktualisieren Sie das Feld
spec.projectRef
oder diecnrm.cloud.google.com/project-id
-Anmerkung in der YAML-Konfiguration der Config Connector-Ressourcen, die Sie in die neuen Projekte verschieben möchten. - Gewähren Sie dem IAM-Dienstkonto, das von Config Connector verwendet wird, die erforderlichen Berechtigungen für die neuen Projekte.
- Wenden Sie die aktualisierte YAML-Konfiguration an, um die Config Connector-Ressourcen zu erstellen.
Zum Namespace-Modus wechseln
Sie können verschiedene IAM-Dienstkonten, die zu verschiedenenGoogle Cloud -Projekten gehören, an verschiedene Namespaces binden, in denen Config Connector im Namespace-Modus installiert ist, und Ihre Ressourcen in verschiedene Namespaces aufteilen. Gehen Sie dazu so vor:
Config Connector für die Ausführung im Namespace-Modus konfigurieren Erstellen Sie neue IAM-Dienstkonten aus verschiedenen Projekten und binden Sie sie an verschiedene Namespaces. Folgen Sie dazu der Anleitung zum Konfigurieren von Config Connector für jedes Projekt.
Gewähren Sie den neuen IAM-Dienstkonten die erforderlichen Berechtigungen für das Projekt, das die Ressourcen enthält.
Entscheiden Sie, welche Config Connector-Ressourcen Sie in andere Namespaces verschieben möchten.
Aktualisieren Sie die YAML-Konfiguration der Config Connector-Ressourcen und legen Sie die
cnrm.cloud.google.com/deletion-policy
-Anmerkungabandon
fest.Wenden Sie die aktualisierte YAML-Konfiguration an, um die Richtlinie zum Löschen von Config Connector-Ressourcen zu aktualisieren.
Aktualisieren Sie das Feld
metadata.namespace
in der YAML-Konfiguration der Config Connector-Ressourcen, die Sie in die verschiedenen Namespaces verschieben möchten.Wenden Sie die aktualisierte YAML-Konfiguration an, um die aufgegebenen Ressourcen abzurufen.
Knotenpools in GKE-Clustern verwalten
Wenn Sie einen Cluster erstellen, indem Sie eine ContainerCluster
-Ressource in Config Connector anwenden, und dann versuchen, das Feld nodeConfig
oder andere netzwerkbezogene Felder durch Anwenden einer aktualisierten ContainerCluster
-Konfiguration zu aktualisieren, treten möglicherweise Fehler auf. Diese Fehler sind auf unveränderliche Felder wie nodeConfig
, nodeConfig.labels
und nodeConfig.taint
zurückzuführen. Dies ist eine technische Einschränkung der zugrunde liegenden Google Cloud API.
Wenn Sie diese Felder aktualisieren müssen, können Sie die Ressource ContainerNodePool
verwenden, um Knotenpools zu verwalten, bei denen diese Felder nicht unveränderlich sind. Wenn Sie Knotenpools mit der ContainerNodePool
-Ressource verwalten möchten, müssen Sie die Annotation cnrm.cloud.google.com/remove-default-node-pool: "true"
angeben. Mit dieser Anmerkung wird der Standardknotenpool entfernt, der beim Erstellen des Clusters erstellt wird. Wenn Sie separate Knotenpools erstellen möchten, geben Sie die nodeConfig
-Felder in ContainerNodePool
anstelle von ContainerCluster
an. Weitere Informationen finden Sie im Beispiel für die ContainerNodePool
-Ressource.
Sie sollten die Anmerkung
cnrm.cloud.google.com/state-into-spec: absent
sowohl für die ContainerCluster
- als auch für die ContainerNodePool
-Ressource festlegen. Mit dieser Anmerkung werden potenzielle Abgleichsfehler bei der Interaktion zwischen dem Config Connector-Controller und den zugrunde liegenden APIs vermieden.
Die folgenden Beispiele zeigen eine ContainerCluster
- und eine ContainerNodePool
-Konfiguration mit den folgenden Anmerkungen:
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