Blog

Config Connector, ein neuer Ansatz für Infrastructure as Code

Koen Maes

Aktualisiert Oktober 16, 2025
5 Minuten

Infrastructure as Code (IaC) hilft "Cloud Native"-Unternehmen bei der Verwaltung ihrer Infrastruktur auf der Grundlage der Prinzipien der Softwaretechnik. Eine breite Palette von IaC-Tools und -Frameworks erleichtert die Aktualisierung der Cloud-Infrastruktur. Config Connector ist das neueste Mitglied dieser Familie und bietet einen neuen Ansatz, der auf der Leistungsfähigkeit von Kubernetes basiert. In diesem Blogbeitrag erläutern wir, wie er im Vergleich zu anderen Tools funktioniert.

Wenn Unternehmen ihre Infrastruktur erweitern, wird die Erstellung und Durchsetzung konsistenter Konfigurationen und Sicherheitsrichtlinien in einer wachsenden Umgebung schwierig und führt zu Reibungsverlusten. Infrastructure as Code (IaC) schafft hier Abhilfe, indem es die Konfiguration und Bereitstellung von Ressourcen durch Code automatisiert, so dass menschliche Fehler ausgeschlossen sind, Zeit gespart wird und jeder Schritt vollständig dokumentiert ist.

IaC wendet Software-Engineering-Praktiken auf die Infrastruktur an und bringt die gleichen Vorteile für die Infrastruktur:

  1. Automatisieren Sie: Commit, Versionierung, Tracing, Deployment und Zusammenarbeit, genau wie beim Quellcode.
  2. Deklarativ: Geben Sie den gewünschten Zustand der Infrastruktur an, nicht die Aktualisierungen
  3. Zurückrollen: Rollout und Rollback von Änderungen wie bei einer normalen Anwendung
  4. Validieren: Bewertung des gewünschten Zustands im Vergleich zum aktuellen Zustand der Infrastruktur
  5. Skalieren: Bauen Sie wiederverwendbare Infrastrukturblöcke im gesamten Unternehmen

    Iac Tool Landschaft

    Im Laufe der Jahre gab es eine explosionsartige Zunahme von Infrastrukturplattformen und Anwendungs-Frameworks, die die Grundlage für "Cloud Native" bilden. Die beliebtesten sind in der folgenden Tabelle aufgeführt.

    TypUnveränderlichDeklarativSpracheGoogle Cloud-Unterstützung
    TerraformProvisionierungJaJaHCLJa (*)
    Konfig-AnschlussProvisionierungJaJaYAML/KRMJa
    PulumiProvisionierungJaJaJS, TS, Python, ...
    AnsibleKonfig.YAML
    ChefkochKonfig.Ruby

    (*) Für Google Cloud-Ressourcen, die über den Google-Anbieter verwaltet werden, können Support-Fälle eröffnet werden.

    Konfig-Anschluss

    Mit Tools wie Terraform und Pulumi können Administratoren die Infrastruktur im Code deklarieren. Aber der Code stellt keinen festen Vertrag zwischen dem gewünschten und dem aktuellen Zustand her, und jedes Mal, wenn der Code geändert oder refaktorisiert wird, ist ein prozeduraler oder zwingender Ansatz (denken Sie an den Plan/Apply-Schritt) erforderlich, um den Zustand erneut zu validieren.

Bringen Sie Kubernetes ins Spiel.

Controller sind das Herzstück von Kubernetes. Es ist die Aufgabe eines Controllers, dafür zu sorgen, dass der tatsächliche Zustand der Welt für jedes beliebige Objekt mit dem gewünschten Zustand des Objekts übereinstimmt.

Config Connector erweitert das Kubernetes-Ressourcenmodell um benutzerdefinierte Ressourcendefinitionen (CRD) für GCP-Dienste und -Ressourcen. Wenn Sie Config Connector auf einem Kubernetes-Cluster installieren, wird für jeden Dienst und jede Ressource in GCP eine CRD definiert:

