28. 為根機構建立區域設定

預計完成時間:15 分鐘

可操作元件擁有者:RM

技能設定檔:部署工程師

OrganizationZonalConfig 資源是控制機構各區域設定的來源。 您必須擁有根 OrganizationZonalConfig 資源,才能管理根管理員叢集的生命週期以進行升級。您必須使用 IaC 建立資源。

請按照下列步驟建立根 OrganizationZonalConfig 資源:

  1. 產生根層級 OrganizationZonalConfig 自訂資源:

    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)
    

    ROOT_ADMIN_KUBECONFIG 替換為根管理員叢集 kubeconfig 檔案的路徑。

    產生的 OrganizationZonalConfig 自訂資源 YAML 檔案範例如下:

    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. OrganizationZonalConfig 自訂資源複製到 IaC 存放區。

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

    更改下列內容:

    • YAML_FILE_PATHOrganizationZonalConfig 自訂資源檔案的路徑。
    • IAC_REPO_PATH:IAC 存放區路徑。
  3. 將根 OrganizationZonalConfig 新增為根機構單位的資源。

    1. 開啟 global-root-kustomization.yaml 檔案:

      vim IAC_REPO_PATH/iac/infrastructure/global/orgs/root/global-root-kustomization.yaml
      
    2. 在現有資源清單結尾新增根 OrganizationZonalConfig 做為資源:

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      metadata:
        name: global-root-kustomization
      resources:
        - ... # existing resource items
        - FILE_NAME.yaml
      
  4. 暫存並提交 OrganizationZonalConfig YAML 檔案和 kustomize 檔案:

    git add "IAC_REPO_PATH/iac/infrastructure/global"
    git commit
    
  5. 建立合併要求:

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

    BRANCH_NAME 替換成您選擇的分支名稱。

  6. 等待程式碼審查和合併。

  7. 使用根管理員叢的管理員 Kubernetes 設定,並擷取全域 API 的管理員 Kubernetes 設定:

    kubectl get secrets -n global-kube-system kube-admin-test-kubeconfig -ojsonpath="{.data.value}" | base64 -d > HOME_DIRECTORY/root-global-kubeconfig
    
  8. 使用根管理員叢集的管理員 Kubernetes 設定,轉送全域 API 的通訊埠:

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

    這個步驟會在背景執行連接埠轉送指令。如果程序意外停止,您可以重新執行相同指令來重新啟動程序。

  9. 確認 OrganizationZonalConfig 資源可在 GDC 環境中使用:

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

    輸出內容必須包含下列項目,但區域名稱可能有所不同:

    NAMESPACE    NAME               AGE
    gpc-system   rootzone1config    38h