28. Membuat konfigurasi zona untuk organisasi root

Estimasi waktu penyelesaian: 15 menit

Pemilik komponen yang dapat dioperasikan: RM

Profil keterampilan: engineer deployment

Resource OrganizationZonalConfig adalah sumber yang mengontrol konfigurasi per zona organisasi. Resource OrganizationZonalConfig root diperlukan untuk mengelola siklus proses cluster admin root untuk upgrade. Anda harus membuat resource dengan IaC.

Ikuti langkah-langkah berikut untuk membuat resource OrganizationZonalConfig root:

  1. Buat resource kustom OrganizationZonalConfig root:

    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)
    

    Ganti ROOT_ADMIN_KUBECONFIG dengan jalur ke file kubeconfig cluster admin root.

    Contoh file YAML resource kustom OrganizationZonalConfig yang dihasilkan mirip dengan contoh berikut:

    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. Salin resource kustom OrganizationZonalConfig ke repositori IaC.

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

    Ganti kode berikut:

    • YAML_FILE_PATH: jalur ke file resource kustom OrganizationZonalConfig.
    • IAC_REPO_PATH: jalur repositori IAC.
  3. Tambahkan OrganizationZonalConfig root sebagai resource organisasi root.

    1. Buka file global-root-kustomization.yaml:

      vim IAC_REPO_PATH/iac/infrastructure/global/orgs/root/global-root-kustomization.yaml
      
    2. Tambahkan OrganizationZonalConfig root sebagai resource di akhir daftar resource yang ada:

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      metadata:
        name: global-root-kustomization
      resources:
        - ... # existing resource items
        - FILE_NAME.yaml
      
  4. Siapkan dan lakukan commit pada file YAML OrganizationZonalConfig dan file kustomize:

    git add "IAC_REPO_PATH/iac/infrastructure/global"
    git commit
    
  5. Buat permintaan penggabungan:

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

    Ganti BRANCH_NAME dengan nama yang dipilih untuk cabang Anda.

  6. Tunggu peninjauan dan penggabungan kode.

  7. Gunakan konfigurasi Kubernetes administrator untuk cluster admin root dan ambil konfigurasi Kubernetes administrator untuk API global:

    kubectl get secrets -n global-kube-system kube-admin-test-kubeconfig -ojsonpath="{.data.value}" | base64 -d > HOME_DIRECTORY/root-global-kubeconfig
    
  8. Teruskan port untuk API global menggunakan konfigurasi Kubernetes administrator untuk cluster admin root:

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

    Langkah ini menjalankan perintah penerusan port di latar belakang. Jika proses berhenti secara tiba-tiba, Anda dapat memulainya kembali dengan menjalankan kembali perintah yang sama.

  9. Verifikasi bahwa resource OrganizationZonalConfig tersedia di lingkungan GDC Anda:

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

    Output harus menyertakan entri berikut, dengan kemungkinan perbedaan pada nama zona:

    NAMESPACE    NAME               AGE
    gpc-system   rootzone1config    38h