➜ kubectl get crd --namespace cnrm-system
NAME                                                                               CREATED AT
accesscontextmanageraccesslevels.accesscontextmanager.cnrm.cloud.google.com        2022-11-29T07:41:51Z
accesscontextmanageraccesspolicies.accesscontextmanager.cnrm.cloud.google.com      2022-11-29T07:41:51Z
accesscontextmanagerserviceperimeters.accesscontextmanager.cnrm.cloud.google.com   2022-11-29T07:41:51Z
apigeeenvironments.apigee.cnrm.cloud.google.com                                    2022-11-29T07:41:51Z
apigeeorganizations.apigee.cnrm.cloud.google.com                                   2022-11-29T07:41:51Z
artifactregistryrepositories.artifactregistry.cnrm.cloud.google.com                2022-11-29T07:41:51Z
backendconfigs.cloud.google.com                                                    2022-11-25T13:06:26Z
bigquerydatasets.bigquery.cnrm.cloud.google.com                                    2022-11-29T07:41:51Z
bigqueryjobs.bigquery.cnrm.cloud.google.com                                        2022-11-29T07:41:52Z
bigquerytables.bigquery.cnrm.cloud.google.com                                      2022-11-29T07:41:52Z
bigtableappprofiles.bigtable.cnrm.cloud.google.com                                 2022-11-29T07:41:52Z
bigtablegcpolicies.bigtable.cnrm.cloud.google.com                                  2022-11-29T07:41:52Z
bigtableinstances.bigtable.cnrm.cloud.google.com                                   2022-11-29T07:41:52Z
bigtabletables.bigtable.cnrm.cloud.google.com                                      2022-11-29T07:41:52Z
billingbudgetsbudgets.billingbudgets.cnrm.cloud.google.com                         2022-11-29T07:41:52Z
binaryauthorizationattestors.binaryauthorization.cnrm.cloud.google.com             2022-11-29T07:41:52Z
binaryauthorizationpolicies.binaryauthorization.cnrm.cloud.google.com              2022-11-29T07:41:52Z
capacityrequests.internal.autoscaling.gke.io                                       2022-11-25T13:05:36Z
cloudbuildtriggers.cloudbuild.cnrm.cloud.google.com                                2022-11-29T07:41:52Z
...

Admins können nun den gewünschten Zustand der Infrastruktur als Objekte in der Kubernetes etcd Datenbank mithilfe der Config Connector CRDs definieren. Der Config Connector operator definiert für jede CRD einen Controller, der den tatsächlichen Zustand der Infrastruktur mit dem gewünschten Zustand der Objekte in der Kubernetes etcd Datenbank abgleicht, wie er von den Administratoren definiert wurde.

Config Connector operator übersetzt den gewünschten deklarativen Zustand in imperative API-Aufrufe.

Config Connector Architektur

Beispiel

Nehmen wir an, wir möchten ein pubsub Thema erstellen.

Zunächst müssen wir pubsub api in unserem Projekt aktivieren. Auf der Grundlage der ServiceUsage CRD können wir eine YAML-Datei erstellen, die erklärt, dass der Dienst aktiviert ist:

apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1   
kind: Service
metadata:
  name: pubsub.googleapis.com
spec:
  projectRef:
    external: projects/my-project-id

Speichern Sie diese YAML-Datei als pubsub-service.yaml und wenden Sie sie auf Ihren Kubernetes-Cluster an:

kubectl apply -f pubsub-service.yaml

Nun, da der Dienst pubsub aktiviert ist, können wir ein Thema erstellen. Basierend auf dem PubSubTopic CRD, deklariert die folgende YAML-Datei pubsub-topic.yaml ein neues Thema pubsub:

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubTopic
metadata:
annotations:
    cnrm.cloud.google.com/project-id: my-project-id
labels:
    managed: configconnector
name: cc-managed-topic

Und wenden Sie die Datei erneut an:

kubectl apply -f pubsub-topic.yaml

Rufen Sie Ihre GCP-Konsole auf und überprüfen Sie, ob ein pubsub Thema mit dem Namen cc-managed-topic tatsächlich erstellt wurde. Herzlichen Glückwunsch, Sie haben Ihre Konfiguration als Daten deklariert!

Aber nun zur Schönheit von Kubernetes und der kontinuierlichen Abstimmung ...

Löschen Sie das Thema pubsub manuell aus Ihrem Projekt. pubsubtopic-controller stellt fest, dass der Ist-Zustand nicht mehr mit dem Soll-Zustand übereinstimmt und beginnt mit den Korrekturmaßnahmen. Warten Sie ein paar Sekunden und ... Kubernetes wird das Thema, das Sie manuell gelöscht haben, neu erstellen! Und es war kein prozeduraler/imperativer Schritt erforderlich.

Überprüfen Sie die Ereignisse auf dem Objekt pubsub, um zu sehen, was passiert ist:

Kubernetes CRD Ereignisse abgleichen

Fazit

Mit Google Config Connector können wir zu einem wirklich deklarativen Ansatz für die Infrastruktur übergehen, indem wir Konfiguration als Daten verwenden und uns die Leistungsfähigkeit von Kubernetes zunutze machen.

Während Config Connector von Google für GCP veröffentlicht wurde, sehen wir eine Übernahme der gleichen Prinzipien durch andere Cloud-Anbieter. Microsoft Azure hat Azure Service Operator veröffentlicht und AWS baut auf AWS Controllers for Kubernetes (ACK).

Und dann gibt es noch Crossplane, das eine universelle Steuerebene bieten soll, damit Plattformteams Infrastrukturen von verschiedenen Anbietern zusammenstellen können.

Ist das der neue Branchentrend? Lassen Sie uns sehen, was die Zukunft bringt.

binx.io-Logo

Verfasst von

Koen Maes

Contact

Let’s discuss how we can support your journey.