28. Crear configuraciones zonales para la organización raíz

Tiempo estimado para completarlo: 15 minutos

Propietario del componente accionable: RM

Perfil de habilidades: ingeniero de implementaciones

El recurso OrganizationZonalConfig es la fuente que controla las configuraciones por zona de una organización. El recurso raíz OrganizationZonalConfig es necesario para gestionar el ciclo de vida del clúster de administrador raíz en las actualizaciones. Debes crear el recurso con IaC.

Sigue estos pasos para crear el recurso raíz OrganizationZonalConfig:

  1. Genera el recurso personalizado raíz 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)
    

    Sustituye ROOT_ADMIN_KUBECONFIG por la ruta al archivo kubeconfig del clúster de administrador raíz.

    Un ejemplo del archivo YAML de recursos personalizados OrganizationZonalConfig generado es similar al siguiente:

    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 el recurso personalizado OrganizationZonalConfig en el repositorio de IaC.

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

    Haz los cambios siguientes:

    • YAML_FILE_PATH: la ruta al archivo del recurso personalizado OrganizationZonalConfig.
    • IAC_REPO_PATH: la ruta del repositorio de IAC.
  3. Añade la raíz OrganizationZonalConfig como recurso de la organización raíz.

    1. Abre el archivo global-root-kustomization.yaml:

      vim IAC_REPO_PATH/iac/infrastructure/global/orgs/root/global-root-kustomization.yaml
      
    2. Añade la raíz OrganizationZonalConfig como recurso al final de la lista de recursos:

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      metadata:
        name: global-root-kustomization
      resources:
        - ... # existing resource items
        - FILE_NAME.yaml
      
  4. Añade y confirma el archivo OrganizationZonalConfig YAML y los archivos kustomize:

    git add "IAC_REPO_PATH/iac/infrastructure/global"
    git commit
    
  5. Crea la solicitud de combinación:

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

    Sustituye BRANCH_NAME por el nombre que hayas elegido para tu rama.

  6. Espera a que se revise el código y se combine.

  7. Usa la configuración de Kubernetes del administrador para el clúster de administrador raíz y recupera la configuración de Kubernetes del administrador para la API global:

    kubectl get secrets -n global-kube-system kube-admin-test-kubeconfig -ojsonpath="{.data.value}" | base64 -d > HOME_DIRECTORY/root-global-kubeconfig
    
  8. Reenvía el puerto de la API global mediante la configuración de administrador de Kubernetes para el clúster de administrador raíz:

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

    En este paso se ejecuta el comando de reenvío de puertos en segundo plano. Si el proceso se detiene de forma inesperada, puedes reiniciarlo volviendo a ejecutar el mismo comando.

  9. Verifica que el recurso OrganizationZonalConfig esté disponible en tu entorno de GDC:

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

    El resultado debe incluir la siguiente entrada, con posibles diferencias en el nombre de la zona:

    NAMESPACE    NAME               AGE
    gpc-system   rootzone1config    38h