Synchronisierung mit einem schreibgeschützten Repository

In dieser Kurzanleitung werden die ersten Schritte mit Anthos Config Management für einen neuen Cluster beschrieben. Dazu verwenden Sie das Beispiel-Repository „foo-corp“, um einen Cluster mit einer Reihe von Konfigurationen zu booten. Für diese Kurzanleitung benötigen Sie keinen Schreibzugriff auf das Repository. Stellen Sie sich vor, ein Compliance-Team in Ihrer Organisation ist für das Erstellen der Konfigurationen verantwortlich und jeder Cluster muss mit dem Repository synchronisiert werden.

Nach dieser Kurzanleitung können Sie eine erweiterte Kurzanleitung zum Schreiben, Testen und Synchronisieren von Konfigurationen durcharbeiten.

Hinweis

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die Anthos API.

    Aktivieren Sie die API

  5. Installieren und initialisieren Sie das Cloud SDK.

Clustereinrichtung

GKE-Nutzer

  1. Cluster erstellen

  2. Richten Sie den kubectl-Befehl für die Authentifizierung beim Cluster ein und erstellen Sie mit den folgenden Befehlen ein RoleBinding, um sich selbst zu einem Administrator des Clusters zu machen. Geben Sie für [MY-CLUSTER] Ihren Clusternamen und für [USER-ACCOUNT] die E-Mail-Adresse Ihres Google Cloud-Kontos an. Je nachdem, wie Sie den gcloud-Befehl auf Ihrem lokalen System konfiguriert haben, müssen Sie möglicherweise die Felder --project und --zone hinzufügen.

    gcloud container clusters get-credentials [MY-CLUSTER]
    
    kubectl create clusterrolebinding cluster-admin-binding \
        --clusterrole cluster-admin --user [USER_ACCOUNT]
    

GKE On-Prem-Nutzer

Anthos Config Management – Vorbereitung

Führen Sie die folgenden Schritte aus, um die für diese Kurzanleitung erforderlichen Tools vorzubereiten:

  1. Wenn Sie Anthos Config Management zum ersten Mal verwenden, aktivieren Sie die Funktion über die Google Cloud Console oder das gcloud-Befehlszeilentool.

    Console

    So aktivieren Sie Anthos Config Management:

    1. Rufen Sie die Seite „Anthos-Features“ in der Google Cloud Console auf.

      Zu Anthos-Features

    2. Klicken Sie in der Zeile „Config Management“ auf Aktivieren.

    3. Klicken Sie im Bestätigungsfenster auf Config Management aktivieren.

    gcloud

    Führen Sie den folgenden Befehl aus, um Anthos Config Management zu aktivieren:

     gcloud alpha container hub config-management enable
    
  2. Installieren Sie den Befehl nomos auf Ihrem lokalen System.

  3. Wenn Sie mit kubectl arbeiten möchten, stellen Sie den Config Management Operator auf dem soeben erstellten Cluster ein.

  4. Registrieren Sie Ihren Cluster mit Connect in einer Anthos-Umgebung.

Cluster konfigurieren

Sie können Ihren Cluster mit der Google Cloud Console, dem gcloud-Befehlszeilentool oder kubectl konfigurieren.

Console

Führen Sie die folgenden Schritte aus, um Anthos Config Management in der Google Cloud Console zu konfigurieren:

  1. Öffnen Sie in der Google Cloud Console das Menü von Anthos Config Management.

    Zum Anthos Config Management-Menü

  2. Wählen Sie Ihren registrierten Cluster aus und klicken Sie auf Configure (Konfigurieren).

  3. Wählen Sie im Abschnitt Git-Repository-Authentifizierung für ACM die Option Keine aus, da das Repository in diesem Beispiel weltweit lesbar ist.

  4. Klicken Sie auf Weiter.

  5. Führen Sie im Bereich ACM-Einstellungen für Ihre Cluster die folgenden Schritte aus:

    1. Wählen Sie im Feld Version eine Version für Anthos Config Management aus.
    2. Klicken Sie das Kästchen Config Sync aktivieren an.
    3. Geben Sie im angezeigten Drop-down-Menü Folgendes ein:

      1. Fügen Sie im Feld URL https://github.com/GoogleCloudPlatform/csp-config-management/ hinzu.
      2. Fügen Sie im Feld Branch 1.0.0 hinzu.
      3. Lassen Sie das Feld Tag/Commit leer, da wir den Standardwert HEAD verwenden.
      4. Fügen Sie im Feld Richtlinienverzeichnis foo-corp hinzu.
      5. Übernehmen Sie die Standardwerte der restlichen Felder.
  6. Klicken Sie auf Fertig. Sie werden zum Anthos Config Management-Menü zurückgeleitet. Nach einigen Minuten sollte in der Statusspalte neben dem von Ihnen konfigurierten Cluster Synced angezeigt werden.

gcloud

