Config Controller einrichten

Auf dieser Seite erfahren Sie, wie Sie Config Controller einrichten. Config Controller ist ein gehosteter Dienst zur Bereitstellung und Orchestrierung von Anthos- und Google Cloud-Ressourcen. Es bietet einen API-Endpunkt, 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 Cloud SDK, das die in dieser Anleitung verwendeten gcloud-, kubectl-, nomos- und -Befehle enthält. Wenn Sie Cloud Shell verwenden, ist das Cloud SDK bereits installiert.

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

    gcloud components install kubectl
    
  2. Ein Standardnetzwerk erstellen oder zulassen. Config Controller hängt davon ab. Führen Sie den folgenden Befehl aus, um ein Standardnetzwerk zu erstellen:

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

Config Controller einrichten

Erstellen Sie einen Config Controller mit den folgenden gcloud-Toolbefehlen:

  1. Aktivieren Sie die Dienste in Ihrem Projekt, um die nachfolgenden Befehle des gcloud-Tools 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 entweder us-central1 oder us-east1 hinzu. Es werden keine anderen Regionen unterstützt.
  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:

    export PROJECT_ID=$(gcloud config get-value project)
    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}"
    

Google Cloud-Ressourcen mit Config Controller verwalten

Wenn Sie die Einrichtung von Config Controller abgeschlossen haben, können Sie Config Controller zum Verwalten von Google Cloud-Ressourcen verwenden.

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 der Cloud Source Repositories, die Sie verwenden möchten.

  4. Wenden Sie das Manifest an, um das Repository zu erstellen:

    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/importer]
      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. Wenn Sie in Ihrem Repository mit Config Sync Konfigurationen synchronisieren möchten, erstellen Sie eine Datei mit dem Namen config-management.yaml und fügen Sie den folgenden Text ein:

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: false
      policyController:
        enabled: true
      clusterName: krmapihost-CONFIG_CONTROLLER_NAME
      git:
        policyDir: REPO_PATH
        gcpServiceAccountEmail: config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
        secretType: gcpserviceaccount
        syncBranch: REPO_BRANCH
        syncRepo: https://source.developers.google.com/p/PROJECT_ID/r/REPO_NAME
      sourceFormat: unstructured
    

    Dabei gilt:

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

    Weitere Informationen zum Konfigurieren von Config Sync finden Sie unter Config Sync-Lesezugriff auf Git gewähren.

  4. Wenden Sie die Konfiguration mit dem Befehl kubectl apply an:

    kubectl apply -f config-management.yaml
    

Ergebnis prüfen

Die Ersteinrichtung lässt sich so überprüfen:

  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, ob das Git-Repository durch Config Sync mit den Config Controller synchronisiert wurde:

    nomos status --contexts $(kubectl config current-context)
    

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 dem gcloud-Tool 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