Config Sync mit kubectl-Befehlen konfigurieren

Auf dieser Seite wird erläutert, wie Sie Config Sync mit kubectl-Befehlen konfigurieren, nachdem Sie Config Sync mit der Google Cloud Console oder der Google Cloud CLI installiert haben.

Sie können zwar viele Konfigurationsänderungen mit der Console oder der Befehlszeile vornehmen, aber Sie müssen kubectl-Befehle verwenden, um gewisse Config Sync-Standardeinstellungen zu überschreiben, um die SSL-Zertifikatsüberprüfung zu steuern und eine Zertifizierungsstelle zu verwenden.

RootSync-Konfigurationsdatei erstellen und bearbeiten

Zum Konfigurieren von Config Sync mit kubectl-Befehlen bearbeiten Sie ein RootSync-Objekt durch Erstellen einer YAML-Datei.

Wenn Sie Config Sync mit der Google Cloud Console oder der Google Cloud CLI installieren, erstellt Config Sync automatisch ein RootSync-Objekt namens root-sync. Dieses Objekt enthält die neuesten Konfigurationsinformationen für Config Sync. Wenn Sie eine Änderung in der Google Cloud Console oder der Google Cloud CLI vornehmen, wird root-sync aktualisiert.

Informationen zu den Feldern, die Sie mit kubectl bearbeiten können

Sie können erweiterte Änderungen an root-sync mit kubectl-Befehlen für die Felder vornehmen, die in der Google Cloud Console oder der Google Cloud CLI nicht unterstützt werden. Wenn Sie RootSync- oder RepoSync-Objekte direkt mit kubectl-Befehlen erstellen und aktualisieren möchten, finden Sie weitere Informationen unter RootSync- und RepoSync-Felder.

Bevor Sie Änderungen an der YAML-Datei vornehmen, die Sie im folgenden Abschnitt erstellen, machen Sie sich mit der folgenden Tabelle vertraut. In dieser Tabelle sind die Felder aufgeführt, die Sie bearbeiten und hinzufügen können. Wenn Sie Felder bearbeiten, die in dieser Tabelle nicht aufgeführt sind, setzt Config Sync Änderungen automatisch auf die Werte zurück, die Sie bei der letzten Konfiguration von Config Sync in der Google Cloud Console oder der Google Cloud CLI festgelegt haben.

Schlüssel Beschreibung
spec.git.noSSLVerify noSSLVerify gibt an, ob die SSL-Zertifikatsüberprüfung aktiviert oder deaktiviert werden soll. Standardeinstellung: false
Wenn noSSLVerify auf true gesetzt ist, wird Git angewiesen, die SSL-Zertifikatsprüfung zu überspringen.
spec.git.caCertSecretRef.name Der Name des Secrets, das das Zertifikat der Zertifizierungsstelle enthält. Ist dieses Feld angegeben, muss der Git-Server ein von dieser Zertifizierungsstelle ausgestelltes Zertifikat verwenden. Das CA-Zertifikat muss im Secret unter einem Schlüssel namens "cert" gespeichert sein.
spec.override.resources Die Liste der Überschreibungen für Containerressourcen und -limits. Optional.
Jedes Element in der Liste enthält drei Felder:
  • containerName: Dieses Feld kann entweder git-sync, oci-sync, hydration-controller oder reconciler sein.
  • cpuRequest (optional)
  • cpuLimit (optional)
  • memoryRequest (optional)
  • memoryLimit (optional)

Wenn kein Überschreibungswert für eine Ressourcenanfrage oder -grenze angegeben ist, wird der Standardressourcenwert für die Anfrage oder das Limit verwendet.
spec.override.gitSyncDepth Mit gitSyncDepth können Sie die Anzahl der abzurufenden Git-Commits überschreiben.
Darf nicht kleiner als 0 sein.
Config Sync führt einen vollständigen Klon aus, wenn das Feld 0 ist, und einen "oberflächlichen" Klon, wenn das Feld größer als 0 ist.
Ist dieses Feld nicht angegeben, wird es von Config Sync automatisch konfiguriert.
spec.override.statusMode Mit statusMode können Sie die Erfassung des Status auf Ressourcenebene aktivieren oder deaktivieren.
Der Standardwert ist enabled.
Legen Sie für dieses Feld disabled fest, wenn Sie die Erfassung des Status auf Ressourcenebene deaktivieren möchten.
spec.override.reconcileTimeout Mit reconcileTimeout können Sie den Schwellenwert für die Zeit bis zum Abgleich der Ressourcen in einer Apply-Gruppen überschreiben, nach der ein Vorgang abgebrochen wird. Alle Ressourcen in einem Commit können sich je nach Abhängigkeiten in mehreren Apply-Gruppen befinden.
Das Standardzeitlimit ist 5m.
Verwenden Sie einen String, um diesen Feldwert anzugeben, z. B. 30s, 5m.
spec.override.enableShellInRendering enableShellInRendering gibt an, ob der Shell-Zugriff im Renderingprozess aktiviert oder deaktiviert werden soll. Kustomize-Remotebasisdaten erfordern Shell-Zugriff. Wenn Sie dieses Feld auf true setzen, wird der Shell-Zugriff im Renderingprozess aktiviert und das Abrufen von Remote-Basisdaten aus öffentlichen Repositories wird unterstützt.
Der Standardwert ist false.

