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 파일을 스테이징하고 커밋합니다.

    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