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

Tiempo estimado para completar la actividad: 15 minutos

Propietario del componente operable: RM

Perfil de habilidad: ingeniero de implementación

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

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

  1. Genera el recurso personalizado OrganizationZonalConfig raíz:

    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)
    

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

    Un ejemplo del archivo YAML del recurso personalizado 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/
    

    Reemplaza lo siguiente:

    • YAML_FILE_PATH: Es la ruta de acceso al archivo del recurso personalizado de OrganizationZonalConfig.
    • IAC_REPO_PATH: Es la ruta de acceso al repositorio de IAC.
  3. Agrega el OrganizationZonalConfig raíz como un 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. Agrega el OrganizationZonalConfig raíz como un recurso al final de la lista de recursos existente:

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      metadata:
        name: global-root-kustomization
      resources:
        - ... # existing resource items
        - FILE_NAME.yaml
      
  4. Agrega y confirma el archivo YAML OrganizationZonalConfig 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
    

    Reemplaza BRANCH_NAME por el nombre que elegiste para tu rama.

  6. Espera la revisión de código y la combinación.

  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 para la API global con la configuración de Kubernetes del administrador 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 redirección 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