Config Controller einrichten

Auf dieser Seite erfahren Sie, wie Sie Config Controller einrichten. Config Controller ist ein gehosteter Dienst, der einen API-Endpunkt bietet, der Google Cloud-Ressourcen als Teil von Anthos Config Management bereitstellen, betreiben und orchestrieren kann. Weitere Informationen zu Config Controller finden Sie in der Config Controller-Übersicht.

Hinweis

Führen Sie vor der Einrichtung von Config Controller die folgenden Schritte aus:

  1. Installieren und initialisieren Sie das Google Cloud CLI, das die in dieser Anleitung verwendeten Befehle gcloud, kubectl und nomos enthält. Wenn Sie Cloud Shell verwenden, ist das Google Cloud CLI vorinstalliert.

    kubectl wird vom Google Cloud CLI nicht standardmäßig installiert. Führen Sie den folgenden Befehl aus, um kubectl zu installieren:

    gcloud components install kubectl
    
  2. Legen Sie das Google Cloud-Projekt fest, in dem Config Controller gehostet werden soll:

    export PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

    Ersetzen Sie dabei PROJECT_ID durch das Google Cloud-Projekt, in dem der Config Controller gehostet werden soll.

  3. Wenn Sie für das Projekt kein Standardnetzwerk haben, erstellen Sie ein Netzwerk mit dem folgenden Befehl:

    gcloud compute networks create default --subnet-mode=auto
    

    Alternativ können Sie beim Einrichten von Config Controller ein anderes Netzwerk mit dem Flag --network im Befehl gcloud anthos config controller create auswählen.

Config Controller einrichten

Erstellen Sie einen Config Controller mit den folgenden gcloud CLI-Befehlen:

  1. Aktivieren Sie die Dienste in Ihrem Projekt, um die nachfolgenden gcloud CLI-Befehle zu verwenden:

    gcloud services enable krmapihosting.googleapis.com \
        container.googleapis.com \
        cloudresourcemanager.googleapis.com
    
  2. Erstellen Sie Ihren Config Controller. Dieser Vorgang kann über 15 Minuten dauern.

    gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
        --location=LOCATION
    

    Dabei gilt:

    • CONFIG_CONTROLLER_NAME: der Name, den Sie dem Controller geben möchten
    • LOCATION: Fügen Sie eine der folgenden Regionen hinzu:

      • us-central1
      • us-east1
      • northamerica-northeast1
      • northamerica-northeast2
      • europe-north1
      • europe-west1
      • europe-west3
      • australia-southeast1
      • australia-southeast2
      • asia-northeast1
      • asia-northeast2

      Es werden keine anderen Regionen unterstützt.

    Sie können optionale Parameter wie --man-block festlegen, mit denen Sie einen CIDR-Bereich angeben können, um IP-Adressen in diesen Bereichen den Zugriff auf die Kubernetes-Steuerungsebene zu ermöglichen. Eine vollständige Liste der Optionen finden Sie in der Dokumentation zu gcloud anthos config controller create.

  3. Nachdem die Instanz erstellt wurde, wird sie in der Liste der Instanzen angezeigt. Führen Sie den folgenden Befehl aus, um die Liste der Instanzen aufzurufen:

    gcloud anthos config controller list --location=LOCATION
    
  4. Wenn Sie Manifeste anwenden möchten, authentifizieren Sie sich bei der Instanz:

    gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \
        --location LOCATION
    
  5. Erteilen Sie Config Controller die Berechtigung zum Verwalten von Google Cloud-Ressourcen im Projekt:

    , wenn Sie weniger Zugriff gewähren möchten.
    export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \
        -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member "serviceAccount:${SA_EMAIL}" \
        --role "roles/owner" \
        --project "${PROJECT_ID}"
    

Config Controller aktualisieren

Da Config Controller ein verwalteter Dienst ist, wird er von Google automatisch aktualisiert. Weitere Informationen zu den enthaltenen Komponenten und neuen Features finden Sie in den Versionshinweisen zu Config Controller.

Google Cloud-Ressourcen mit Config Controller verwalten

Nachdem Sie Config Controller eingerichtet haben, können Sie mit Config Connector viele Google Cloud-Dienste und -Ressourcen mithilfe von Kubernetes-Tools und -APIs verwalten. Eine vollständige Liste der Ressourcen, die Sie verwalten können, finden Sie unter Config Connector-Ressourcen.

In diesem Beispiel erstellen Sie in Cloud Source Repositories ein Repository, das Sie im Abschnitt GitOps einrichten verwenden können.

  1. Erstellen Sie eine Datei mit dem Namen service.yaml und kopieren Sie die folgende YAML-Datei hinein:

    # service.yaml
    
    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sourcerepo.googleapis.com
      namespace: config-control
    
  2. Wenden Sie das Manifest an und warten Sie, bis Cloud Source Repositories aktiviert wurde:

    kubectl apply -f service.yaml
    kubectl wait -f service.yaml --for=condition=Ready
    
  3. Erstellen Sie eine Datei mit dem Namen repo.yaml und kopieren Sie die folgende YAML-Datei hinein:

    # repo.yaml
    
    apiVersion: sourcerepo.cnrm.cloud.google.com/v1beta1
    kind: SourceRepoRepository
    metadata:
      name: REPO_NAME
      namespace: config-control
    

    Ersetzen Sie REPO_NAME durch den Namen, den Sie den Cloud Source Repositories geben möchten.

  4. Zum Erstellen des Deployments wenden Sie dieses Manifest an:

    kubectl apply -f repo.yaml
    

