이 페이지에서는 ConfigManagement
객체에서 RootSync
객체로 Git 구성을 마이그레이션하는 방법을 설명합니다. 마이그레이션은 RootSync
및 RepoSync
API를 사용 설정하므로 다음과 같은 추가 기능을 사용할 수 있습니다.
- 둘 이상의 정보 소스에서 동기화
- 구성 동기화 대시보드 사용
- Cloud Monitoring, Prometheus, 커스텀 모니터링 시스템을 사용한 구성 동기화 모니터링
- Kustomize 구성 및 Helm 차트 렌더링
- Artifact Registry에서 OCI 아티팩트 동기화
- Artifact Registry에서 Helm 차트 동기화
- 리소스 한도 변경 및 가져올 Git 커밋 수 업데이트와 같은 시스템 값 재정의
루트 저장소만 사용하고 네임스페이스 저장소는 사용하지 않으려는 경우에도 이러한 API를 사용 설정할 수 있습니다.
ConfigManagement 설정 마이그레이션
nomos migrate
사용
버전 1.10.0부터는 nomos
에서 RootSync
및 RepoSync
API를 사용 설정하기 위한 nomos migrate
명령어가 제공됩니다. 1.10.0 이상으로 nomos
를 업데이트해야 합니다.
명령어 실행 방법에 대한 자세한 내용은 ConfigManagement 객체에서 RootSync 객체로 마이그레이션을 참조하세요. ConfigManagement 객체가 정보 소스로 선택되지 않았고 구성 동기화에서 관리되지 않는지 확인합니다. 그렇지 않으면 수동 마이그레이션의 단계에 따라 정보 소스에서 ConfigManagement 객체를 수정해야 합니다.
수동 마이그레이션
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 |