28. Créer des configurations zonales pour l'organisation racine

Temps estimé pour compléter l'atelier : 15 minutes

Propriétaire du composant opérationnel : RM

Profil de compétences : ingénieur de déploiement

La ressource OrganizationZonalConfig est la source qui contrôle les configurations par zone d'une organisation. La ressource OrganizationZonalConfig racine est requise pour gérer le cycle de vie du cluster d'administrateur racine pour les mises à niveau. Vous devez créer la ressource avec l'IaC.

Pour créer la ressource racine OrganizationZonalConfig :

  1. Générez la ressource personnalisée OrganizationZonalConfig racine :

    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)
    

    Remplacez ROOT_ADMIN_KUBECONFIG par le chemin d'accès au fichier kubeconfig du cluster d'administrateur racine.

    Voici un exemple de fichier YAML de ressource personnalisée OrganizationZonalConfig généré :

    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. Copiez la ressource personnalisée OrganizationZonalConfig dans le dépôt IaC.

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

    Remplacez les éléments suivants :

    • YAML_FILE_PATH : chemin d'accès au fichier de la ressource personnalisée OrganizationZonalConfig.
    • IAC_REPO_PATH : chemin d'accès au dépôt IAC.
  3. Ajoutez le OrganizationZonalConfig racine en tant que ressource de l'organisation racine.

    1. Ouvrez le fichier global-root-kustomization.yaml :

      vim IAC_REPO_PATH/iac/infrastructure/global/orgs/root/global-root-kustomization.yaml
      
    2. Ajoutez la racine OrganizationZonalConfig en tant que ressource à la fin de la liste des ressources existante :

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      metadata:
        name: global-root-kustomization
      resources:
        - ... # existing resource items
        - FILE_NAME.yaml
      
  4. Organisez et validez le fichier YAML OrganizationZonalConfig et les fichiers kustomize :

    git add "IAC_REPO_PATH/iac/infrastructure/global"
    git commit
    
  5. Créez la demande de fusion :

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

    Remplacez BRANCH_NAME par le nom choisi pour votre branche.

  6. Attendez que le code soit examiné et fusionné.

  7. Utilisez la configuration Kubernetes de l'administrateur pour le cluster d'administrateur racine et récupérez la configuration Kubernetes de l'administrateur pour l'API globale :

    kubectl get secrets -n global-kube-system kube-admin-test-kubeconfig -ojsonpath="{.data.value}" | base64 -d > HOME_DIRECTORY/root-global-kubeconfig
    
  8. Transférez le port de l'API globale à l'aide de la configuration Kubernetes de l'administrateur pour le cluster d'administrateur racine :

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

    Cette étape exécute la commande de transfert de port en arrière-plan. Si le processus s'arrête de manière inattendue, vous pouvez le redémarrer en exécutant à nouveau la même commande.

  9. Vérifiez que la ressource OrganizationZonalConfig est disponible dans votre environnement GDC :

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

    Le résultat doit inclure l'entrée suivante, avec d'éventuelles différences dans le nom de la zone :

    NAMESPACE    NAME               AGE
    gpc-system   rootzone1config    38h