ConfigManagement 객체 마이그레이션

이 페이지에서는 ConfigManagement 객체를 RootSync 객체로 마이그레이션하는 방법을 보여줍니다. ConfigManagement 객체에서 RootSync 객체로 마이그레이션하면 RootSyncRepoSync API가 사용 설정됩니다. 이러한 API를 사용하면 추가 기능을 사용할 수 있습니다. 예를 들어 Kustomize 구성 및 Helm 차트를 렌더링하고 리소스 한도 변경가져올 Git 커밋 수 업데이트와 같이 시스템 값을 재정의할 수 있습니다. 루트 저장소만 사용하고 네임스페이스 저장소는 사용하지 않으려는 경우에도 이러한 API를 사용 설정할 수 있습니다.

ConfigManagement 설정 마이그레이션

nomos migrate 사용

버전 1.10.0부터 nomosRootSyncRepoSync API를 사용 설정하기 위한 nomos migrate 명령어를 제공합니다. 1.10.0 이상으로 nomos를 업데이트해야 합니다.

명령어를 실행하는 방법에 대한 자세한 내용은 ConfigManagement 객체에서 RootSync 객체로 마이그레이션을 참조하세요.

수동 마이그레이션

nomos 버전이 1.10.0 이전인 경우 설정을 수동으로 마이그레이션할 수 있습니다. ConfigManagement 객체에서 spec.enableMultiRepotrue로 설정하고 루트 저장소를 클러스터에 동기화하는 RootSync 객체를 만들어야 합니다. 클러스터당 루트 저장소를 하나만 만들 수 있고 루트 저장소는 구조화되지 않은 저장소 또는 계층적 저장소일 수 있습니다.

구성을 마이그레이션하여 루트 저장소를 구성하려면 다음 작업을 완료합니다.

  1. ConfigManagement 객체를 엽니다.
  2. spec.git 필드에 값 사본을 만듭니다. RootSync 객체를 만들 때 이러한 값을 사용합니다.
  3. ConfigManagement 객체에서 모든 spec.git 필드(git: 포함)를 삭제합니다.
  4. ConfigManagement 객체에서 spec.enableMultiRepo 필드를 true로 설정합니다.

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  5. 변경사항을 적용합니다.

    kubectl apply -f config-management.yaml
    
  6. RootSync CRD가 생성될 때까지 기다립니다.

    kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
    
  7. ConfigManagement 객체에서 복사한 값을 사용하여 RootSync 객체를 만듭니다. 예를 들면 다음과 같습니다.

    # root-sync.yaml
    # If you are using a Config Sync version earlier than 1.7.0,
    # use: apiVersion: configsync.gke.io/v1alpha1
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: root-sync
      namespace: config-management-system
    spec:
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: "ROOT_DIRECTORY"
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        # secretRef should be omitted if the auth type is none, gcenode, or gcpserviceaccount.
        secretRef:
          name: git-creds
    

    다음을 바꿉니다.

    • ROOT_FORMAT: unstructured를 추가하여 구조화되지 않은 저장소를 사용하거나 hierarchy를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은 hierarchy입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에 unstructured를 추가하는 것이 좋습니다.
    • ROOT_REPOSITORY: 루트 저장소로 사용할 Git 저장소의 URL을 추가합니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어 https://github.com/GoogleCloudPlatform/anthos-config-management-samples는 HTTPS 프로토콜을 사용합니다. 프로토콜을 입력하지 않으면 URL이 HTTPS URL로 취급됩니다. 필수 필드입니다.
    • ROOT_REVISION: Git 버전(태그 또는 해시)을 추가하여 체크아웃합니다. 이 필드는 선택사항이며 기본값은 HEAD입니다.
    • ROOT_BRANCH: 동기화할 저장소의 분기를 추가합니다. 이 필드는 선택사항이며 기본값은 master입니다.
    • ROOT_DIRECTORY: 동기화하려는 구성이 포함된 루트 디렉터리에 Git 저장소의 경로를 추가합니다. 이 필드는 선택사항이며 기본값은 저장소의 루트 디렉터리(/)입니다.
    • ROOT_AUTH_TYPE: 다음 인증 유형 중 하나를 추가합니다.

      • none: 인증 사용 안함
      • ssh: SSH 키 쌍 사용
      • cookiefile: cookiefile 사용
      • token: 토큰 사용
      • gcpserviceaccount: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다.
      • gcenode: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.

        이러한 인증 유형에 대한 상세 설명은 구성 동기화에 Git에 대한 읽기 전용 액세스 권한 부여를 참조하세요.

      필수 필드입니다.

    • ROOT_EMAIL: gcpserviceaccountAUTH_TYPE으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면 acm@PROJECT_ID.iam.gserviceaccount.com입니다.

  8. 변경사항을 적용합니다.

    kubectl apply -f root-sync.yaml
    

ConfigManagement 및 RootSync 비교 표

다음 표는 ConfigMangent 객체의 필드가 RootSync 객체의 필드에 매핑되는 방식을 간략하게 설명합니다.

ConfigManagement 필드 RootSync 필드
spec.git.gcpServiceAccountEmail spec.git.gcpServiceAccountEmail
spec.git.syncRepo spec.git.repo
spec.git.syncBranch spec.git.branch
spec.git.policyDir spec.git.dir
spec.git.syncWait spec.git.period
spec.git.syncRev spec.git.revision
spec.git.secretType spec.git.auth
git-creds(ConfigManagement 객체의 고정 값) spec.git.secretRef.name
spec.sourceFormat spec.sourceFormat
spec.git.proxy.httpProxy 또는 spec.git.proxy.httpsProxy spec.git.proxy

다음 단계