ConfigManagement 객체 마이그레이션

이 페이지에서는 ConfigManagement 객체에서 RootSync 객체로 Git 구성을 마이그레이션하는 방법을 설명합니다. 마이그레이션은 RootSyncRepoSync API를 사용 설정하므로 다음과 같은 추가 기능을 사용할 수 있습니다.

루트 저장소만 사용하고 네임스페이스 저장소는 사용하지 않으려는 경우에도 이러한 API를 사용 설정할 수 있습니다.

ConfigManagement 설정 마이그레이션

spec.enableLegacyFields와 함께 RootSync를 사용하는경우 안내에 따라 기존 필드를 사용 중지합니다.

ConfigManagement 객체가 spec.git를 사용하고 있지만 spec.enableMultiRepo가 false로 설정된 경우 안내에 따라 RootSync로 마이그레이션하세요.

기존 필드 사용 중지

버전 1.19.0 이상에서는 spec.enableLegacyFields 필드가 지원되지 않으며 이 필드를 설정하면 오류가 발생합니다. 구성 동기화 버전 1.19.0 이상을 사용하려면 다음 단계를 완료하여 기존 필드를 삭제하세요.

  1. ConfigManagement 객체를 엽니다.

  2. ConfigManagement 객체에서 spec.enableLegacyFieldsspec.git 필드를 삭제합니다. ConfigManagement 객체는 다음과 유사해야 합니다.

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

    kubectl apply -f config-management.yaml
    

이제 ConfigManagement 객체의 spec.git 필드에서 생성된 RootSync 객체에 영향을 주지 않고 기존 필드가 사용 중지됩니다. 마이그레이션이 완료되었으며 이제 RootSync 객체의 git 필드를 직접 사용할 수 있습니다.

RootSync로 마이그레이션

ConfigManagement 객체가 spec.git를 사용하고 있지만 spec.enableMultiRepo가 false로 설정된 경우 이 가이드를 따라 RootSyncRepoSync API를 사용 설정하세요.

nomos migrate 사용

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

명령어 실행 방법에 대한 자세한 내용은 ConfigManagement 객체에서 RootSync 객체로 마이그레이션을 참조하세요. ConfigManagement 객체가 정보 소스로 선택되지 않았고 구성 동기화에서 관리되지 않는지 확인합니다. 그렇지 않으면 수동 마이그레이션의 단계에 따라 정보 소스에서 ConfigManagement 객체를 수정해야 합니다.

수동 마이그레이션

nomos 버전이 1.10.0보다 이전이면 설정을 수동으로 마이그레이션할 수 있습니다. ConfigManagement 객체에서 spec.enableMultiRepotrue로 설정하고 루트 저장소를 클러스터에 동기화하는 RootSync 객체를 만들어야 합니다. 루트 저장소는 구조화되지 않은 저장소 또는 계층적 저장소일 수 있습니다. 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
    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의 저장소에 액세스합니다. GKE용 워크로드 아이덴티티 제휴가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.

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

      필수 필드입니다.

    • ROOT_EMAIL: gcpserviceaccountROOT_AUTH_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

다음 단계