GitOps einrichten

Sie können die Konfigurationen in Ihrem Git-Repository mit Ihrem Config Controller mithilfe von Config Sync synchronisieren. In dem Beispiel in diesem Abschnitt verwenden Sie die Cloud Source Repositories, die Sie im vorherigen Abschnitt erstellt haben.

  1. Erstellen Sie eine Datei mit dem Namen gitops-iam.yaml und kopieren Sie die folgende YAML-Datei hinein:

    # gitops-iam.yaml
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMServiceAccount
    metadata:
      name: config-sync-sa
      namespace: config-control
    spec:
      displayName: ConfigSync
    
    ---
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
      name: config-sync-wi
      namespace: config-control
    spec:
      member: serviceAccount:PROJECT_ID.svc.id.goog[config-management-system/root-reconciler]
      role: roles/iam.workloadIdentityUser
      resourceRef:
        apiVersion: iam.cnrm.cloud.google.com/v1beta1
        kind: IAMServiceAccount
        name: config-sync-sa
    
    ---
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
      name: allow-configsync-sa-read-csr
      namespace: config-control
    spec:
      member: serviceAccount:config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
      role: roles/source.reader
      resourceRef:
        apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
        kind: Project
        external: projects/PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID, auf der der Config Controller ausgeführt wird.

  2. Wenden Sie das Manifest an, um Config Sync Zugriff auf das Repository zu gewähren:

    kubectl apply -f gitops-iam.yaml
    
  3. Config Controller aktiviert automatisch die RootSync und RepoSync APIs von Config Sync. Mit diesen APIs erhalten Sie Zugriff auf zusätzliche Config Sync-Features, z. B. die Synchronisierung aus mehreren Repositories und das automatische Rendering von Kustomize- und Helm-Konfigurationen.

    Wenn Sie Config Sync konfigurieren möchten, erstellen Sie ein RootSync-Objekt. Erstellen Sie zum Erstellen dieses Objekts eine Datei mit dem Namen root-sync.yaml und kopieren Sie den folgenden Text in diese Datei:

    # root-sync.yaml
    
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: root-sync
      namespace: config-management-system
    spec:
      sourceFormat: unstructured
      git:
        repo: https://source.developers.google.com/p/PROJECT_ID/r/REPO_NAME
        branch: REPO_BRANCH
        dir: REPO_PATH
        auth: gcpserviceaccount
        gcpServiceAccountEmail: config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
    

    Dabei gilt:

    • PROJECT_ID: die ID des Projekts, das das Dienstkonto und das Git-Repository enthält.
    • REPO_NAME: der Name des Git-Repositorys, aus dem die Konfiguration abgerufen und auf Änderungen geprüft werden soll.
    • REPO_BRANCH: der Zweig des Repositorys, von dem aus synchronisiert werden soll. Der Standardwert ist master.
    • REPO_PATH: der Pfad des Verzeichnisses, von dem aus synchronisiert werden soll, relativ zum Stammverzeichnis des Git-Repositorys. Der Standardwert ist /.

    Weitere Informationen zu den Feldern in root-sync.yaml finden Sie unter RootSync- und RepoSync-Felder.

  4. Zum Erstellen der Config Sync-Konfiguration wenden Sie das Manifest an und warten Sie, bis der Vorgang abgeschlossen ist:

    kubectl apply -f root-sync.yaml
    kubectl wait --for condition=established --timeout=10s crd/rootsyncs.configsync.gke.io
    

Ergebnis prüfen

Prüfen Sie die Ersteinrichtung. Führen Sie dazu die folgenden Schritte aus:

  1. Prüfen Sie, ob alle Controller auf Ihrem Config Controller erfolgreich eingerichtet wurden:

    kubectl wait pod --all --all-namespaces --for=condition=Ready
    
  2. Prüfen Sie mit dem Befehl nomos oder gcloud alpha anthos config sync repo, ob das Git-Repository mit Config Controller über Config Sync synchronisiert wurde:

    nomos status --contexts $(kubectl config current-context)
    
    # or
    
    gcloud alpha anthos config sync repo list --targets config-controller
    

Config Controller löschen

Wenn Sie Config Controller nicht mehr verwenden möchten, sollten Sie alle erstellten Ressourcen bereinigen. Sie sollten zuerst die Ressourcen aus dem Config Controller entfernen, bevor Sie den Config Controller selbst löschen.

Wenn Sie Ihren Config Controller löschen, ohne zuerst die bereitgestellten Ressourcen zu löschen, bleiben die Ressourcen im Status "Verworfen". Die Ressourcen sind weiterhin in Google Cloud vorhanden und es fallen Gebühren an, sie werden jedoch nicht über die deklarative Konfiguration verwaltet.

Sobald alle Ressourcen gelöscht wurden, können Sie Ihren Config Controller mit der gcloud CLI löschen:

gcloud anthos config controller delete --location=LOCATION CONFIG_CONTROLLER_NAME

Überlegungen zur Produktion

Bei der Produktion sollten Sie zuerst die Überlegungen zur Hochverfügbarkeit für Config Controller lesen.

Nächste Schritte