Erstellen Sie eine Datei config-management.yaml und kopieren Sie die folgende YAML-Datei in diese Datei. Da das Repository für den Menschen lesbar ist, wird secretType auf none gesetzt. Eine Erläuterung der Felder finden Sie unter Konfiguration für das Git-Repository.

  1. Erstellen Sie eine Datei config-management.yaml und kopieren Sie die folgende YAML-Datei in diese Datei.

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
      namespace: config-management-system
    
    spec:
      git:
        syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
        syncBranch: 1.0.0
        secretType: none
        policyDir: "foo-corp"
    
  2. Legen Sie eine Variable fest:

    export CONFIG_YAML=PATH_TO_CONFIG_YAML

  3. Wenden Sie die Datei config-management.yaml an:

     gcloud alpha container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Dabei gilt:

    • CLUSTER_NAME: Fügen Sie den registrierten Cluster hinzu, auf den Sie diese Konfiguration anwenden möchten.
    • PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.

kubectl

Erstellen Sie eine Datei config-management.yaml und kopieren Sie die folgende YAML-Datei in diese Datei. Da das Repository für den Menschen lesbar ist, wird secretType auf none gesetzt. Eine Erläuterung der Felder finden Sie unter Konfiguration für das Git-Repository.

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
    syncBranch: 1.0.0
    secretType: none
    policyDir: "foo-corp"

Wenden Sie die Konfiguration auf Ihren Cluster an:

kubectl apply -f config-management.yaml

Wenn der Befehl erfolgreich ist, aktualisiert Kubernetes den Config Management Operator in Ihrem Cluster, um mit der Synchronisierung der Clusterkonfiguration aus dem Repository zu beginnen. Prüfen Sie, ob Anthos Config Management ausgeführt wird, indem Sie alle Pods auflisten, die im Namespace config-management-system ausgeführt werden:

kubectl get pods -n config-management-system

Ausgabe:

NAME                                   READY     STATUS    RESTARTS   AGE
git-importer-5f8bdb59bd-7nn5m          2/2       Running   0          2m
monitor-58c48fbc66-ggrmd               1/1       Running   0          2m
syncer-7bbfd7686b-dxb45                1/1       Running   0          2m

Cluster und Repository untersuchen

Das Repository foo-corp enthält Konfigurationen in den Verzeichnissen cluster/ und namespaces/. Diese Konfigurationen werden angewendet, sobald Anthos Config Management für den Lesezugriff auf das Repository konfiguriert ist.

Für alle von Anthos Config Management verwalteten Objekte wird das Label app.kubernetes.io/managed-by auf configmanagement.gke.io gesetzt.

Listen Sie die von Anthos Config Management verwalteten Namespaces auf:

kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io

Ausgabe:

NAME               STATUS   AGE
audit              Active   4m
shipping-dev       Active   4m
shipping-prod      Active   4m
shipping-staging   Active   4m

Prüfen Sie die Konfigurationen, durch die diese Namespaces erstellt wurden, z. B. namespaces/audit/namespace.yaml und namespaces/online/shipping-app-backend/shipping-dev/namespace.yaml.

Listen Sie die von Anthos Config Management verwalteten ClusterRoles auf:

kubectl get clusterroles -l app.kubernetes.io/managed-by=configmanagement.gke.io

Ausgabe:

NAME               AGE
namespace-reader   6m52s
pod-creator        6m52s

Prüfen Sie die Deklaration der ClusterRole-Konfigurationen:

  • cluster/namespace-reader-clusterrole.yaml
  • cluster/pod-creator-clusterrole.yaml

Sie können andere Objekte wie Roles und PodSecurityPolicies auf dieselbe Weise prüfen.

Versuchen, ein verwaltetes Objekt manuell zu ändern

Wenn Sie ein von Anthos Config Management verwaltetes Kubernetes-Objekt manuell ändern, wird die Konfiguration dieses Objekts automatisch an die Konfiguration des entsprechenden Objekts in Ihrem Repository angepasst. Sie können dies dadurch testen, dass Sie den Namespace shipping-dev löschen.

kubectl delete namespace shipping-dev

Wenn Sie die Prüfung sofort machen, fehlt der Namespace möglicherweise. Innerhalb weniger Sekunden ist er aber wieder vorhanden: Beispiel:

kubectl get ns shipping-dev

Ausgabe:

Error from server (NotFound): namespaces "shipping-dev" not found

Sekunden später:

kubectl get ns shipping-dev

Ausgabe:

NAME           STATUS   AGE
shipping-dev   Active   3s

Bereinigen

Wenn Sie der erweiterten Kurzanleitung folgen möchten, bereinigen Sie sie noch nicht. Diese Kurzanleitung ist eine Voraussetzung für dieses Thema, das auch Anleitungen zum Bereinigen enthält.

Wenn Sie die erweiterte Kurzanleitung nicht verwenden möchten, können Sie den Cluster bereinigen, den Sie zum Testen verwendet haben.

Nächste Schritte