28. Crea configurazioni di zona per l'organizzazione principale

Tempo stimato per completare il corso: 15 minuti

Proprietario del componente azionabile: RM

Profilo delle competenze: ingegnere del deployment

La risorsa OrganizationZonalConfig è l'origine che controlla le configurazioni per zona di un'organizzazione. La risorsa OrganizationZonalConfig root è necessaria per gestire il ciclo di vita del cluster di amministrazione root per gli upgrade. Devi creare la risorsa con IaC.

Per creare la risorsa OrganizationZonalConfig principale:

  1. Genera la risorsa personalizzata OrganizationZonalConfig radice:

    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)
    

    Sostituisci ROOT_ADMIN_KUBECONFIG con il percorso del file kubeconfig del cluster di amministrazione principale.

    Un esempio del file YAML della risorsa personalizzata OrganizationZonalConfig generato è simile al seguente:

    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. Copia la risorsa personalizzata OrganizationZonalConfig nel repository IaC.

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

    Sostituisci quanto segue:

    • YAML_FILE_PATH: il percorso del file della risorsa personalizzata OrganizationZonalConfig.
    • IAC_REPO_PATH: il percorso del repository IAC.
  3. Aggiungi la radice OrganizationZonalConfig come risorsa dell'organizzazione principale.

    1. Apri il file global-root-kustomization.yaml:

      vim IAC_REPO_PATH/iac/infrastructure/global/orgs/root/global-root-kustomization.yaml
      
    2. Aggiungi la radice OrganizationZonalConfig come risorsa alla fine dell'elenco di risorse esistente:

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      metadata:
        name: global-root-kustomization
      resources:
        - ... # existing resource items
        - FILE_NAME.yaml
      
  4. Esegui lo staging e il commit del file YAML OrganizationZonalConfig e dei file kustomize:

    git add "IAC_REPO_PATH/iac/infrastructure/global"
    git commit
    
  5. Crea la richiesta di unione:

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

    Sostituisci BRANCH_NAME con il nome scelto per il ramo.

  6. Attendi la revisione del codice e l'unione.

  7. Utilizza la configurazione Kubernetes dell'amministratore per il cluster di amministrazione root e recupera la configurazione Kubernetes dell'amministratore per l'API globale:

    kubectl get secrets -n global-kube-system kube-admin-test-kubeconfig -ojsonpath="{.data.value}" | base64 -d > HOME_DIRECTORY/root-global-kubeconfig
    
  8. Inoltra la porta per l'API globale utilizzando la configurazione Kubernetes dell'amministratore per il cluster di amministrazione root:

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

    Questo passaggio esegue il comando di port forwarding in background. Se la procedura si interrompe in modo imprevisto, puoi riavviarla eseguendo di nuovo lo stesso comando.

  9. Verifica che la risorsa OrganizationZonalConfig sia disponibile nel tuo ambiente GDC:

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

    L'output deve includere la seguente voce, con possibili differenze nel nome della zona:

    NAMESPACE    NAME               AGE
    gpc-system   rootzone1config    38h