Kurzanleitung: Konfigurationen aus einem Repository synchronisieren

In dieser Anleitung erstellen Sie einen Cluster der Google Kubernetes Engine (GKE) Enterprise-Version und verwenden Config Sync, um eine Synchronisierung mit Konfigurationen im Beispiel-Repository mit mehreren Repositories durchzuführen.

Stellen Sie sich vor, Ihr Compliance-Team ist dafür verantwortlich, dass alle Mitarbeiter Ihrer Organisation die internen Regeln befolgen. Zur Durchsetzung dieser Regeln hat das Compliance-Team Konfigurationen erstellt, die dem Beispiel-Repository hinzugefügt wurden. Jeder Cluster in Ihrer Organisation muss mit dem Repository synchronisiert werden. Sie sind dafür verantwortlich, Cluster zu erstellen und zu synchronisieren.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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 Google Cloud-Projekt muss aktiviert sein.

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

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Prüfen Sie, ob Sie die folgenden Rollen für das Projekt haben: GKE Hub Admin

    Auf Rollen prüfen

    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Suchen Sie in der Spalte Hauptkonto die Zeile mit Ihrer E-Mail-Adresse.

      Ist Ihre E-Mail-Adresse nicht in dieser Spalte enthalten, haben Sie keine Rollen.

    4. Prüfen Sie in der Spalte Rolle der Zeile mit Ihrer E-Mail-Adresse, ob die Liste der Rollen die erforderlichen Rollen enthält.

    Rollen zuweisen

    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Klicken Sie auf Zugriff erlauben.
    4. Geben Sie in das Feld Neue Hauptkonten Ihre E-Mail-Adresse ein.
    5. Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
    6. Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.
    7. Klicken Sie auf Speichern.

Cluster erstellen

In diesem Abschnitt erstellen Sie einen Cluster, den Sie in dieser Anleitung verwenden können. In der Praxis würden Sie wahrscheinlich mehrere Cluster verwalten. Zur Vereinfachung dieser Anleitung erstellen und verwalten Sie jedoch nur einen Cluster.

So erstellen Sie einen Cluster:

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Wenn Sie GKE zum ersten Mal verwenden, klicken Sie auf Aktivieren, um die Kubernetes Engine API zu aktivieren.

  3. Klicken Sie auf Erstellen.

  4. Wählen Sie im Abschnitt Autopilot die Option Konfigurieren aus.

  5. Geben Sie im Bereich Clustergrundlagen im Feld Name cs-cluster ein und übernehmen Sie für alle anderen Felder die empfohlenen Standardeinstellungen.

  6. Klicken Sie auf Erstellen. Sie werden zur Seite Kubernetes-Cluster weitergeleitet. Es dauert einige Minuten, bis der Cluster erstellt ist. Wenn Sie in der Spalte Status neben dem Cluster ein grünes Häkchen sehen, ist er bereit.

Cluster konfigurieren

Nachdem Sie einen Cluster erstellt haben, können Sie Config Sync so konfigurieren, dass er mit den Konfigurationen im config-sync-quickstart-Verzeichnis des Beispiel-Repositorys synchronisiert wird.

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

  1. Aktivieren Sie in der Google Cloud Console die GKE Hub API.

    Zur GKE Hub API

  2. Rufen Sie in der Google Cloud Console im Bereich Features die Seite Konfiguration auf.

    Zur Konfiguration

  3. Klicken Sie auf Config Sync installieren.

  4. Wählen Sie Automatische Upgrades aus, damit Config Sync automatisch Versionen aktualisiert.

  5. Wählen Sie unter Installationsoptionen die Option Config Sync auf einzelnen Clustern installieren aus.

  6. Wählen Sie in der Tabelle Verfügbare Cluster die Option cs-cluster aus und klicken Sie auf Config Sync installieren. Auf dem Tab Einstellungen sollte nach einigen Minuten der Status für cs-cluster als Aktiviert angezeigt werden.

  7. Klicken Sie im Config Sync-Dashboard auf Paket bereitstellen.

  8. Wählen Sie in der Tabelle Cluster für Paketbereitstellung auswählen die Option cs-cluster aus und klicken Sie dann auf Weiter.

  9. Lassen Sie Paket auf Git gehostet aktiviert und klicken Sie auf Weiter.

  10. Geben Sie im Feld Paketname sample-repository ein.

  11. Geben Sie im Feld Repository-URL den Wert https://github.com/GoogleCloudPlatform/anthos-config-management-samples ein.

  12. Geben Sie im Feld Pfad config-sync-quickstart/multirepo/root ein.

  13. Behalten Sie für alle anderen Felder die Standardwerte bei.

  14. Klicken Sie auf Paket bereitstellen.

    Nach einigen Minuten sollte in der Spalte Synchronisierungsstatus für cs-cluster der Eintrag Synchronisiert angezeigt werden.

