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_PATH: OrganizationZonalConfig カスタム リソースのファイルへのパス。
    • 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 ファイルをステージングして commit します。

    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