28. Zonale Konfigurationen für die Stammorganisation erstellen

Geschätzte Bearbeitungszeit: 15 Minuten

Eigentümer der bedienbaren Komponente: RM

Kompetenzprofil: Bereitstellungsingenieur

Die Ressource OrganizationZonalConfig ist die Quelle, mit der zonenspezifische Konfigurationen einer Organisation gesteuert werden. Die Root-OrganizationZonalConfig-Ressource ist erforderlich, um den Lebenszyklus des Root-Administratorclusters für Upgrades zu verwalten. Sie müssen die Ressource mit IaC erstellen.

So erstellen Sie die OrganizationZonalConfig-Ressource auf Stammebene:

  1. Erstellen Sie die benutzerdefinierte OrganizationZonalConfig-Ressource des Stamms:

    get_capacity(){ CAPACITY="$(kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get organizations -n gpc-system root -o json | jq -r ".spec.resourceCapacities.\"$1\" | to_entries | map(\"\(.key)=\(.value)\") | join(\",\")")"; echo $([[ -z ${CAPACITY} ]] || echo "$2=${CAPACITY} "); }
    VERSION=$(kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get organization -n gpc-system root -o json | jq .spec.version)
    ZONE=$(kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get controlplane cp -n mz-system -ojsonpath='{.spec.zone}')
    gdcloud organizations zonal-configs create --name=root --zones=${ZONE?} --version=${VERSION?} $(get_capacity adminServers --admin-server) $(get_capacity storage --storage-sku)
    

    Ersetzen Sie ROOT_ADMIN_KUBECONFIG durch den Pfad zur kubeconfig-Datei des Administratorclusters auf der Stammebene.

    Ein Beispiel für die generierte YAML-Datei für die benutzerdefinierte OrganizationZonalConfig-Ressource sieht so aus:

    apiVersion: resourcemanager.global.private.gdc.goog/v1alpha1
    kind: OrganizationZonalConfig
    metadata:
      namespace: gpc-system
      name: root-zone1-config
    spec:
      organizationRef:
        name: root
      zone: zone1
      version: "1.14.0-gdch.1594"
      capacities:
        adminServers:
          o1-highmem1-40-gdc-metal: 3
        storage:
          object-nearline: 10Ti
          object-standard: 10Ti
    
  2. Kopieren Sie die benutzerdefinierte Ressource OrganizationZonalConfig in das IaC-Repository.

    cp YAML_FILE_PATH IAC_REPO_PATH/iac/infrastructure/global/orgs/root/
    

    Ersetzen Sie Folgendes:

    • YAML_FILE_PATH: der Pfad zur Datei der benutzerdefinierten Ressource OrganizationZonalConfig.
    • IAC_REPO_PATH: der IAC-Repository-Pfad.
  3. Fügen Sie die Stamm-OrganizationZonalConfig als Ressource der Stammorganisation hinzu.

    1. Öffnen Sie die Datei global-root-kustomization.yaml.

      vim IAC_REPO_PATH/iac/infrastructure/global/orgs/root/global-root-kustomization.yaml
      
    2. Fügen Sie die Stammressource OrganizationZonalConfig am Ende der vorhandenen Ressourcenliste hinzu:

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      metadata:
        name: global-root-kustomization
      resources:
        - ... # existing resource items
        - FILE_NAME.yaml
      
  4. Stellen Sie die OrganizationZonalConfig-YAML-Datei und die kustomize-Dateien bereit und committen Sie sie:

    git add "IAC_REPO_PATH/iac/infrastructure/global"
    git commit
    
  5. Zusammenführungsanfrage erstellen:

    git checkout -b BRANCH_NAME
    git -c http.sslVerify=false push -o merge_request.create origin BRANCH_NAME
    

    Ersetzen Sie BRANCH_NAME durch den ausgewählten Namen für Ihren Branch.

  6. Warten Sie auf die Codeüberprüfung und das Zusammenführen.

  7. Verwenden Sie die Kubernetes-Administratorkonfiguration für den Administrator-Root-Cluster und rufen Sie die Kubernetes-Administratorkonfiguration für die globale API ab:

    kubectl get secrets -n global-kube-system kube-admin-test-kubeconfig -ojsonpath="{.data.value}" | base64 -d > HOME_DIRECTORY/root-global-kubeconfig
    
  8. Leiten Sie den Port für die globale API mit der Kubernetes-Konfiguration des Administrators für den Stammadministratorcluster weiter:

    kubectl port-forward -n global-kube-system service/kube-svc 6449:6449 &> /dev/null &
    

    In diesem Schritt wird der Befehl zur Portweiterleitung im Hintergrund ausgeführt. Wenn der Vorgang unerwartet beendet wird, können Sie ihn mit demselben Befehl neu starten.

  9. Prüfen Sie, ob die Ressource OrganizationZonalConfig in Ihrer GDC-Umgebung verfügbar ist:

    kubectl --kubeconfig HOME_DIRECTORY/root-global-kubeconfig get organizationzonalconfig -A
    

    Die Ausgabe muss den folgenden Eintrag enthalten, wobei der Zonennamen abweichen kann:

    NAMESPACE    NAME               AGE
    gpc-system   rootzone1config    38h