Nachdem Config Sync mit einem Repository synchronisiert wurde, gleicht es den Status Ihrer Cluster kontinuierlich mit den Konfigurationen im Repository ab.

Config Sync-Installation ansehen

In den folgenden Abschnitten verwenden Sie Cloud Shell, um das Repository zu untersuchen, mit dem cs-cluster synchronisiert wird, und prüfen, ob die Konfigurationen im Repository bereitgestellt werden.

Cloud Shell öffnen

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Damit Sie die Befehle in den folgenden Abschnitten verwenden können, müssen Sie den kubectl-Befehlszeilenzugriff konfigurieren:

    gcloud container clusters get-credentials cs-cluster \
        --zone ZONE \
        --project PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • ZONE: Zone, in der Sie den Cluster erstellt haben
    • PROJECT_ID: Ihre Projekt-ID.

    Die Ausgabe sieht so aus:

    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for cs-cluster.
    

    Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf Autorisieren.

Cluster und Repository untersuchen

Das Verzeichnis config-sync-quickstart enthält Konfigurationen wie ClusterRole, CustomResourceDefinition, Rolebinding, Namespace und RepoSync. Sie enthält auch Konfigurationen für den Prometheus Operator für das Monitoring. Diese Konfigurationen werden angewendet, sobald Config Sync für das Lesen aus dem Repository konfiguriert ist.

Für alle von Config Sync verwalteten Objekte ist das Label app.kubernetes.io/managed-by auf configmanagement.gke.io gesetzt. Mit diesem Label können Sie verwaltete Objekte ansehen.

Führen Sie den folgenden Befehl aus, um von Config Sync verwaltete Namespaces aufzulisten:

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

Die Ausgabe sieht in etwa so aus:

NAME         STATUS   AGE
gamestore    Active   58s
monitoring   Active   58s

Sie können in GitHub zum Ordner /config-sync-quickstart/multirepo/ des Repositorys wechseln, um die Konfigurationen zu erkunden, die zur Erstellung dieser Namespaces geführt haben.

Sie können andere Objekte wie ClusterRole, Reposyncs, CRDs und Rolebindings auf dieselbe Weise prüfen.

Synchronisierungsstatus prüfen

Wenn Sie Config Sync nutzen, können Sie das nomos-Befehlszeilentool verwenden. Dieses Tool bietet zusätzliche Funktionen für Config Sync.

In diesem Abschnitt prüfen Sie mit dem Befehl nomos status, ob Config Sync alle Konfigurationen mit Ihrem Cluster synchronisiert hat:

nomos status

Die Ausgabe sieht in etwa so aus:

*gke_PROJECT_ID_ZONE_cs-cluster
  --------------------
  <root>:root-sync                         https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
  SYNCED @ 2023-02-03 16:58:42 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE    NAME                                                                                      STATUS    SOURCEHASH
                  clusterrole.rbac.authorization.k8s.io/namespace-reader                                    Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-acm                                      Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-operator                                 Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/webstore-admin                                      Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm                               Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator                          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com   Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com         Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/anvils.acme.com                             Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com           Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com                Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com                   Current   1fbab5c
                  namespace/gamestore                                                                       Current   1fbab5c
                  namespace/monitoring                                                                      Current   1fbab5c
     gamestore    reposync.configsync.gke.io/repo-sync                                                      Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-admin                                     Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin                            Current   1fbab5c
     monitoring   deployment.apps/prometheus-operator                                                       Current   1fbab5c
     monitoring   prometheus.monitoring.coreos.com/acm                                                      Current   1fbab5c
     monitoring   service/prometheus-acm                                                                    Current   1fbab5c
     monitoring   service/prometheus-operator                                                               Current   1fbab5c
     monitoring   serviceaccount/prometheus-acm                                                             Current   1fbab5c
     monitoring   serviceaccount/prometheus-operator                                                        Current   1fbab5c
     monitoring   servicemonitor.monitoring.coreos.com/acm-service                                          Current   1fbab5c
  --------------------
  gamestore:repo-sync                      https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
  SYNCED @ 2023-02-03 16:58:51 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE   NAME                                 STATUS    SOURCEHASH
     gamestore   configmap/store-inventory            Current   1fbab5c
     gamestore   webstore.marketplace.com/gameplace   Current   1fbab5c

In dieser Ausgabe sehen Sie, dass cs-cluster erfolgreich aus zwei Repositories synchronisiert wird. Da alle Ressourcen den Status Current haben, entspricht auch der Status der Ressource dem gewünschten Status.

Bereinigen

  1. Rufen Sie in der Google Cloud Console das GKE-Menü auf.

    Zu GKE

  2. Klicken Sie neben cs-cluster auf Aktionen und dann auf Löschen.

  3. Wenn Sie zur Bestätigung des Vorgangs aufgefordert werden, klicken Sie noch einmal auf Löschen.

Nächste Schritte