ConfigManagement 객체 마이그레이션
이 페이지에서는 ConfigManagement 객체를 RootSync 객체로 마이그레이션하는 방법을 보여줍니다. ConfigManagement 객체에서 RootSync 객체로 마이그레이션하면 RootSync
및 RepoSync
API가 사용 설정됩니다. 이러한 API를 사용하면 추가 기능을 사용할 수 있습니다. 예를 들어 Kustomize 구성 및 Helm 차트를 렌더링하고 리소스 한도 변경 및 가져올 Git 커밋 수 업데이트와 같이 시스템 값을 재정의할 수 있습니다.
루트 저장소만 사용하고 네임스페이스 저장소는 사용하지 않으려는 경우에도 이러한 API를 사용 설정할 수 있습니다.
ConfigManagement 설정 마이그레이션
nomos migrate
사용
버전 1.10.0부터는 nomos
에서 RootSync
및 RepoSync
API를 사용 설정하기 위한 nomos migrate
명령어가 제공됩니다. 1.10.0 이상으로 nomos
를 업데이트해야 합니다.
명령어 실행 방법에 대한 자세한 내용은 ConfigManagement 객체에서 RootSync 객체로 마이그레이션을 참조하세요.
수동 마이그레이션
nomos
버전이 1.10.0보다 이전이면 설정을 수동으로 마이그레이션할 수 있습니다. ConfigManagement 객체에서 spec.enableMultiRepo
를 true
로 설정하고 루트 저장소를 클러스터에 동기화하는 RootSync 객체를 만들어야 합니다. 루트 저장소는 구조화되지 않은 저장소 또는 계층적 저장소일 수 있습니다. RootSync 객체를 사용하도록 마이그레이션한 경우 저장소를 여러 저장소로 분할하고 여러 저장소에서 동기화를 구성할 수 있습니다.
구성을 마이그레이션하여 루트 저장소를 구성하려면 다음 작업을 완료합니다.
- ConfigManagement 객체를 엽니다.
spec.git
필드에 값 사본을 만듭니다. RootSync 객체를 만들 때 이러한 값을 사용합니다.- ConfigManagement 객체에서 모든
spec.git
필드(git:
포함)를 삭제합니다. ConfigManagement 객체에서
spec.enableMultiRepo
필드를true
로 설정합니다.# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: true
변경사항을 적용합니다.
kubectl apply -f config-management.yaml
RootSync CRD가 생성되도록 기다립니다.
kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
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의 저장소에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.이러한 인증 유형에 대한 자세한 내용은 Git에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여를 참조하세요.
필수 필드입니다.
ROOT_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.
변경사항을 적용합니다.
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 |