Erstellen der Datei

Führen Sie die folgenden Schritte aus, um eine Konfigurationsdatei für root-sync zu erstellen und zu bearbeiten:

  1. Damit Sie die Konfigurationsinformationen für den richtigen Cluster abrufen, konfigurieren Sie den Zugriff auf die kubectl-Befehlszeile:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

    Ersetzen Sie dabei Folgendes:

    • CLUSTER_NAME: Name des Clusters mit der Config Sync-Konfiguration, die Sie ändern möchten
    • ZONE: Zone, in der Sie den Cluster erstellt haben
    • PROJECT_ID: Ihre Projekt-ID.
  2. Kopieren Sie die Konfigurationsinformationen aus dem von Config Sync erstellten RootSync-Objekt in eine YAML-Datei:

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    Ersetzen Sie FILE_NAME mit einem Namen für die Konfigurationsdatei.

  3. Öffnen Sie die von Ihnen erstellte YAML-Datei und nehmen Sie die erforderlichen Konfigurationsänderungen vor. Wenn Sie beispielsweise das Speicherlimit des Containers git-sync überschreiben möchten, fügen Sie die folgenden Felder in Fettschrift hinzu:

    apiVersion: v1
    items:
    - apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
    annotations:
      configmanagement.gke.io/managed-by-hub: "true"
      configmanagement.gke.io/update-time: "1644945169"
    creationTimestamp: "2022-02-15T17:12:52Z"
    generation: 1
    name: root-sync
    namespace: config-management-system
    resourceVersion: "211980457"
    uid: aa30a94b-2825-4590-ad30-5af848403502
    spec:
    git:
      auth: none
      branch: main
      dir: /quickstart/config-sync
      period: 15s
      repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      revision: HEAD
      secretRef: {}
    override:
      resources:
      - containerName: "git-sync"
        memoryLimit: "400Mi"
    sourceFormat: unstructured
    # Remainder of RootSync omitted
    
  4. Wenden Sie die Änderungen auf die YAML-Datei an:

    kubectl apply -f FILE_NAME.yaml
    
  5. Rufen Sie das RootSync-Objekt auf, um zu prüfen, ob Config Sync Ihre Änderungen angewendet hat:

    kubectl describe rootsync root-sync -n config-management-system
    
  6. Prüfen Sie mit dem Befehl nomos status, ob Ihre Änderungen Fehler eingeführt haben:

    nomos status
    

Zertifizierungsstelle konfigurieren

Bei Servern, die mit Zertifikaten einer Zertifizierungsstelle (CA, Certificate Authority) konfiguriert sind, die noch nicht als vertrauenswürdig eingestuft wurde, kann Config Sync so konfiguriert werden, dass HTTPS-Verbindungen zum Server mit einem Zertifikat der Zertifizierungsstelle überprüft werden. Dies wird für Git-, Helm- und OCI-Server unterstützt. Das CA-Zertifikat muss vollständige SSL-Zertifikate (Stamm/Intermediate/Leaf) enthalten. Wenn Ihr Server bereits eine vertrauenswürdige Zertifizierungsstelle verwendet oder Sie keine Verbindung über HTTPS herstellen, können Sie diesen Schritt überspringen und caCertSecretRef festlegen weglassen.

RootSync

  1. Rufen Sie das CA-Zertifikat ab, mit dem das Zertifikat für Ihren Git-Server ausgestellt wurde, und speichern Sie es in einer Datei.

  2. Bei RootSync-Objekten muss das Secret im Namespace config-management-system erstellt werden. Beispiele:

    kubectl create secret generic ROOT_CA_CERT_SECRET_NAME 
    --namespace=config-management-system
    --from-file=cert=/path/to/CA_CERT_FILE

  3. Legen Sie beim Konfigurieren des RootSync-Objekts den Wert des caCertSecretRef.name-Felds im RootSync-Objekt auf ROOT_CA_CERT_SECRET_NAME fest.

RepoSync

  1. Rufen Sie das CA-Zertifikat ab, mit dem das Zertifikat für Ihren Git-Server ausgestellt wurde, und speichern Sie es in einer Datei.

  2. Bei RepoSync-Objekten muss das Secret im selben Namespace wie das RepoSync-Objekt erstellt werden. Beispiele:

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. Wenn Sie RepoSync konfigurieren, setzen Sie den Wert des caCertSecretRef.name-Felds im RepoSync-Objekt auf NAMESPACE_CA_CERT_SECRET_NAME.

RootSync-Objekt entfernen

Führen Sie den folgenden Befehl aus, um root-sync zu löschen:

kubectl delete -f FILE_NAME

Ersetzen Sie dabei FILE_NAME durch den Namen Ihrer RootSync-Konfigurationsdatei. Beispiel: root-sync.yaml.

Durch das Löschen eines RootSync- oder RepoSync-Objekts werden die Annotationen und Labels von Config Sync nicht bereinigt. Wenn Sie verwaltete Ressourcen bereinigen möchten, führen Sie eine Synchronisierung aus einem leeren Git-Verzeichnis aus.

Nächste Schritte