Kurzanleitung: Konfigurationen aus einem Repository synchronisieren

In dieser Anleitung erstellen Sie einen Cluster der Google Kubernetes Engine (GKE) Enterprise Edition und verwenden Config Sync, um Konfigurationen im Multi-Repo-Beispiel-Repository zu synchronisieren.

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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Make sure that you have the following role or roles on the project: GKE Hub Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Zu IAM
    2. Wählen Sie das Projekt aus.
    3. Klicken Sie auf Zugriff erlauben.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse eines Google-Kontos.

    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.

    Führen Sie die folgenden Schritte aus, um einen Cluster zu erstellen:

    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 Abschnitt Clustergrundlagen cs-cluster in das Feld Name ein und übernehmen Sie für alle anderen Felder die empfohlenen Standardwerte.

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

    Cluster konfigurieren

    Nachdem Sie einen Cluster erstellt haben, können Sie Config Sync für die Synchronisierung mit den Konfigurationen im Verzeichnis config-sync-quickstart des Beispiel-Repositorys konfigurieren.

    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 Abschnitt Features die Seite Konfiguration auf.

      Zu „Config“

    3. Klicken Sie auf Config Sync installieren.

    4. Wählen Sie Automatische Upgrades aus, damit Config Sync die Versionen automatisch 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 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 die Paketbereitstellung auswählen die Option cs-cluster aus und klicken Sie dann auf Weiter.

    9. Lassen Sie Paket gehostet auf Git aktiviert und klicken Sie dann 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 in allen anderen Feldern die Standardwerte bei.

    14. Klicken Sie auf Paket bereitstellen.

      Nach einigen Minuten sollte in der Spalte Synchronisierungsstatus für cs-cluster der Wert 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 untersuchen Sie mit Cloud Shell das Repository, mit dem cs-cluster synchronisiert wird, und bestätigen, dass die Konfigurationen im Repository bereitgestellt werden.

    Cloud Shell öffnen

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Um die Befehle in den folgenden Abschnitten verwenden zu können, konfigurieren Sie den Zugriff auf die kubectl-Befehlszeile:

      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 ClusterRole-, CustomResourceDefinition-, Rolebinding-, Namespace- und RepoSync-Konfigurationen. Es enthält auch Konfigurationen für den Prometheus-Operator zum Monitoring. Diese Konfigurationen werden angewendet, sobald Config Sync für den Lesezugriff auf das Repository konfiguriert wurde.

    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 zum Ordner /config-sync-quickstart/multirepo/ des Repositorys in GitHub gehen, um sich mit den Konfigurationen vertraut zu machen, die die Erstellung dieser Namespaces verursacht haben.

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

    Synchronisierungsstatus prüfen

    Wenn Sie Config Sync verwenden, 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 erfolgreich 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