28. Crie configurações zonais para a organização raiz

Tempo estimado até à conclusão: 15 minutos

Operable component owner: RM

Perfil de competências: engenheiro de implementação

O recurso OrganizationZonalConfig é a origem que controla as configurações por zona de uma organização. O recurso OrganizationZonalConfig raiz é necessário para gerir o ciclo de vida do cluster de administrador raiz para atualizações. Tem de criar o recurso com a IaC.

Siga estes passos para criar o recurso OrganizationZonalConfigraiz:

  1. Gere o recurso personalizado OrganizationZonalConfig raiz:

    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)
    

    Substitua ROOT_ADMIN_KUBECONFIG pelo caminho para o ficheiro kubeconfig do cluster de administrador raiz.

    Um exemplo do ficheiro YAML de OrganizationZonalConfigrecurso personalizado gerado é semelhante ao seguinte exemplo:

    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. Copie o recurso personalizado OrganizationZonalConfig para o repositório de IaC.

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

    Substitua o seguinte:

    • YAML_FILE_PATH: o caminho para o ficheiro do recurso personalizado OrganizationZonalConfig.
    • IAC_REPO_PATH: o caminho do repositório de IAC.
  3. Adicione a raiz OrganizationZonalConfig como um recurso da organização raiz.

    1. Abra o ficheiro global-root-kustomization.yaml:

      vim IAC_REPO_PATH/iac/infrastructure/global/orgs/root/global-root-kustomization.yaml
      
    2. Adicione o elemento raiz OrganizationZonalConfig como um recurso no final da 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. Prepare e confirme o OrganizationZonalConfigficheiro YAML e os kustomize ficheiros:

    git add "IAC_REPO_PATH/iac/infrastructure/global"
    git commit
    
  5. Crie o pedido de união:

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

    Substitua BRANCH_NAME pelo nome escolhido para a ramificação.

  6. Aguarde a revisão do código e a união.

  7. Use a configuração do Kubernetes do administrador para o cluster de administrador raiz e obtenha a configuração do Kubernetes do administrador para a API global:

    kubectl get secrets -n global-kube-system kube-admin-test-kubeconfig -ojsonpath="{.data.value}" | base64 -d > HOME_DIRECTORY/root-global-kubeconfig
    
  8. Encaminhe a porta para a API global através da configuração do administrador do Kubernetes para o cluster de administrador principal:

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

    Este passo executa o comando de encaminhamento de portas em segundo plano. Se o processo for interrompido inesperadamente, pode reiniciá-lo executando novamente o mesmo comando.

  9. Verifique se o recurso OrganizationZonalConfig está disponível no seu ambiente do GDC:

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

    A saída tem de incluir a seguinte entrada, com possíveis diferenças no nome da zona:

    NAMESPACE    NAME               AGE
    gpc-system   rootzone1config    38h