Erfahren Sie, wie Sie eine Config Controller-Instanz erstellen, in der Config Connector, Policy Controller und Config Sync vorinstalliert sind. Als Nächstes erfahren Sie, wie Sie die Instanz verwenden, indem Sie die folgenden Aufgaben ausführen:
- Mit Config Connector eine Google Cloud -Ressource erstellen und verwalten
- Erstellen Sie eine Policy Controller-Einschränkung, um eine Richtlinie zu erzwingen und Richtlinienverstöße zu erkennen, bevor sie bereitgestellt werden.
- Richten Sie GitOps ein, indem Sie Config Sync für die Synchronisierung aus einem Beispiel-Repository konfigurieren, das eine Google Cloud Ressource enthält.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch 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.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud -Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud -Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Wenn Sie für diese Anleitung ein vorhandenes Projekt verwenden, prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Wenn Sie ein neues Projekt erstellt haben, haben Sie bereits die erforderlichen Berechtigungen.
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
Aktivieren Sie die KRM-, GKE-, Resource Manager- und Service Usage APIs:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud services enable krmapihosting.googleapis.com
container.googleapis.com cloudresourcemanager.googleapis.com serviceusage.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud -Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud -Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Wenn Sie für diese Anleitung ein vorhandenes Projekt verwenden, prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Wenn Sie ein neues Projekt erstellt haben, haben Sie bereits die erforderlichen Berechtigungen.
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
Aktivieren Sie die KRM-, GKE-, Resource Manager- und Service Usage APIs:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud services enable krmapihosting.googleapis.com
container.googleapis.com cloudresourcemanager.googleapis.com serviceusage.googleapis.com
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten der in dieser Kurzanleitung verwendeten Beispielressourcen mit Config Controller benötigen:
-
Kubernetes Engine-Clusterbetrachter (
roles/container.clusterViewer) -
Compute-Netzwerkadministrator (
roles/compute.networkAdmin)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Config Controller-Instanz erstellen
Erstellen Sie im Terminal eine Autopilot Config Controller-Instanz:
gcloud anthos config controller create cc-example \ --location=us-central1 \ --full-managementDieser Vorgang kann bis zu 15 Minuten dauern.
Die Ausgabe sieht so aus:
Created instance [cc-example]. Fetching cluster endpoint and auth data. kubeconfig entry generated for krmapihost-cc-example.Prüfen Sie anhand der Liste der Config Controller-Instanzen, ob die Instanz erstellt wurde:
gcloud anthos config controller list --location=us-central1Die Ausgabe sieht so aus:
NAME LOCATION STATE cc-example us-central1 RUNNING
Config Controller die erforderliche Berechtigung erteilen
In diesem Abschnitt erteilen Sie Config Controller die Berechtigung zum Verwalten von Google Cloud-Ressourcen:
Legen Sie eine Umgebungsvariable für die E-Mail-Adresse Ihres Dienstkontos fest:
export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \ -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"Erstellen Sie die Richtlinienbindung:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:${SA_EMAIL}" \ --role "roles/owner" \ --project PROJECT_IDErsetzen Sie
PROJECT_IDdurch Ihre Projekt-ID.Die Ausgabe sieht in etwa so aus:
Updated IAM policy for project [PROJECT_ID]. auditConfigs: - auditLogConfigs: - logType: ADMIN_READ - logType: DATA_READ - logType: DATA_WRITE service: gkehub.googleapis.com # Remainder of output omitted
Config Controller-Instanz verwenden
In den folgenden Abschnitten werden die Möglichkeiten vorgestellt, wie Sie Ihre Config Controller-Instanz verwenden können.
Google Cloud -Ressource mit Config Connector erstellen
Mit Ihrer Config Controller-Instanz können Sie Config Connector nutzen, um viele Google Cloud Dienste und -Ressourcen mithilfe von Kubernetes-Tools und -APIs zu verwalten. In diesem Abschnitt verwenden Sie Config Controller, um eine PubSubTopic-Ressource zu erstellen.
Führen Sie folgende Schritte aus, um mit Config Connector ein Pub/Sub-Thema zu erstellen:
Verwenden Sie Config Connector, um die Pub/Sub API zu aktivieren:
Erstellen Sie mit Ihrem bevorzugten Texteditor eine Datei mit dem Namen
enable-pubsub.yamlund kopieren Sie die folgende YAML-Datei hinein:# enable-pubsub.yaml apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: pubsub.googleapis.com namespace: config-control spec: projectRef: external: projects/PROJECT_IDErsetzen Sie
PROJECT_IDdurch Ihre Projekt-ID.Wenden Sie das Manifest auf Ihren Cluster an, um die Pub/Sub API zu aktivieren:
kubectl apply -f enable-pubsub.yamlDas Aktivieren dieser API kann einige Minuten dauern.
Erstellen Sie mit Config Connector ein Pub/Sub-Thema:
Erstellen Sie eine Datei mit dem Namen
pubsub-topic.yamlund kopieren Sie die folgende YAML-Datei hinein:# pubsub-topic.yaml apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: annotations: cnrm.cloud.google.com/project-id: PROJECT_ID labels: label-one: "value-one" name: example-topic namespace: config-controlErstellen Sie das Pub/Sub-Thema:
kubectl apply -f pubsub-topic.yaml
Prüfen Sie in der Liste der Pub/Sub-Themen, ob Config Controller Ihre Ressource in Google Clouderstellt hat:
gcloud pubsub topics listDie Ausgabe sieht etwa so aus:
--- name: projects/PROJECT_ID/topics/start-instance-event --- labels: label-one: value-one managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/example-topic
Richtlinie mit Policy Controller erzwingen
Mit Ihrer Config Controller-Instanz können Sie Policy Controller- und Policy Controller-Einschränkungen verwenden. Im Rahmen der Installation von Policy Controller installiert Config Controller automatisch die Einschränkungsvorlagenbibliothek. Sie können die Vorlagen in dieser Bibliothek verwenden, um verschiedene gängige Sicherheits- und Compliancekontrollen für Ihre Config Controller-Instanzen zu erzwingen.
In diesem Abschnitt erstellen Sie eine Einschränkung mit der Einschränkungsvorlage GCPStorageLocationConstraintV1. Mit dieser Vorlage können Sie den Standort einschränken, an dem Sie Cloud Storage-Buckets erstellen können. Die Einschränkung, die Sie mit dieser Vorlage erstellen, beschränkt den Standort auf us-central1. Mit dieser Einschränkung können Sie dafür sorgen, dass Ihre Buckets in einer Region erstellt werden, die den besten Preis und die beste Leistung bietet.
So erstellen Sie die Einschränkung:
Erstellen Sie eine Datei mit dem Namen
bucket-constraint.yamlund kopieren Sie die folgende YAML-Datei hinein:# bucket-constraint.yaml apiVersion: constraints.gatekeeper.sh/v1beta1 kind: GCPStorageLocationConstraintV1 metadata: name: storage-only-in-us-central1 spec: match: kinds: - apiGroups: - storage.cnrm.cloud.google.com kinds: - StorageBucket parameters: locations: - us-central1Einschränkung erstellen
kubectl apply -f bucket-constraint.yamlDie Ausgabe sieht so aus:
gcpstoragelocationconstraintv1.constraints.gatekeeper.sh/storage-only-in-us-central1 created`Demonstrieren Sie, dass die Einschränkung funktioniert, indem Sie versuchen, mit Config Connector eine StorageBucket-Ressource in
asia-southeast1zu erstellen:Erstellen Sie eine Datei mit dem Namen
asia-storage-bucket.yamlund kopieren Sie die folgende YAML-Datei hinein:# asia-storage-bucket.yaml apiVersion: storage.cnrm.cloud.google.com/v1beta1 kind: StorageBucket metadata: name: bucket-in-disallowed-location namespace: config-control spec: location: asia-southeast1Versuchen Sie, den Cloud Storage-Bucket zu erstellen:
kubectl apply -f asia-storage-bucket.yamlDie Ausgabe sieht so aus:
Error from server (Forbidden): error when creating "STDIN": admission webhook "validation.gatekeeper.sh" denied the request: [storage-only-in-us-central1] Cloud Storage bucket <bucket-in-disallowed-location> uses a disallowed location <asia-southeast1>, allowed locations are ["us-central1"]
GitOps mit Config Sync einrichten
Config Sync ist ein GitOps-Dienst, mit dem Sie Ihre Config Controller-Instanz mit Konfigurationen, Richtlinien undGoogle Cloud -Ressourcen synchronisieren können, die in einem Git-Repository, einem OCI-Image oder einem Helm-Repository gespeichert sind. Da Config Sync den Status von Config Controller kontinuierlich mit den Konfigurationen in Ihrer Quelle abgleicht, können Sie dafür sorgen, dass Ihre Instanzen eine konsistente Konfiguration haben.
In diesem Abschnitt synchronisieren Sie Ihre Config Controller-Instanz mit einem öffentlichen GitHub-Repository. Dieses Repository enthält eine weitere PubSubTopic-Ressource. Durch Synchronisierung Ihrer Instanz aus diesem Repository wird die Ressource automatisch erstellt und auf Ihre Instanz angewendet. Wenn Sie einen GitOps-Workflow verwenden möchten, können Sie Ihre Ressourcen mit Config Sync erstellen, anstatt die Ressource direkt anzuwenden.
Richten Sie für die Synchronisierung von GitHub Cloud NAT ein. Das ist erforderlich, da Ihre Config Controller-Instanz von einem privaten GKE-Cluster unterstützt wird und private Clusterknoten keinen ausgehenden Internetzugang haben:
Erstellen Sie einen Cloud NAT-Router. Sie benötigen diesen Router, um Ihr NAT-Gateway einzurichten.
gcloud compute routers create cc-nat-router \ --network default \ --region us-central1Die Ausgabe sieht in etwa so aus:
Creating router [cc-nat-router]...done. NAME REGION NETWORK cc-nat-router us-central1 defaultRichten Sie auf dem Router, den Sie im vorherigen Schritt erstellt haben, ein NAT-Gateway ein:
gcloud compute routers nats create cc-nat-config \ --router-region us-central1 \ --router cc-nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ipsDie Ausgabe sieht so aus:
Creating NAT [cc-nat-config] in router [cc-nat-router]...done.
Um Ihre Config Controller-Instanz für die Synchronisierung aus einem Beispiel-Repository zu konfigurieren, erstellen Sie eine Datei mit dem Namen
cc-rootsync.yamlund kopieren Sie in diese das folgende YAML-Manifest:# cc-rootsync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples branch: main dir: config-controller-quickstart auth: noneWenden Sie die Konfiguration an:
kubectl apply -f cc-rootsync.yamlNachdem Ihre Instanz aus dem Repository synchronisiert wurde, erstellt Config Sync das Pub/Sub-Thema und wendet es auf Ihre Config Controller-Instanz an.
Prüfen Sie, ob Config Sync das Git-Repository mit Ihrer Config Controller-Instanz synchronisiert:
nomos status --contexts gke_PROJECT_ID_us-central1_krmapihost-cc-exampleDie Ausgabe sieht in etwa so aus:
*gke_PROJECT_ID_us-central1_krmapihost-cc-example -------------------- <root>:root-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-controller-quickstart@main SYNCED @ 2023-01-10 18:31:02 +0000 UTC 715b4295d3eac07b057cce2543275c1ee104cad8 Managed resources: NAMESPACE NAME STATUS SOURCEHASH config-control pubsubtopic.pubsub.cnrm.cloud.google.com/pubsub-topic-sample-sync Current 715b429 config-control service.serviceusage.cnrm.cloud.google.com/pubsub.googleapis.com Current 715b429Wenn diese Ausgabe nicht angezeigt wird, warten Sie einige Minuten und versuchen Sie es dann noch einmal.
Prüfen Sie, ob Config Controller Ihre Ressource erstellt hat:
gcloud pubsub topics listDie Ausgabe sieht in etwa so aus:
name: projects/PROJECT_ID/topics/start-instance-event --- labels: managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/sample-topic --- labels: managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/pubsub-topic-sample-sync --- labels: label-one: value-one managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/example-topicIn dieser Ausgabe sehen Sie den Pub/Sub, den Sie im Abschnitt Config Controller-Instanz erstellen erstellt haben, und den Sie durch Synchronisieren Ihrer Instanz mit einem GitHub-Repository erstellt haben.
Bereinigen
Damit Ihrem Google Cloud -Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, können Sie entweder das Projekt löschen, das die Ressourcen enthält, oder das Projekt beibehalten und die einzelnen Ressourcen löschen.
Projekt löschen
Google Cloud -Projekt löschen:
gcloud projects delete PROJECT_ID
Einzelne Ressourcen löschen
Löschen Sie die Config Connector-
PubSubTopic-Ressource:kubectl delete -f pubsub-topic.yamlLöschen Sie die Policy Controller-Einschränkung:
kubectl delete -f bucket-constraint.yamlLöschen Sie den NAT-Router:
gcloud compute routers delete cc-nat-router \ --project=PROJECT_ID \ --region=us-central1Drücken Sie
y, wenn Sie dazu aufgefordert werden.Löschen Sie die von Config Sync erstellte Pub/Sub-Ressource:
kubectl delete PubSubTopic pubsub-topic-sample-sync -n config-controlLöschen Sie die RootSync-Ressource:
kubectl delete rootsync root-sync -n config-management-systemLöschen Sie mit Ihrem bevorzugten Texteditor alle von Ihnen erstellten YAML-Dateien:
enable-pubsub.yamlpubsub-topic.yamlbucket-constraint.yamlasia-storage-bucket.yamlcc-rootsync.yaml
Löschen Sie die Config Controller-Instanz:
gcloud anthos config controller delete --location=us-central1 cc-exampleDrücken Sie
y, wenn Sie dazu aufgefordert werden.
Nächste Schritte
- Informationen zum Einrichten von Config Controller.
- Weitere Informationen zu Config Controller