이 페이지에서는 RootSync 및 RepoSync 객체를 만들어서 둘 이상의 루트 및 네임스페이스 범위의 정보 소스를 구성하는 방법을 설명합니다.
루트 정보 소스를 사용하면 클러스터 범위 및 네임스페이스 범위의 구성을 동기화할 수 있습니다. 루트 정보 소스는 관리자 수준 사용자 인증 정보를 사용하여 애플리케이션 네임스페이스에 정책을 적용하고 구성에 선언한 상태에서 드리프트된 로컬 변경사항을 재정의할 수 있습니다. 중앙 관리자는 일반적으로 루트 정보 소스를 관리합니다.
네임스페이스 범위 정보 소스는 선택적이며 클러스터 간 특정 네임스페이스에 동기화된 네임스페이스 범위 구성을 포함할 수 있습니다. 네임스페이스 범위 정보 소스의 설정 및 제어를 관리자가 아닌 사용자에게 위임할 수 있습니다. 구성 동기화는 정보 소스로부터 변경사항을 자동으로 감지하지만 네임스페이스 범위 정보 소스에 허용 웹훅을 추가하여 드리프트 감지 레이어를 추가할 수 있습니다. 이를 수행하는 방법은 구성 드리프트 방지를 참조하세요.
시작하기 전에
- 구성 동기화가 동기화하는 구성을 포함할 수 있는 구조화되지 않은 정보 소스를 만들거나 액세스 할 수 있는지 확인합니다. 구성 동기화는 Git 저장소, Helm 차트, OCI 이미지를 정보 소스로 지원합니다. 네임스페이스 범위의 정보 소스는 구조화되지 않은 형식을 사용해야 합니다.
- Google Kubernetes Engine(GKE) Enterprise 버전에서 지원되는 플랫폼 및 버전에 있고, 구성 동기화 요구 사항을 충족하는 클러스터를 생성하거나 이에 액세스할 수 있는지 확인합니다.
제한사항
NamespaceSelectors
(선택기를 가리키는 주석 포함)는 루트 정보 소스에서만 작동합니다.- Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치하면 구성 동기화에서
root-sync
라는 RootSync 객체를 자동으로 만듭니다. 따라서 RootSync 객체root-sync
를 지명할 수 없습니다.
원하는 구성 방법 선택
소스를 구성하는 두 가지 방법 중 하나를 선택합니다.
루트 정보 소스의 소스 제어. 이 방법은 정보 소스의 모든 구성을 다른 정보 소스에 중앙 집중화하여 중앙 관리자가 설정을 완벽하게 제어할 수 있게 해줍니다.
Kubernetes API로 소스 제어. 이 방법은 정보 소스의 제어를 다른 소유자에게 위임하려는 경우에 사용합니다.
루트 정보 소스의 소스 제어
루트 정보 소스에서 루트 소스 제어
구성 동기화는 둘 이상의 정보 소스에서 동기화를 지원합니다. 중앙 관리자는 루트 정보 소스를 사용하여 다른 모든 소스를 관리할 수 있습니다. 구성 동기화에서 RootSync 객체를 관리하므로 이 방법에서는 클러스터의 RootSync 구성에 대한 로컬 변경을 차단합니다.
이 기능을 사용하려면 다음 작업을 완료합니다.
다음 매니페스트 중 하나를
root-sync.yaml
로 저장합니다. 구성에 대한 정보 소스에 해당하는 매니페스트 버전을 사용합니다.Git
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: git sourceFormat: ROOT_FORMAT git: repo: ROOT_REPOSITORY revision: ROOT_REVISION branch: ROOT_BRANCH dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME noSSLVerify: ROOT_NO_SSL_VERIFY caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
다음을 바꿉니다.
ROOT_SYNC_NAME
: RootSync 객체의 이름을 추가합니다.ROOT_FORMAT
:unstructured
를 추가하여 구조화되지 않은 저장소를 사용하거나hierarchy
를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은hierarchy
입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에unstructured
를 추가하는 것이 좋습니다.ROOT_REPOSITORY
: 루트 저장소로 사용할 Git 저장소의 URL을 추가합니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 필수 필드입니다.ROOT_REVISION
: 동기화할 Git 버전(태그 또는 해시)을 추가합니다. 이 필드는 선택사항이며 기본값은HEAD
입니다. 구성 동기화 버전 1.17.0부터는revision
필드에 브랜치 이름을 지정할 수도 있습니다. 버전 1.17.0 이상에서 해시를 사용하는 경우 축약된 양식이 아닌 전체 해시 양식을 사용해야 합니다.ROOT_BRANCH
: 동기화할 저장소의 브랜치를 추가합니다. 이 필드는 선택사항이며 기본값은master
입니다. 구성 동기화 버전 1.17.0부터는 간단히revision
필드를 사용하여 브랜치 이름을 지정하는 것이 좋습니다.revision
필드와branch
필드가 모두 지정된 경우revision
이branch
보다 우선 적용됩니다.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
입니다.ROOT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 보안 비밀의 공개 키를 Git 제공업체에 추가해야 합니다. 이 필드는 선택사항입니다.ROOT_NO_SSL_VERIFY
: SSL 인증서 확인을 중지하려면 이 필드를true
로 설정합니다. 기본값은false
입니다.ROOT_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Git 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.이 매니페스트는 Git를 소스로 사용하는
RootSync
객체를 만듭니다.OCI
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: oci sourceFormat: ROOT_FORMAT oci: image: ROOT_IMAGE dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
다음을 바꿉니다.
ROOT_SYNC_NAME
: RootSync 객체의 이름을 추가합니다.ROOT_FORMAT
:unstructured
를 추가하여 구조화되지 않은 저장소를 사용하거나hierarchy
를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은hierarchy
입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에unstructured
를 추가하는 것이 좋습니다.ROOT_IMAGE
: 루트 저장소로 사용할 OCI 이미지의 URL입니다(예:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
). 기본적으로 이미지는latest
태그에서 가져오지만 대신TAG
또는DIGEST
로 이미지를 가져올 수 있습니다.PACKAGE_NAME
에서TAG
또는DIGEST
를 지정합니다.TAG
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
DIGEST
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
ROOT_DIRECTORY
: 동기화하려는 구성이 포함된 루트 디렉터리에 저장소의 경로를 추가합니다. 이 필드는 선택사항이며 기본값은 저장소의 루트 디렉터리(/
)입니다.ROOT_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
ROOT_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.ROOT_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 OCI 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.
CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.이 매니페스트는 OCI 이미지를 소스로 사용하는
RootSync
객체를 만듭니다.Helm
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: helm sourceFormat: ROOT_FORMAT helm: repo: ROOT_HELM_REPOSITORY chart: HELM_CHART_NAME version: HELM_CHART_VERSION releaseName: HELM_RELEASE_NAME namespace: HELM_RELEASE_NAMESPACE values: foo: bar: VALUE_1 baz: - qux: VALUE_2 xyz: VALUE_3 includeCRDs: HELM_INCLUDE_CRDS auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
다음을 바꿉니다.
ROOT_SYNC_NAME
: RootSync 객체의 이름을 추가합니다.ROOT_FORMAT
:unstructured
를 추가하여 구조화되지 않은 저장소를 사용하거나hierarchy
를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은hierarchy
입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에unstructured
를 추가하는 것이 좋습니다.ROOT_HELM_REPOSITORY
: 루트 저장소로 사용할 Helm 저장소의 URL입니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 필수 필드입니다.HELM_CHART_NAME
: Helm 차트의 이름을 추가합니다. 필수 필드입니다.HELM_CHART_VERSION
: 차트의 버전입니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 최신 버전이 사용됩니다.HELM_RELEASE_NAME
: Helm 출시 버전의 이름입니다. 이 필드는 선택사항입니다.HELM_RELEASE_NAMESPACE
: 출시 버전의 대상 네임스페이스입니다. 템플릿에namespace: {{ .Release.Namespace }}
이 포함된 리소스의 네임스페이스만 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 기본 네임스페이스config-management-system
이 사용됩니다.HELM_INCLUDE_CRDS
: Helm 템플릿에서 CustomResourceDefinition도 생성하도록 하려면true
로 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않을 경우 기본값은false
이며 CRD가 생성되지 않습니다.VALUE
: 차트에 포함되는 기본값 대신 사용할 값입니다. 이 필드의 형식을 Helm 차트의 values.yaml 파일과 동일하게 지정합니다. 이 필드는 선택사항입니다.ROOT_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함token
: 사용자 이름과 비밀번호를 사용하여 비공개 Helm 저장소에 액세스합니다.gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
ROOT_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.ROOT_SECRET_NAME
:token
이ROOT_AUTH_TYPE
이면 보안 비밀 이름을 추가합니다. 이 필드는 선택사항입니다.ROOT_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Helm 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.
CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.이 매니페스트는 Helm을 소스로 사용하는
RootSync
객체를 만듭니다.루트 정보 소스에 대한 변경사항을 커밋합니다.
git add . git commit -m 'Setting up a new root source of truth.' git push
여러 루트 소스를 구성해야 하는 경우 위 단계를 반복하면 됩니다. 다른 RootSync 객체가 동기화하는 루트 정보 소스에 여러 RootSync 객체의 구성을 저장하여 GitOps 방식으로 여러 RootSync 객체를 중앙에서 관리할 수도 있습니다.
루트 정보 소스에서 네임스페이스 범위 객체 제어
네임스페이스 범위의 정보 소스는 루트 정보 소스에서 관리할 수 있습니다. 네임스페이스 범위 소스는 구성 동기화에서 관리하므로 이 방법은 네임스페이스 범위 소스 정의에 대한 로컬 변경을 차단합니다.
이 기능을 사용하려면 다음 작업을 완료합니다.
루트 정보 소스에서
namespace
구성을 선언합니다.# ROOT_SOURCE/namespaces/NAMESPACE/namespace.yaml apiVersion: v1 kind: Namespace metadata: name: NAMESPACE
NAMESPACE
를 네임스페이스 이름으로 바꿉니다.루트 정보 소스에서 동일한 네임스페이스에 다음
RepoSync
객체 중 하나를 만듭니다. 구성에 대한 정보 소스에 해당하는 매니페스트를 사용합니다.Git
#ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: git # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured git: repo: NAMESPACE_REPOSITORY revision: NAMESPACE_REVISION branch: NAMESPACE_BRANCH dir: "NAMESPACE_DIRECTORY" auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL secretRef: name: NAMESPACE_SECRET_NAME noSSLVerify: NAMESPACE_NO_SSL_VERIFY caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_REPOSITORY
: 네임스페이스 저장소로 사용할 Git 저장소의 URL을 추가합니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 프로토콜을 입력하지 않으면 URL이 HTTPS URL로 취급됩니다. 필수 필드입니다.NAMESPACE_REVISION
: 동기화할 Git 버전(태그 또는 해시)을 추가합니다. 이 필드는 선택사항이며 기본값은HEAD
입니다. 구성 동기화 버전 1.17.0부터는revision
필드에 브랜치 이름을 지정할 수도 있습니다. 버전 1.17.0 이상에서 해시를 사용하는 경우 축약된 양식이 아닌 전체 해시 양식을 사용해야 합니다.NAMESPACE_BRANCH
: 동기화할 저장소의 브랜치를 추가합니다. 이 필드는 선택사항이며 기본값은master
입니다. 구성 동기화 버전 1.17.0부터는 간단히revision
필드를 사용하여 브랜치 이름을 지정하는 것이 좋습니다.revision
필드와branch
필드가 모두 지정된 경우revision
이branch
보다 우선 적용됩니다.NAMESPACE_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함ssh
: SSH 키 쌍 사용cookiefile
:cookiefile
사용token
: 토큰 사용gcpserviceaccount
: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다.gcenode
: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.이러한 인증 유형에 대한 자세한 내용은 Git에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여를 참조하세요.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를NAMESPACE_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_SECRET_NAME
: 보안 비밀에 지정할 이름을 추가합니다. 이 필드는 선택사항입니다.NAMESPACE_NO_SSL_VERIFY
: SSL 인증서 확인을 중지하려면 이 필드를true
로 설정합니다. 기본값은false
입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Git 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명과
spec
필드에 추가할 수 있는 전체 필드 목록은 RepoSync 필드를 참조하세요.OCI
# ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: oci # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured oci: image: NAMESPACE_IMAGE dir: NAMESPACE_DIRECTORY auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_IMAGE
: 네임스페이스 소스로 사용할 OCI 이미지의 URL입니다(예:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
). 기본적으로 이미지는latest
태그에서 가져오지만 대신TAG
또는DIGEST
로 이미지를 가져올 수 있습니다.PACKAGE_NAME
에서TAG
또는DIGEST
를 지정합니다.TAG
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
DIGEST
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
NAMESPACE_DIRECTORY
: 동기화하려는 구성이 포함된 루트 디렉터리에 소스의 경로를 추가합니다. 이 필드는 선택사항이며 기본값은 소스의 루트 디렉터리(/
)입니다.NAMESPACE_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 OCI 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.Helm
# ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: helm # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured helm: repo: NAMESPACE_REPOSITORY chart: HELM_CHART_NAME version: HELM_CHART_VERSION releaseName: HELM_RELEASE_NAME namespace: HELM_RELEASE_NAMESPACE values: foo: bar: VALUE_1 baz: - qux: VALUE_2 xyz: VALUE_3 includeCRDs: HELM_INCLUDE_CRDS auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL secretRef: name: NAMESPACE_SECRET_NAME caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_REPOSITORY
: 루트 저장소로 사용할 Helm 저장소의 URL입니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 필수 필드입니다.HELM_CHART_NAME
: Helm 차트의 이름을 추가합니다. 필수 필드입니다.HELM_CHART_VERSION
: 차트의 버전입니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 최신 버전이 사용됩니다.HELM_RELEASE_NAME
: Helm 출시 버전의 이름입니다. 이 필드는 선택사항입니다.HELM_RELEASE_NAMESPACE
: 출시 버전의 대상 네임스페이스입니다. 템플릿에namespace: {{ .Release.Namespace }}
이 포함된 리소스의 네임스페이스만 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 기본 네임스페이스config-management-system
이 사용됩니다.HELM_INCLUDE_CRDS
: Helm 템플릿에서 CustomResourceDefinition도 생성하도록 하려면true
로 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않을 경우 기본값은false
이며 CRD가 생성되지 않습니다.VALUE
: 차트에 포함되는 기본값 대신 사용할 값입니다. 이 필드의 형식을 Helm 차트의 values.yaml 파일과 동일하게 지정합니다. 이 필드는 선택사항입니다.ROOT_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함token
: 사용자 이름과 비밀번호를 사용하여 비공개 Helm 저장소에 액세스합니다.gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_SECRET_NAME
:token
이ROOT_AUTH_TYPE
이면 보안 비밀 이름을 추가합니다. 이 필드는 선택사항입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Helm 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.gcpserviceaccount
를 인증 유형으로 사용하고 워크로드 아이덴티티가 사용 설정되지 않은 경우 각 네임스페이스의 Kubernetes 서비스 계정과 Google 서비스 계정 간에 IAM 정책 바인딩을 만들어야 합니다. 이 바인딩을 만드는 방법은 Git에 대한 액세스 권한 부여를 참조하세요.루트 소스에서
SERVICE_ACCOUNT_NAME
서비스 계정에 네임스페이스의 객체를 관리할 수 있는 권한을 부여하는RoleBinding
구성을 선언합니다. RepoSync 구성이 클러스터에 동기화되면 구성 동기화는 자동으로SERVICE_ACCOUNT_NAME
서비스 계정을 생성합니다.RoleBinding
은 동일한 네임스페이스의Role
을 참조할 수 있습니다. 또는RoleBinding
이ClusterRole
을 참조하고 이ClusterRole
을RoleBinding
의 네임스페이스에 바인딩할 수 있습니다. 사용자 정의Role
에 세분화된 권한을 부여하여 최소 권한의 원칙을 준수해야 하지만ClusterRole
을 정의하거나 사용자 대상 역할을 사용하고 여러 네임스페이스의 여러RoleBindings
에서 동일한ClusterRole
을 참조할 수 있습니다.기본 ClusterRoles
기본
ClusterRole
(예:admin
또는edit
)을 참조하는RoleBinding
을 선언할 수 있습니다. 자세한 내용은 사용자 대상 역할을 참조하세요.# ROOT_REPO/namespaces/NAMESPACE/sync-rolebinding.yaml kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: syncs-repo namespace: NAMESPACE subjects: - kind: ServiceAccount name: SERVICE_ACCOUNT_NAME namespace: config-management-system roleRef: kind: ClusterRole name: CLUSTERROLE_NAME apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
NAMESPACE
: 네임스페이스 이름을 추가합니다.SERVICE_ACCOUNT_NAME
: 조정자의 서비스 계정 이름을 추가합니다. RepoSync 이름이repo-sync
이면SERVICE_ACCOUNT_NAME
이ns-reconciler-NAMESPACE
입니다. 그렇지 않은 경우ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
입니다. 예를 들어 RepoSync 이름이prod
이면SERVICE_ACCOUNT_NAME
은ns-reconciler-NAMESPACE-prod-4
가 됩니다.prod
에 4자가 포함되어 있으므로 정수4
를 사용합니다.CLUSTERROLE_NAME
: 기본 ClusterRole 이름을 추가합니다.
사용자 정의 역할
RepoSync
객체에서 관리하는 각 리소스에 권한 목록을 부여하여ClusterRole
또는Role
을 선언할 수 있습니다. 이를 통해 세분화된 권한을 사용할 수 있습니다. 자세한 내용은 리소스 참조를 확인하세요.예를 들어 다음
ClusterRole
또는Role
은Deployment
및ServiceAccount
객체를 관리할 수 있는 권한을 부여합니다.# ROOT_REPO/namespaces/NAMESPACE/sync-role.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ROLE_KIND metadata: namespace: NAMESPACE # only set this field for a 'Role' name: RECONCILER_ROLE rules: # Update 'apiGroups' and 'resources' to reference actual resources managed by 'RepoSync'. - apiGroups: ["apps"] resources: ["deployments"] verbs: ["*"] - apiGroups: [""] resources: ["serviceaccounts"] verbs: ["*"]
ClusterRole
또는Role
을 참조하는RoleBinding
을 선언하려면 다음 객체를 만듭니다.RoleBinding
은 구성 동기화가 지정된RepoSync
의 네임스페이스 범위 리소스를 관리할 수 있도록 추가 권한을 부여합니다.# ROOT_REPO/namespaces/NAMESPACE/sync-rolebinding.yaml kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: syncs-repo namespace: NAMESPACE subjects: - kind: ServiceAccount name: SERVICE_ACCOUNT_NAME namespace: config-management-system roleRef: kind: ROLE_KIND name: RECONCILER_ROLE apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
ROLE_KIND
:ClusterRole
또는Role
을 설정합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.SERVICE_ACCOUNT_NAME
: 조정자의 서비스 계정 이름을 추가합니다. RepoSync 이름이repo-sync
이면SERVICE_ACCOUNT_NAME
이ns-reconciler-NAMESPACE
입니다. 그렇지 않은 경우ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
입니다. 예를 들어 RepoSync 이름이prod
이면SERVICE_ACCOUNT_NAME
은ns-reconciler-NAMESPACE-prod-4
가 됩니다.prod
에 4자가 포함되어 있으므로 정수4
를 사용합니다.RECONCILER_ROLE
:ClusterRole
또는Role
의 이름을 추가합니다.
루트 정보 소스에 대한 변경사항을 커밋합니다.
git add . git commit -m 'Setting up a new namespace-scoped source of truth.' git push
필요한 경우 원하는 인증 방법을 기준으로 보안 비밀을 만듭니다.
none
을 인증 유형으로 사용한 경우 이 단계를 건너뛸 수 있습니다.보안 비밀은 다음 요구사항을 충족해야 합니다.
- RepoSync와 동일한 네임스페이스에 보안 비밀을 만듭니다.
- 보안 비밀의 이름은
repo-sync.yaml
에 정의된spec.git.secretRef
이름과 일치해야 합니다. - 보안 비밀의 공개 키를 Git 제공업체에 추가해야 합니다.
구성을 확인하려면 네임스페이스 소스의 객체 중 하나에서
kubectl get
을 사용합니다. 예를 들면 다음과 같습니다.kubectl get rolebindings -n NAMESPACE
네임스페이스 범위 소스를 둘 이상 구성해야 하는 경우 위 단계를 반복하면 됩니다.
네임스페이스 범위 소스의 네임스페이스 범위 소스 제어
구성 동기화는 네임스페이스당 두 개 이상의 네임스페이스 범위 정보 소스에서 동기화를 지원합니다. 네임스페이스 범위 정보 소스는 동일한 네임스페이스에 있는 네임스페이스 범위 정보 소스에서 관리될 수 있습니다.
이 기능을 사용하려면 다음 작업을 완료합니다.
네임스페이스 범위 정보 소스에서 동일한 네임스페이스에 다음
RepoSync
객체 중 하나를 만듭니다. 구성에 대한 정보 소스에 해당하는 매니페스트를 사용합니다.Git
#ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: git # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured git: repo: NAMESPACE_REPOSITORY revision: NAMESPACE_REVISION branch: NAMESPACE_BRANCH dir: "NAMESPACE_DIRECTORY" auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL secretRef: name: NAMESPACE_SECRET_NAME noSSLVerify: NAMESPACE_NO_SSL_VERIFY caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_REPOSITORY
: 네임스페이스 저장소로 사용할 Git 저장소의 URL을 추가합니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 프로토콜을 입력하지 않으면 URL이 HTTPS URL로 취급됩니다. 필수 필드입니다.NAMESPACE_REVISION
: 동기화할 Git 버전(태그 또는 해시)을 추가합니다. 이 필드는 선택사항이며 기본값은HEAD
입니다. 구성 동기화 버전 1.17.0부터는revision
필드에 브랜치 이름을 지정할 수도 있습니다. 버전 1.17.0 이상에서 해시를 사용하는 경우 축약된 양식이 아닌 전체 해시 양식을 사용해야 합니다.NAMESPACE_BRANCH
: 동기화할 저장소의 브랜치를 추가합니다. 이 필드는 선택사항이며 기본값은master
입니다. 구성 동기화 버전 1.17.0부터는 간단히revision
필드를 사용하여 브랜치 이름을 지정하는 것이 좋습니다.revision
필드와branch
필드가 모두 지정된 경우revision
이branch
보다 우선 적용됩니다.NAMESPACE_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함ssh
: SSH 키 쌍 사용cookiefile
:cookiefile
사용token
: 토큰 사용gcpserviceaccount
: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다.gcenode
: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.이러한 인증 유형에 대한 자세한 내용은 Git에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여를 참조하세요.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를NAMESPACE_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_SECRET_NAME
: 보안 비밀에 지정할 이름을 추가합니다. 이 필드는 선택사항입니다.NAMESPACE_NO_SSL_VERIFY
: SSL 인증서 확인을 중지하려면 이 필드를true
로 설정합니다. 기본값은false
입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Git 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명과
spec
필드에 추가할 수 있는 전체 필드 목록은 RepoSync 필드를 참조하세요.OCI
# ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: oci # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured oci: image: NAMESPACE_IMAGE dir: NAMESPACE_DIRECTORY auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_IMAGE
: 네임스페이스 소스로 사용할 OCI 이미지의 URL입니다(예:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
). 기본적으로 이미지는latest
태그에서 가져오지만 대신TAG
또는DIGEST
로 이미지를 가져올 수 있습니다.PACKAGE_NAME
에서TAG
또는DIGEST
를 지정합니다.TAG
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
DIGEST
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
NAMESPACE_DIRECTORY
: 동기화하려는 구성이 포함된 루트 디렉터리에 소스의 경로를 추가합니다. 이 필드는 선택사항이며 기본값은 소스의 루트 디렉터리(/
)입니다.NAMESPACE_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 OCI 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.Helm
# ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: helm # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured helm: repo: NAMESPACE_REPOSITORY chart: HELM_CHART_NAME version: HELM_CHART_VERSION releaseName: HELM_RELEASE_NAME namespace: HELM_RELEASE_NAMESPACE values: foo: bar: VALUE_1 baz: - qux: VALUE_2 xyz: VALUE_3 includeCRDs: HELM_INCLUDE_CRDS auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL secretRef: name: NAMESPACE_SECRET_NAME caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_REPOSITORY
: 루트 저장소로 사용할 Helm 저장소의 URL입니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 필수 필드입니다.HELM_CHART_NAME
: Helm 차트의 이름을 추가합니다. 필수 필드입니다.HELM_CHART_VERSION
: 차트의 버전입니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 최신 버전이 사용됩니다.HELM_RELEASE_NAME
: Helm 출시 버전의 이름입니다. 이 필드는 선택사항입니다.HELM_RELEASE_NAMESPACE
: 출시 버전의 대상 네임스페이스입니다. 템플릿에namespace: {{ .Release.Namespace }}
이 포함된 리소스의 네임스페이스만 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 기본 네임스페이스config-management-system
이 사용됩니다.HELM_INCLUDE_CRDS
: Helm 템플릿에서 CustomResourceDefinition도 생성하도록 하려면true
로 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않을 경우 기본값은false
이며 CRD가 생성되지 않습니다.VALUE
: 차트에 포함되는 기본값 대신 사용할 값입니다. 이 필드의 형식을 Helm 차트의 values.yaml 파일과 동일하게 지정합니다. 이 필드는 선택사항입니다.ROOT_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함token
: 사용자 이름과 비밀번호를 사용하여 비공개 Helm 저장소에 액세스합니다.gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_SECRET_NAME
:token
이ROOT_AUTH_TYPE
이면 보안 비밀 이름을 추가합니다. 이 필드는 선택사항입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Helm 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.gcpserviceaccount
를 인증 유형으로 사용하고 워크로드 아이덴티티가 사용 설정되지 않은 경우 각 네임스페이스의 Kubernetes 서비스 계정과 Google 서비스 계정 간에 IAM 정책 바인딩을 만들어야 합니다. 이 바인딩을 만드는 방법은 Git에 대한 액세스 권한 부여를 참조하세요.루트 소스에서
SERVICE_ACCOUNT_NAME
서비스 계정에 네임스페이스의 객체를 관리할 수 있는 권한을 부여하는RoleBinding
구성을 선언합니다. RepoSync 구성이 클러스터에 동기화되면 구성 동기화는 자동으로SERVICE_ACCOUNT_NAME
서비스 계정을 생성합니다.RoleBinding
은 동일한 네임스페이스의Role
을 참조할 수 있습니다. 또는RoleBinding
이ClusterRole
을 참조하고 이ClusterRole
을RoleBinding
의 네임스페이스에 바인딩할 수 있습니다. 사용자 정의Role
에 세분화된 권한을 부여하여 최소 권한의 원칙을 준수해야 하지만ClusterRole
을 정의하거나 사용자 대상 역할을 사용하고 여러 네임스페이스의 여러RoleBindings
에서 동일한ClusterRole
을 참조할 수 있습니다.기본 ClusterRoles
기본
ClusterRole
(예:admin
또는edit
)을 참조하는RoleBinding
을 선언할 수 있습니다. 자세한 내용은 사용자 대상 역할을 참조하세요.# ROOT_REPO/namespaces/NAMESPACE/sync-rolebinding.yaml kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: syncs-repo namespace: NAMESPACE subjects: - kind: ServiceAccount name: SERVICE_ACCOUNT_NAME namespace: config-management-system roleRef: kind: ClusterRole name: CLUSTERROLE_NAME apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
NAMESPACE
: 네임스페이스 이름을 추가합니다.SERVICE_ACCOUNT_NAME
: 조정자의 서비스 계정 이름을 추가합니다. RepoSync 이름이repo-sync
이면SERVICE_ACCOUNT_NAME
이ns-reconciler-NAMESPACE
입니다. 그렇지 않은 경우ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
입니다. 예를 들어 RepoSync 이름이prod
이면SERVICE_ACCOUNT_NAME
은ns-reconciler-NAMESPACE-prod-4
가 됩니다.prod
에 4자가 포함되어 있으므로 정수4
를 사용합니다.CLUSTERROLE_NAME
: 기본 ClusterRole 이름을 추가합니다.
사용자 정의 역할
RepoSync
객체에서 관리하는 각 리소스에 권한 목록을 부여하여ClusterRole
또는Role
을 선언할 수 있습니다. 이를 통해 세분화된 권한을 사용할 수 있습니다. 자세한 내용은 리소스 참조를 확인하세요.예를 들어 다음
ClusterRole
또는Role
은Deployment
및ServiceAccount
객체를 관리할 수 있는 권한을 부여합니다.# ROOT_REPO/namespaces/NAMESPACE/sync-role.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ROLE_KIND metadata: namespace: NAMESPACE # only set this field for a 'Role' name: RECONCILER_ROLE rules: # Update 'apiGroups' and 'resources' to reference actual resources managed by 'RepoSync'. - apiGroups: ["apps"] resources: ["deployments"] verbs: ["*"] - apiGroups: [""] resources: ["serviceaccounts"] verbs: ["*"]
ClusterRole
또는Role
을 참조하는RoleBinding
을 선언하려면 다음 객체를 만듭니다.RoleBinding
은 구성 동기화가 지정된RepoSync
의 네임스페이스 범위 리소스를 관리할 수 있도록 추가 권한을 부여합니다.# ROOT_REPO/namespaces/NAMESPACE/sync-rolebinding.yaml kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: syncs-repo namespace: NAMESPACE subjects: - kind: ServiceAccount name: SERVICE_ACCOUNT_NAME namespace: config-management-system roleRef: kind: ROLE_KIND name: RECONCILER_ROLE apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
ROLE_KIND
:ClusterRole
또는Role
을 설정합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.SERVICE_ACCOUNT_NAME
: 조정자의 서비스 계정 이름을 추가합니다. RepoSync 이름이repo-sync
이면SERVICE_ACCOUNT_NAME
이ns-reconciler-NAMESPACE
입니다. 그렇지 않은 경우ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
입니다. 예를 들어 RepoSync 이름이prod
이면SERVICE_ACCOUNT_NAME
은ns-reconciler-NAMESPACE-prod-4
가 됩니다.prod
에 4자가 포함되어 있으므로 정수4
를 사용합니다.RECONCILER_ROLE
:ClusterRole
또는Role
의 이름을 추가합니다.
루트 정보 소스에 대한 변경사항을 커밋합니다.
git add . git commit -m 'Setting up a new namespace-scoped source of truth.' git push
필요한 경우 원하는 인증 방법을 기준으로 보안 비밀을 만듭니다.
none
을 인증 유형으로 사용한 경우 이 단계를 건너뛸 수 있습니다.보안 비밀은 다음 요구사항을 충족해야 합니다.
- RepoSync와 동일한 네임스페이스에 보안 비밀을 만듭니다.
- 보안 비밀의 이름은
repo-sync.yaml
에 정의된spec.git.secretRef
이름과 일치해야 합니다. - 보안 비밀의 공개 키를 Git 제공업체에 추가해야 합니다.
구성을 확인하려면 네임스페이스 범위 정보 소스에서 객체 중 하나에
kubectl get
을 사용합니다. 예를 들면 다음과 같습니다.kubectl get rolebindings -n NAMESPACE
네임스페이스 범위 소스를 둘 이상 구성해야 하는 경우 위 단계를 반복하면 됩니다.
Kubernetes API를 사용하여 정보 소스 제어
이 방법에서는 중앙 관리자가 다른 RootSync
객체의 선언을 다른 관리자에게 위임합니다. RepoSync
객체의 경우 중앙 관리자는 루트 정보 소스 네임스페이스만 선언하고 RepoSync
객체의 선언을 애플리케이션 운영자에 위임합니다.
2개 이상의 루트 정보 소스 제어
다른 관리자는 다음 작업을 완료하여 루트 정보 소스를 제어할 수 있습니다.
다음 매니페스트 중 하나를
root-sync.yaml
로 저장합니다. 구성에 대한 정보 소스에 해당하는 매니페스트 버전을 사용합니다.Git
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: git sourceFormat: ROOT_FORMAT git: repo: ROOT_REPOSITORY revision: ROOT_REVISION branch: ROOT_BRANCH dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME noSSLVerify: ROOT_NO_SSL_VERIFY caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
다음을 바꿉니다.
ROOT_SYNC_NAME
: RootSync 객체의 이름을 추가합니다.ROOT_FORMAT
:unstructured
를 추가하여 구조화되지 않은 저장소를 사용하거나hierarchy
를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은hierarchy
입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에unstructured
를 추가하는 것이 좋습니다.ROOT_REPOSITORY
: 루트 저장소로 사용할 Git 저장소의 URL을 추가합니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 필수 필드입니다.ROOT_REVISION
: 동기화할 Git 버전(태그 또는 해시)을 추가합니다. 이 필드는 선택사항이며 기본값은HEAD
입니다. 구성 동기화 버전 1.17.0부터는revision
필드에 브랜치 이름을 지정할 수도 있습니다. 버전 1.17.0 이상에서 해시를 사용하는 경우 축약된 양식이 아닌 전체 해시 양식을 사용해야 합니다.ROOT_BRANCH
: 동기화할 저장소의 브랜치를 추가합니다. 이 필드는 선택사항이며 기본값은master
입니다. 구성 동기화 버전 1.17.0부터는 간단히revision
필드를 사용하여 브랜치 이름을 지정하는 것이 좋습니다.revision
필드와branch
필드가 모두 지정된 경우revision
이branch
보다 우선 적용됩니다.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
입니다.ROOT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 보안 비밀의 공개 키를 Git 제공업체에 추가해야 합니다. 이 필드는 선택사항입니다.ROOT_NO_SSL_VERIFY
: SSL 인증서 확인을 중지하려면 이 필드를true
로 설정합니다. 기본값은false
입니다.ROOT_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Git 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.이 매니페스트는 Git를 소스로 사용하는
RootSync
객체를 만듭니다.OCI
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: oci sourceFormat: ROOT_FORMAT oci: image: ROOT_IMAGE dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
다음을 바꿉니다.
ROOT_SYNC_NAME
: RootSync 객체의 이름을 추가합니다.ROOT_FORMAT
:unstructured
를 추가하여 구조화되지 않은 저장소를 사용하거나hierarchy
를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은hierarchy
입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에unstructured
를 추가하는 것이 좋습니다.ROOT_IMAGE
: 루트 저장소로 사용할 OCI 이미지의 URL입니다(예:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
). 기본적으로 이미지는latest
태그에서 가져오지만 대신TAG
또는DIGEST
로 이미지를 가져올 수 있습니다.PACKAGE_NAME
에서TAG
또는DIGEST
를 지정합니다.TAG
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
DIGEST
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
ROOT_DIRECTORY
: 동기화하려는 구성이 포함된 루트 디렉터리에 저장소의 경로를 추가합니다. 이 필드는 선택사항이며 기본값은 저장소의 루트 디렉터리(/
)입니다.ROOT_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
ROOT_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.ROOT_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 OCI 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.
CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.이 매니페스트는 OCI 이미지를 소스로 사용하는
RootSync
객체를 만듭니다.Helm
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: helm sourceFormat: ROOT_FORMAT helm: repo: ROOT_HELM_REPOSITORY chart: HELM_CHART_NAME version: HELM_CHART_VERSION releaseName: HELM_RELEASE_NAME namespace: HELM_RELEASE_NAMESPACE values: foo: bar: VALUE_1 baz: - qux: VALUE_2 xyz: VALUE_3 includeCRDs: HELM_INCLUDE_CRDS auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
다음을 바꿉니다.
ROOT_SYNC_NAME
: RootSync 객체의 이름을 추가합니다.ROOT_FORMAT
:unstructured
를 추가하여 구조화되지 않은 저장소를 사용하거나hierarchy
를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은hierarchy
입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에unstructured
를 추가하는 것이 좋습니다.ROOT_HELM_REPOSITORY
: 루트 저장소로 사용할 Helm 저장소의 URL입니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 필수 필드입니다.HELM_CHART_NAME
: Helm 차트의 이름을 추가합니다. 필수 필드입니다.HELM_CHART_VERSION
: 차트의 버전입니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 최신 버전이 사용됩니다.HELM_RELEASE_NAME
: Helm 출시 버전의 이름입니다. 이 필드는 선택사항입니다.HELM_RELEASE_NAMESPACE
: 출시 버전의 대상 네임스페이스입니다. 템플릿에namespace: {{ .Release.Namespace }}
이 포함된 리소스의 네임스페이스만 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 기본 네임스페이스config-management-system
이 사용됩니다.HELM_INCLUDE_CRDS
: Helm 템플릿에서 CustomResourceDefinition도 생성하도록 하려면true
로 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않을 경우 기본값은false
이며 CRD가 생성되지 않습니다.VALUE
: 차트에 포함되는 기본값 대신 사용할 값입니다. 이 필드의 형식을 Helm 차트의 values.yaml 파일과 동일하게 지정합니다. 이 필드는 선택사항입니다.ROOT_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함token
: 사용자 이름과 비밀번호를 사용하여 비공개 Helm 저장소에 액세스합니다.gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
ROOT_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.ROOT_SECRET_NAME
:token
이ROOT_AUTH_TYPE
이면 보안 비밀 이름을 추가합니다. 이 필드는 선택사항입니다.ROOT_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Helm 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.
CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.이 매니페스트는 Helm을 소스로 사용하는
RootSync
객체를 만듭니다.변경사항을 적용합니다.
kubectl apply -f root-sync.yaml
두 개 이상의 루트 정보 소스를 구성해야 하는 경우 위 단계를 반복하면 됩니다.
네임스페이스 범위 정보 소스 제어
중앙 관리자 작업
중앙 관리자는 다음 작업을 완료합니다.
루트 정보 소스에서 네임스페이스 범위 소스의
namespace
구성을 선언합니다.# ROOT_REPO/namespaces/NAMESPACE/namespace.yaml apiVersion: v1 kind: Namespace metadata: name: NAMESPACE
NAMESPACE
를 네임스페이스 이름으로 바꿉니다.루트 정보 소스에서
RoleBinding
을 선언하여 애플리케이션 운영자에 권한을 부여합니다. RBAC 에스컬레이션 방지를 사용하여 애플리케이션 운영자가 나중에 이 역할 바인딩에서 부여하지 않은 권한으로 역할 바인딩을 적용할 수 없도록 합니다.RoleBinding을 선언하려면 다음 매니페스트를 만듭니다.
# ROOT_REPO/namespaces/NAMESPACE/operator-rolebinding.yaml kind: RoleBinding # Add RBAC escalation prevention apiVersion: rbac.authorization.k8s.io/v1 metadata: name: operator namespace: NAMESPACE subjects: - kind: User name: USERNAME apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: OPERATOR_ROLE apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
NAMESPACE
: 루트 정보 소스에서 만든 네임스페이스를 추가합니다.USERNAME
: 애플리케이션 운영자의 사용자 이름을 추가합니다.OPERATOR_ROLE
: 중앙 관리자로서OPERATOR_ROLE
을 설정하여 네임스페이스 소스에서 동기화할 수 있는 구성 유형을 적용할 수 있습니다. 다음 역할 중 하나를 선택할 수 있습니다.기본 ClusterRole:
admin
edit
자세한 내용은 사용자 대상 역할을 참조하세요.
루트 정보 소스에 선언된 사용자 정의 ClusterRole 또는 역할입니다. 이 역할은 세분화된 권한을 허용합니다.
루트 정보 소스에 대한 변경사항을 커밋합니다.
git add . git commit -m 'Setting up new namespace-scoped source of truth.' git push
애플리케이션 운영자 작업
애플리케이션 운영자는 다음 태스크를 완료하여 네임스페이스 범위 소스를 제어할 수 있습니다.
SERVICE_ACCOUNT_NAME
서비스 계정에 네임스페이스의 객체를 관리할 수 있는 권한을 부여하는RoleBinding
구성을 선언합니다.RepoSync
구성이 클러스터에 동기화되면 구성 동기화는 자동으로SERVICE_ACCOUNT_NAME
서비스 계정을 생성합니다.RoleBinding을 선언하려면 다음 매니페스트를 만듭니다.
# sync-rolebinding.yaml kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: syncs-repo namespace: NAMESPACE subjects: - kind: ServiceAccount name: SERVICE_ACCOUNT_NAME namespace: config-management-system roleRef: kind: ClusterRole name: RECONCILER_ROLE apiGroup: rbac.authorization.k8s.io
다음을 바꿉니다.
NAMESPACE
: 루트 정보 소스에서 만든 네임스페이스를 추가합니다.SERVICE_ACCOUNT_NAME
: 조정자의 서비스 계정 이름을 추가합니다. RepoSync 이름이repo-sync
이면SERVICE_ACCOUNT_NAME
이ns-reconciler-NAMESPACE
입니다. 그렇지 않은 경우ns-reconciler-NAMESPACE-REPO_SYNC_NAME
입니다.RECONCILER_ROLE
: 애플리케이션 운영자로서RECONCILER_ROLE
을 설정하여 네임스페이스 범위 소스에서 동기화할 수 있는 구성 유형을 적용할 수 있습니다. 중앙 관리자가 부여한 권한 집합만 추가로 제한할 수 있습니다. 따라서 이 역할은 이전 섹션에서 중앙 관리자가 이전에 선언한OPERATOR_ROLE
보다 많은 권한을 가질 수 없습니다.
RoleBinding 구성을 적용합니다.
kubectl apply -f sync-rolebinding.yaml
필요한 경우 원하는 인증 방법을 기준으로 보안 비밀을 만듭니다.
none
을 인증 유형으로 사용한 경우 이 단계를 건너뛸 수 있습니다.보안 비밀은 다음 요구사항을 충족해야 합니다.
- RepoSync와 동일한 네임스페이스에 보안 비밀을 만듭니다.
- 보안 비밀의 이름은
root-sync.yaml
에 정의된spec.git.secretRef
이름과 일치해야 합니다. - 보안 비밀의 공개 키를 Git 제공업체에 추가해야 합니다.
RepoSync
구성을 선언합니다.Git
#ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: git # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured git: repo: NAMESPACE_REPOSITORY revision: NAMESPACE_REVISION branch: NAMESPACE_BRANCH dir: "NAMESPACE_DIRECTORY" auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL secretRef: name: NAMESPACE_SECRET_NAME noSSLVerify: NAMESPACE_NO_SSL_VERIFY caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_REPOSITORY
: 네임스페이스 저장소로 사용할 Git 저장소의 URL을 추가합니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 프로토콜을 입력하지 않으면 URL이 HTTPS URL로 취급됩니다. 필수 필드입니다.NAMESPACE_REVISION
: 동기화할 Git 버전(태그 또는 해시)을 추가합니다. 이 필드는 선택사항이며 기본값은HEAD
입니다. 구성 동기화 버전 1.17.0부터는revision
필드에 브랜치 이름을 지정할 수도 있습니다. 버전 1.17.0 이상에서 해시를 사용하는 경우 축약된 양식이 아닌 전체 해시 양식을 사용해야 합니다.NAMESPACE_BRANCH
: 동기화할 저장소의 브랜치를 추가합니다. 이 필드는 선택사항이며 기본값은master
입니다. 구성 동기화 버전 1.17.0부터는 간단히revision
필드를 사용하여 브랜치 이름을 지정하는 것이 좋습니다.revision
필드와branch
필드가 모두 지정된 경우revision
이branch
보다 우선 적용됩니다.NAMESPACE_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함ssh
: SSH 키 쌍 사용cookiefile
:cookiefile
사용token
: 토큰 사용gcpserviceaccount
: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다.gcenode
: Google 서비스 계정을 사용하여 Cloud Source Repositories의 저장소에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.이러한 인증 유형에 대한 자세한 내용은 Git에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여를 참조하세요.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를NAMESPACE_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_SECRET_NAME
: 보안 비밀에 지정할 이름을 추가합니다. 이 필드는 선택사항입니다.NAMESPACE_NO_SSL_VERIFY
: SSL 인증서 확인을 중지하려면 이 필드를true
로 설정합니다. 기본값은false
입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Git 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명과
spec
필드에 추가할 수 있는 전체 필드 목록은 RepoSync 필드를 참조하세요.OCI
# ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: oci # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured oci: image: NAMESPACE_IMAGE dir: NAMESPACE_DIRECTORY auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_IMAGE
: 네임스페이스 소스로 사용할 OCI 이미지의 URL입니다(예:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
). 기본적으로 이미지는latest
태그에서 가져오지만 대신TAG
또는DIGEST
로 이미지를 가져올 수 있습니다.PACKAGE_NAME
에서TAG
또는DIGEST
를 지정합니다.TAG
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
DIGEST
로 가져오려면:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
NAMESPACE_DIRECTORY
: 동기화하려는 구성이 포함된 루트 디렉터리에 소스의 경로를 추가합니다. 이 필드는 선택사항이며 기본값은 소스의 루트 디렉터리(/
)입니다.NAMESPACE_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 OCI 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.Helm
# ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RepoSync metadata: name: REPO_SYNC_NAME namespace: NAMESPACE spec: sourceType: helm # Since this is for a namespace repository, the format is unstructured sourceFormat: unstructured helm: repo: NAMESPACE_REPOSITORY chart: HELM_CHART_NAME version: HELM_CHART_VERSION releaseName: HELM_RELEASE_NAME namespace: HELM_RELEASE_NAMESPACE values: foo: bar: VALUE_1 baz: - qux: VALUE_2 xyz: VALUE_3 includeCRDs: HELM_INCLUDE_CRDS auth: NAMESPACE_AUTH_TYPE gcpServiceAccountEmail: NAMESPACE_EMAIL secretRef: name: NAMESPACE_SECRET_NAME caCertSecretRef: name: NAMESPACE_CA_CERT_SECRET_NAME
다음을 바꿉니다.
REPO_SYNC_NAME
: RepoSync 객체의 이름을 추가합니다. 이름은 네임스페이스에서 고유해야 합니다.NAMESPACE
: 네임스페이스 이름을 추가합니다.NAMESPACE_REPOSITORY
: 루트 저장소로 사용할 Helm 저장소의 URL입니다. HTTPS 또는 SSH 프로토콜을 사용하여 URL을 입력할 수 있습니다. 예를 들어https://github.com/GoogleCloudPlatform/anthos-config-management-samples
는 HTTPS 프로토콜을 사용합니다. 필수 필드입니다.HELM_CHART_NAME
: Helm 차트의 이름을 추가합니다. 필수 필드입니다.HELM_CHART_VERSION
: 차트의 버전입니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 최신 버전이 사용됩니다.HELM_RELEASE_NAME
: Helm 출시 버전의 이름입니다. 이 필드는 선택사항입니다.HELM_RELEASE_NAMESPACE
: 출시 버전의 대상 네임스페이스입니다. 템플릿에namespace: {{ .Release.Namespace }}
이 포함된 리소스의 네임스페이스만 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않으면 기본 네임스페이스config-management-system
이 사용됩니다.HELM_INCLUDE_CRDS
: Helm 템플릿에서 CustomResourceDefinition도 생성하도록 하려면true
로 설정합니다. 이 필드는 선택사항입니다. 값을 지정하지 않을 경우 기본값은false
이며 CRD가 생성되지 않습니다.VALUE
: 차트에 포함되는 기본값 대신 사용할 값입니다. 이 필드의 형식을 Helm 차트의 values.yaml 파일과 동일하게 지정합니다. 이 필드는 선택사항입니다.ROOT_AUTH_TYPE
: 다음 인증 유형 중 하나를 추가합니다.none
: 인증 사용 안함token
: 사용자 이름과 비밀번호를 사용하여 비공개 Helm 저장소에 액세스합니다.gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. 워크로드 아이덴티티가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
필수 필드입니다.
NAMESPACE_EMAIL
:gcpserviceaccount
를ROOT_AUTH_TYPE
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.NAMESPACE_SECRET_NAME
:token
이ROOT_AUTH_TYPE
이면 보안 비밀 이름을 추가합니다. 이 필드는 선택사항입니다.NAMESPACE_CA_CERT_SECRET_NAME
: 보안 비밀의 이름을 추가합니다. 이 필드를 설정하면 Helm 제공업체가 이 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다. 보안 비밀에는cert
라는 키 아래에 CA 인증서가 포함되어야 합니다. 이 필드는 선택사항입니다.CA 인증서의 보안 비밀 객체를 구성하는 방법에 대한 자세한 내용은 인증 기관의 작업자 구성을 참조하세요.
필드에 대한 설명 및
spec
필드에 추가할 수 있는 전체 필드 목록은 RootSync 필드를 참조하세요.RepoSync
구성을 적용합니다.kubectl apply -f repo-sync.yaml
구성을 확인하려면 네임스페이스 범위 소스의 객체 중 하나에서
kubectl get
을 사용합니다. 예를 들면 다음과 같습니다.kubectl get rolebindings -n NAMESPACE
여러 네임스페이스 범위 정보 소스를 구성해야 하는 경우 위 단계를 반복하면 됩니다.
정보 소스의 동기화 상태 확인
nomos status
명령어를 사용하여 정보 소스의 동기화 상태를 조사할 수 있습니다.
nomos status
다음과 비슷한 출력이 표시됩니다.
my_managed_cluster-1
--------------------
<root> git@github.com:foo-corp/acme/admin@main
SYNCED f52a11e4
--------------------
bookstore git@github.com:foo-corp/acme/bookstore@v1
SYNCED 34d1a8c8
이 출력 예시에서 네임스페이스 범위 소스(이 경우에는 Git 저장소)는 bookstore
라는 네임스페이스에 대해 구성됩니다.
RootSync 설치 확인
RootSync 객체를 만들면 구성 동기화에서 root-reconciler
프리픽스가 있는 조정자를 만듭니다. 조정자는 배포로 배포되는 포드입니다.
정보 소스의 매니페스트를 클러스터에 동기화합니다.
root-reconciler 배포의 상태를 확인하면 RootSync 객체가 올바르게 작동하는지 확인할 수 있습니다.
kubectl get -n config-management-system deployment \
-l configsync.gke.io/sync-name=ROOT_SYNC_NAME
ROOT_SYNC_NAME
을 RootSync 이름으로 바꿉니다.
다음과 비슷한 출력이 표시됩니다.
NAME READY UP-TO-DATE AVAILABLE AGE
root-reconciler 1/1 1 1 3h42m
RootSync 객체의 상태를 확인하는 추가 방법은 RootSync 및 RepoSync 객체 모니터링을 참조하세요.
RepoSync 설치 확인
RepoSync 객체를 만들면 구성 동기화에서 ns-reconciler-NAMESPACE
프리픽스가 있는 조정자를 만듭니다. 여기서 NAMESPACE
는 RepoSync 객체를 만든 네임스페이스입니다.
네임스페이스 조정자 배포의 상태를 확인하면 RepoSync 객체가 올바르게 작동하는지 확인할 수 있습니다.
kubectl get -n config-management-system deployment \
-l configsync.gke.io/sync-name=REPO_SYNC_NAME \
-l configsync.gke.io/sync-namespace=NAMESPACE
REPO_SYNC_NAME
을 RepoSync 이름으로 바꾸고 NAMESPACE
를 네임스페이스 범위 정보 소스를 만든 네임스페이스로 바꿉니다.
RepoSync 객체 상태를 확인하는 추가 방법은 RootSync 및 RepoSync 객체 탐색을 참조하세요.
정보 소스 삭제
중앙 제어 방식 또는 Kubernetes API 방식 탭을 선택하여 관련 안내를 확인합니다.
중앙 제어 방식
루트 정보 소스의 정보 소스 제어 방식을 사용한 경우에는 중앙 관리자가 다음 두 단계에 따라 정보 소스를 삭제할 수 있습니다.
RootSync 및 RepoSync 객체를 통해 관리되는 리소스를 삭제하거나 유지할지 여부를 결정합니다.
RootSync 또는 RepoSync 객체가 관리하는 모든 리소스를 삭제하려면 빈 소스로 RootSync 또는 RepoSync 객체를 동기화합니다. 구성이 없는 GitHub 저장소를 예로 들 수 있습니다. RootSync 또는 RepoSync 객체에 다른 RootSync 또는 RepoSync 객체가 포함된 경우 내부 RootSync 또는 RepoSync가 먼저 빈 Git 저장소에 동기화되어야 합니다.
웹훅을 사용 설정했고 리소스를 유지하려면 폐기된 리소스에 대한 드리프트 방지를 사용 중지합니다. 웹훅을 사용 설정하지 않았으면 리소스 유지를 위해 추가 단계를 수행할 필요가 없습니다.
정보 소스에서 RootSync 또는 RepoSync 객체를 삭제합니다.
Kubernetes API 방식
Kubernetes API를 사용한 네임스페이스 범위 소스 제어 방식을 사용한 경우 애플리케이션 운영자가 다음 단계에 따라 네임스페이스 범위 정보 소스를 삭제할 수 있습니다.
RootSync 및 RepoSync 객체를 통해 관리되는 리소스를 삭제하거나 유지할지 여부를 결정합니다.
RootSync 또는 RepoSync 객체가 관리하는 모든 리소스를 삭제하려면 빈 소스로 RootSync 또는 RepoSync 객체를 동기화합니다. 구성이 없는 GitHub 저장소를 예로 들 수 있습니다. RootSync 또는 RepoSync 객체에 다른 RootSync 또는 RepoSync 객체가 포함된 경우 내부 RootSync 또는 RepoSync가 먼저 빈 Git 저장소에 동기화되어야 합니다.
웹훅을 사용 설정했고 리소스를 유지하려면 폐기된 리소스에 대한 드리프트 방지를 사용 중지합니다. 웹훅을 사용 설정하지 않았으면 리소스 유지를 위해 추가 단계를 수행할 필요가 없습니다.
다음 명령어를 실행하여 RootSync 또는 RepoSync 객체를 삭제합니다.
kubectl delete -f FILE_NAME
FILE_NAME
을 RootSync 또는 RepoSync 구성 파일의 이름으로 바꿉니다. 예를 들면root-sync.yaml
입니다.
다음 단계
- 네임스페이스 범위 정보 소스에서 구성 드리프트를 방지하는 방법 알아보기
- RootSync 및 RepoSync 객체를 모니터링하는 방법 알아보기
- 정보 소스를 여러 정보 소스로 분할하는 방법 알아보기