구성 동기화를 사용하면 정보 소스에 저장된 구성 파일로 Kubernetes 리소스를 관리할 수 있습니다. 구성 동기화는 Git 저장소, OCI 이미지, Helm 차트를 정보 소스로 지원합니다. 이 페이지에서는 루트 저장소에서 동기화되도록 구성 동기화를 사용 설정하고 구성하는 방법을 보여줍니다. 구성 동기화는 Google Kubernetes Engine(GKE) Enterprise 버전에서 사용할 수 있습니다.
Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치할 때는 RootSync
및 RepoSync
API가 기본적으로 사용 설정됩니다. 이렇게 하면 여러 저장소에서 동기화하고 Kustomize 및 Helm 구성을 동기화하는 등의 추가 기능을 제공합니다.
시작하기 전에
구성 동기화를 설치하려면 먼저 환경을 준비하고, 클러스터 요구사항을 충족하는지 확인하고, 올바른 사용자 역할을 부여합니다.
로컬 환경 준비
다음 작업을 완료하여 로컬 환경을 준비합니다.
- 정보 소스를 만들거나 정보 소스를 이용할 수 있는지 확인합니다. 여기에서 구성 동기화가 동기화하는 구성을 추가합니다. 구성과 정보 소스를 설정하는 방법에 대한 자세한 내용은 다음 가이드 중 하나를 참조하세요.
gcloud
및nomos
명령어를 제공하는 Google Cloud CLI를 설치 및 초기화합니다. Cloud Shell을 사용하는 경우 Google Cloud CLI가 사전 설치됩니다. 이전에 Google Cloud CLI를 설치한 경우gcloud components update
를 실행하여 최신 버전을 가져옵니다.
클러스터 요구사항
구성 동기화를 사용하려면 클러스터가 다음 요구사항을 충족해야 합니다.Google Kubernetes Engine(GKE) Enterprise 버전이 지원되는 플랫폼 및 버전이어야 합니다.
(선택사항) GKE 클러스터를 사용하는 경우 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있는지 확인합니다. Autopilot 클러스터에는 기본적으로 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있습니다.
올바른 측정항목 쓰기 권한이 있음 따라서 구성 동기화가 Cloud Monitoring에 측정항목을 전송할 수 있습니다.
구성 동기화 버전을 자동 업그레이드하려면 GKE 클러스터가 출시 채널에 등록되어 있어야 합니다. 구성 동기화는 GKE 출시 채널을 사용하지 않는 클러스터를 안정화 버전 출시 채널을 사용하는 것으로 취급합니다.
비공개 GKE 클러스터를 사용하려면 비공개 GKE 노드에서 이그레스를 허용하도록 Cloud NAT를 구성합니다. 자세한 내용은 GKE 설정 예시를 참조하세요. 또는 Google API 및 서비스에서 사용되는 외부 IP 주소 집합에 연결하도록 비공개 Google 액세스를 사용 설정할 수 있습니다.
구성 동기화에 정보 소스에 대한 액세스 권한을 부여할 때 IAM 서비스 계정을 사용하려면 Cloud Source Repositories의 클러스터에 있는 노드에 대한 액세스 범위에 읽기 전용 범위를 포함해야 합니다.
클러스터 생성 시 지정된
--scopes
목록에cloud-source-repos-ro
를 포함하거나 클러스터 생성 시cloud-platform
범위를 사용하여 읽기 전용 범위를 추가할 수 있습니다. 예를 들면 다음과 같습니다.gcloud container clusters create CLUSTER_NAME --scopes=cloud-platform
노드 풀을 만든 후에는 액세스 범위를 수정할 수 없습니다. 그러나 동일한 클러스터를 사용하는 동안에 액세스 범위가 적절한 새 노드 풀을 만들 수 있습니다. 기본
gke-default
범위에는cloud-source-repos-ro
가 포함되지 않습니다.불필요한 트래픽을 차단하는 엄격한 VPC 방화벽 요구사항이 있는 경우 방화벽 규칙을 만들어 공개 GKE 클러스터에서 다음 트래픽을 허용해야 합니다.
TCP: 포트 53 및 443에서 인그레스 및 이그레스 허용
UDP: 포트 53에서 이그레스 허용
이러한 규칙을 포함하지 않으면 구성 동기화가 올바르게 동기화되지 않고
nomos status
에서 다음 오류를 보고합니다.Error: KNV2004: unable to sync repo Error in the git-sync container
비공개 GKE 클러스터를 사용하는 경우 이 단계를 건너뛸 수 있습니다.
구성 동기화는
amd64
노드 풀에서 실행되어야 합니다. 구성 동기화 백엔드 구성요소 컨테이너 이미지는amd64
머신 아키텍처에서만 빌드, 배포, 테스트됩니다. 구성 동기화 구성요소가 Arm 노드에 예약된 경우exec format
오류가 발생하고 비정상 종료됩니다.클러스터에 Arm 노드가 있으면 클러스터에 하나 이상의 amd64 노드를 추가하고 GKE 클러스터를 사용하지 않는 경우 taint를 arm64 노드에 추가하여 특정 톨러레이션(toleration) 없이 arm64 노드에 포드를 예약하지 않도록 합니다. GKE Arm 노드에는 이미 기본 taint가 있으므로 추가할 필요가 없습니다.
또한 클러스터가 Autopilot 클러스터이면 Autopilot이 다음 규칙을 충족하도록 컨테이너 리소스 요구사항을 조정합니다.
- 리소스 제한은 리소스 요청과 동일하게 설정됩니다.
- 포드 vCPU는 0.25개 단위(반올림)로 제공됩니다.
- 최솟값은 250milliCPU(mCPU)입니다.
- vCPU에 대한 메모리 비율(GiB 단위)은 vCPU 1~6.5개 범위 이내에 있어야 합니다.
이러한 규칙으로 인해 Autopilot 클러스터의 경우 구성 동기화는 다음을 수행합니다.
- 일치 요청에 대한 사용자 지정 리소스 재정의 한도를 조정합니다.
- 주석에 선언된 조정 출력보다 높은 리소스 요청이 하나 이상 있거나 주석에 선언된 해당 입력보다 낮은 리소스 요청이 하나 이상 있는 경우에만 재정의를 적용합니다.
클러스터 준비
적합한 클러스터를 만든 후 다음 단계를 완료합니다.
Google Cloud CLI를 사용하여 구성 동기화를 구성하거나 Google Cloud 외부의 클러스터를 사용하려는 경우 GKE 클러스터 또는 Google Cloud 외부의 클러스터가 지금 Fleet에 등록되어 있는지 확인합니다. Google Cloud 콘솔을 사용하려면 구성 동기화를 구성할 때 GKE 클러스터를 등록할 수 있습니다.
구성 동기화 설치
다음 섹션에서는 구성 동기화에 다음 정보 소스 중 하나에 대한 액세스 권한을 부여합니다.
액세스 권한을 부여한 후에 구성 동기화를 구성할 수 있습니다.
Git에 대한 액세스 권한 부여
구성 동기화에는 저장소에 커밋된 구성을 읽고 이를 클러스터에 적용할 수 있도록 Git 저장소에 대한 읽기 전용 액세스 권한이 필요합니다.
저장소에 읽기 전용 액세스에 대한 인증이 필요하지 않으면 계속 구성 동기화를 구성하고 none
을 인증 유형으로 사용할 수 있습니다. 예를 들어 로그인하지 않고 웹 인터페이스를 사용하여 저장소를 탐색하거나 git
clone
을 사용하여 사용자 인증 정보를 제공하지 않거나 저장된 사용자 인증 정보를 사용하지 않고 저장소의 클론을 로컬로 만들 수 있는 경우에는 인증할 필요가 없습니다. 이 경우 보안 비밀을 만들 필요가 없습니다.
하지만 대부분의 사용자는 저장소에 대한 읽기 액세스가 제한되므로 사용자 인증 정보를 만들어야 합니다. 사용자 인증 정보가 필요한 경우 등록된 클러스터마다 git-creds
보안 비밀에 저장됩니다(Google 서비스 계정을 사용하지 않는 경우). 보안 비밀의 이름은 고정 값이므로 git-creds
로 지정해야 합니다.
구성 동기화는 다음과 같은 인증 메커니즘을 지원합니다.
- SSH 키 쌍(
ssh
) - Cookiefile(
cookiefile
) - 토큰(
token
) - Google 서비스 계정(
gcpserviceaccount
) - Compute Engine 기본 서비스 계정(
gcenode
)
저장소에서 무엇을 지원하는지에 따라 선택할 수 있는 메커니즘이 다릅니다. 일반적으로 SSH 키 쌍을 사용하는 것이 좋습니다. GitHub와 Bitbucket 모두 SSH 키 쌍 사용을 지원합니다. 하지만 Cloud Source Repositories에서 저장소를 사용하는 경우에는 프로세스가 더 간단하므로 Google 서비스 계정을 대신 사용하는 것이 좋습니다. 조직에서 저장소를 호스팅하고 지원되는 인증 방법을 모르는 경우 관리자에게 문의하세요.
Cloud Source Repositories의 저장소를 구성 동기화 저장소로 사용하려면 다음 단계를 완료하여 Cloud Source Repositories URL을 가져옵니다.
모든 저장소를 나열합니다.
gcloud source repos list
출력에서 사용하려는 저장소의 URL을 복사합니다. 예를 들면 다음과 같습니다.
REPO_NAME PROJECT_ID URL my-repo my-project https://source.developers.google.com/p/my-project/r/my-repo-csr
다음 섹션에서 구성 동기화를 구성할 때 이 URL을 사용해야 합니다. Google Cloud 콘솔을 사용하여 구성 동기화를 구성하는 경우 URL 필드에 URL을 추가합니다. Google Cloud CLI를 사용하여 구성 동기화를 구성하는 경우 구성 파일의
syncRepo
필드에 URL을 추가합니다.
SSH 키 쌍
SSH 키 쌍은 공개 키 파일과 비공개 키 파일로 구성됩니다. 일반적으로 공개 키에는 .pub
확장자가 있습니다.
SSH 키 쌍을 사용하려면 다음 단계를 완료하세요.
구성 동기화가 Git 저장소에 인증할 수 있도록 SSH 키 쌍을 만듭니다. 이 단계는 저장소를 클론하거나 읽기 위해 저장소에 인증해야 할 때 필요합니다. 보안 관리자가 키 쌍을 제공하는 경우에는 이 단계를 건너뛰세요. 보안 및 규정 준수 요구사항에 따라 모든 클러스터에 단일 키 쌍을 사용하거나 클러스터별로 키 쌍을 사용할 수 있습니다.
다음 명령어는 4096비트 RSA 키를 만듭니다. 이보다 낮은 값은 권장되지 않습니다.
ssh-keygen -t rsa -b 4096 \ -C "GIT_REPOSITORY_USERNAME" \ -N '' \ -f /path/to/KEYPAIR_FILENAME
다음을 바꿉니다.
GIT_REPOSITORY_USERNAME
: 구성 동기화가 저장소에 인증하기 위해 사용할 사용자 이름입니다./path/to/KEYPAIR_FILENAME
: 키 쌍의 경로입니다.
GitHub와 같은 타사 Git 저장소 호스트를 사용하거나 Cloud Source Repositories에서 서비스 계정을 사용하려는 경우 별도의 계정을 사용하는 것이 좋습니다.
저장소가 새로 생성된 공개 키를 인식하도록 구성합니다. Git 호스팅 업체의 문서를 참조하세요. 편의를 위해 다음과 같이 자주 사용되는 Git 호스팅 업체용 안내가 포함되어 있습니다.
- Cloud Source Repositories
- Bitbucket
- GitHub 별도의 배포 키를 만들어 단일 GitHub 저장소에 대한 읽기 전용 액세스 권한을 제공하는 것이 좋습니다.
- GitLab
클러스터의 새 보안 비밀에 비공개 키를 추가합니다.
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=ssh=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
을 비공개 키 이름(.pub
서픽스가 없는 이름)으로 바꿉니다.(권장) SSH 인증을 사용하여 알려진 호스트 확인을 구성하려면
git_creds
보안 비밀의data.known_hosts
필드에 알려진 호스트 키를 추가하면 됩니다.known_hosts
검사를 중지하려면 보안 비밀에서known_hosts
필드를 삭제하면 됩니다. 알려진 호스트 키를 추가하려면 다음을 실행하세요.kubectl edit secret git-creds \ --namespace=config-management-system
그런 다음
data
에서 알려진 호스트 항목을 추가합니다.known_hosts: KNOWN_HOSTS_KEY
로컬 디스크에서 비공개 키를 삭제하거나 키를 보호합니다.
구성 동기화를 구성하고 Git 저장소의 URL을 추가할 때 SSH 프로토콜을 사용합니다. Cloud Source Repositories에서 저장소를 사용하는 경우 URL을 입력할 때 다음 형식을 사용해야 합니다.
ssh://EMAIL@source.developers.google.com:2022/p/PROJECT_ID/r/REPO_NAME
다음을 바꿉니다.
EMAIL
: Google Cloud 사용자 이름입니다.PROJECT_ID
: 저장소가 있는 Google Cloud 프로젝트의 ID입니다.REPO_NAME
: 저장소의 이름입니다.
Cookiefile
cookiefile
을 획득하는 절차는 저장소 구성에 따라 다릅니다. 예시를 보려면 Cloud Source Repositories 문서의 정적 사용자 인증 정보 생성을 참조하세요.
사용자 인증 정보는 보통 홈 디렉터리의 .gitcookies
파일에 저장되거나 보안 관리자를 통해 제공받을 수 있습니다.
cookiefile
을 사용하려면 다음 단계를 완료하세요.
cookiefile
을 만들고 획득한 후에는 클러스터의 새 보안 비밀에 추가합니다.HTTPS 프록시를 사용하지 않는 경우 다음 명령어를 사용하여 보안 비밀을 만듭니다.
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=cookie_file=/path/to/COOKIEFILE
HTTPS 프록시를 사용해야 할 경우 다음 명령어를 실행해서
cookiefile
과 함께 보안 비밀에 추가합니다.kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=cookie_file=/path/to/COOKIEFILE \ --from-literal=https_proxy=HTTPS_PROXY_URL
다음을 바꿉니다.
/path/to/COOKIEFILE
: 적절한 경로 및 파일 이름입니다.HTTPS_PROXY_URL
: Git 저장소와 통신할 때 사용하는 HTTPS 프록시의 URL입니다.
cookiefile
콘텐츠가 로컬에서 계속 필요하면 이 콘텐츠를 보호합니다. 그렇지 않으면 삭제합니다.
토큰
조직에서 SSH 키 사용을 허용하지 않으면 토큰을 대신 사용하는 것이 좋습니다. 구성 동기화를 사용하면 GitHub의 개인 액세스 토큰(PAT), GiLab의 PAT 또는 배포 키, Bitbucket의 앱 비밀번호를 토큰으로 사용할 수 있습니다.
토큰을 사용하여 보안 비밀을 만들려면 다음 단계를 완료합니다.
GitHub, GitLab, Bitbucket을 사용하여 토큰을 만듭니다.
- GitHub: PAT를 만듭니다. 비공개 저장소에서 읽을 수 있도록 토큰에
repo
범위를 부여합니다. PAT를 GitHub 계정에 결합하므로 머신 사용자를 만들고 PAT를 머신 사용자에게 결합하는 것도 좋습니다. - GitLab: PAT를 만들거나 배포 토큰을 만듭니다.
- Bitbucket: 앱 비밀번호를 만듭니다.
- GitHub: PAT를 만듭니다. 비공개 저장소에서 읽을 수 있도록 토큰에
토큰을 만들고 얻은 후에는 클러스터의 새 보안 비밀에 추가합니다.
HTTPS 프록시를 사용하지 않는 경우 다음 명령어를 사용하여 보안 비밀을 만듭니다.
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace="config-management-system" \ --from-literal=username=USERNAME \ --from-literal=token=TOKEN
다음을 바꿉니다.
USERNAME
: 사용할 사용자 이름입니다.TOKEN
: 이전 단계에서 만든 토큰입니다.
HTTPS 프록시를 사용해야 할 경우 다음 명령어를 실행해서
username
및token
과 함께 보안 비밀에 추가합니다.kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-literal=username=USERNAME \ --from-literal=token=TOKEN \ --from-literal=https_proxy=HTTPS_PROXY_URL
다음을 바꿉니다.
USERNAME
: 사용할 사용자 이름입니다.TOKEN
: 이전 단계에서 만든 토큰입니다.HTTPS_PROXY_URL
: Git 저장소와 통신할 때 사용하는 HTTPS 프록시의 URL입니다.
토큰이 로컬에서 계속 필요하면 토큰을 보호합니다. 그렇지 않으면 삭제합니다.
Google 서비스 계정
저장소가 Cloud Source Repositories에 있고 클러스터에서 GKE용 GKE 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 Google 서비스 계정을 사용하여 구성 동기화에 관리형 클러스터와 동일한 프로젝트에 있는 저장소에 대한 액세스 권한을 부여할 수 있습니다.
아직 서비스 계정이 없으면 서비스 계정을 만듭니다.
Cloud Source Repositories 리더(
roles/source.reader
) IAM 역할을 Google 서비스 계정에 부여합니다. Cloud Source Repositories 역할 및 권한에 대한 자세한 내용은 저장소를 볼 수 있는 권한 부여를 참조하세요.프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/source.reader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.
gcloud source repos set-iam-policy REPOSITORY POLICY_FILE --project=PROJECT_ID
Google Cloud 콘솔을 사용하여 구성 동기화를 구성하는 경우 GKE용 워크로드 아이덴티티 제휴를 인증 유형으로 선택한 후 서비스 계정 이메일을 추가합니다.
Google Cloud CLI를 사용하여 구성 동기화를 구성하는 경우
gcpserviceaccount
를secretType
으로 추가한 후 서비스 계정 이메일을gcpServiceAccountEmail
에 추가합니다.구성 동기화를 구성한 후, Kubernetes 서비스 계정과 Google 서비스 계정 간에 IAM 정책 바인딩을 만듭니다. 구성 동기화를 처음 구성할 때까지는 Kubernetes 서비스 계정이 생성되지 않습니다.
Fleet에 등록된 클러스터를 사용하는 경우 Fleet당 한 번만 정책 바인딩을 만들면 됩니다. Fleet에 등록된 모든 클러스터는 같은 GKE용 워크로드 아이덴티티 제휴 풀을 공유합니다. Fleet의 동일성 개념에 따라 IAM 정책을 한 클러스터의 Kubernetes 서비스 계정에 추가하면 동일한 Fleet에 있는 다른 클러스터의 동일한 네임스페이스에 있는 Kubernetes 서비스 계정도 동일한 IAM 정책을 받습니다.
이 바인딩을 사용하면 구성 동기화 Kubernetes 서비스 계정이 Google 서비스 계정 역할을 합니다.
gcloud iam service-accounts add-iam-policy-binding \ GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 조직의 프로젝트 ID입니다.FLEET_HOST_PROJECT_ID
: GKE용 GKE 워크로드 아이덴티티 제휴를 사용하는 경우PROJECT_ID
와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 클러스터가 등록된 Fleet의 프로젝트 ID입니다.GSA_NAME
: Artifact Registry에 연결하는 데 사용할 커스텀 Google 서비스 계정입니다. 서비스 계정에는 Artifact Registry 리더(roles/artifactregistry.reader
) IAM 역할이 있어야 합니다.KSA_NAME
: 조정자의 Kubernetes 서비스 계정입니다.- 루트 저장소의 경우
RootSync
이름이root-sync
이면root-reconciler
를 사용합니다. 그렇지 않은 경우root-reconciler-ROOT_SYNC_NAME
을 사용하세요. Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치하면 구성 동기화는root-sync
라는 RootSync 객체를 자동으로 만듭니다.
- 루트 저장소의 경우
REPOSITORY
: 저장소의 이름입니다.POLICY_FILE
: Identity and Access Management 정책이 포함된 JSON 또는 YAML 파일입니다.
Compute Engine 기본 서비스 계정
저장소가 Cloud Source Repositories에 있고 클러스터가 GKE용 워크로드 아이덴티티 제휴가 중지된 GKE이면 gcenode
를 인증 유형으로 사용할 수 있습니다.
Google Cloud 콘솔을 사용하여 구성 동기화를 구성하는 경우 Google Cloud Repository를 인증 유형으로 선택합니다.
Google Cloud CLI를 사용하여 구성 동기화를 구성하는 경우 gcenode
를 secretType
으로 추가하세요.
Google Cloud Repository 또는 gcenode
를 선택하면 Compute Engine 기본 서비스 계정을 사용할 수 있습니다. Compute Engine 기본 서비스 계정에 Cloud Source Repositories 리더(roles/source.reader
) IAM 역할을 부여해야 합니다. Cloud Source Repositories 역할 및 권한에 대한 자세한 내용은 저장소를 볼 수 있는 권한 부여를 참조하세요.
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/source.reader \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
PROJECT_ID
를 조직의 프로젝트 ID로 바꾸고 PROJECT_NUMBER
를 조직의 프로젝트 번호로 바꿉니다.
구성 동기화에 OCI에 대한 읽기 전용 액세스 권한 부여
구성 동기화는 이미지에 포함된 구성을 읽고 이를 클러스터에 적용할 수 있도록 Artifact Registry에 저장된 OCI 이미지에 대한 읽기 전용 액세스 권한이 필요합니다.
이미지에 읽기 전용 액세스에 대한 인증이 필요하지 않으면 계속 구성 동기화를 구성하고 none
을 인증 유형으로 사용할 수 있습니다. 예를 들어 이미지가 공개이고 인터넷에서 누구나 액세스할 수 있으면 인증이 필요하지 않습니다.
하지만 대부분의 사용자는 제한된 이미지에 액세스하기 위해 사용자 인증 정보를 만들어야 합니다. 구성 동기화는 다음과 같은 인증 메커니즘을 지원합니다.
- Kubernetes 서비스 계정(
k8sserviceaccount
) - Google 서비스 계정(
gcpserviceaccount
) Compute Engine 기본 서비스 계정(
gcenode
)
Kubernetes 서비스 계정
Artifact Registry에 OCI 이미지를 저장하고 클러스터에서 GKE용 GKE 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 버전 1.17.2 이상에서 k8sserviceaccount
를 인증 유형으로 사용할 수 있습니다. 이 옵션은 간소화된 구성 프로세스로 인해 gcpserviceaccount
보다 권장됩니다.
GKE용 워크로드 아이덴티티 제휴 풀이 있는 Kubernetes 서비스 계정에 Artifact Registry 리더(
roles/artifactregistry.reader
) IAM 역할을 부여합니다. Artifact Registry 역할 및 권한에 대한 자세한 내용은 Artifact Registry의 역할 및 권한 구성을 참조하세요.프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 조직의 프로젝트 ID입니다.FLEET_HOST_PROJECT_ID
: GKE용 GKE 워크로드 아이덴티티 제휴를 사용하는 경우PROJECT_ID
와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 클러스터가 등록된 Fleet의 프로젝트 ID입니다.KSA_NAME
: 조정자의 Kubernetes 서비스 계정입니다.- 루트 저장소의 경우
RootSync
이름이root-sync
이면root-reconciler
를 사용합니다. 그렇지 않은 경우root-reconciler-ROOT_SYNC_NAME
을 사용하세요. Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치하면 구성 동기화는root-sync
라는 RootSync 객체를 자동으로 만듭니다.
- 루트 저장소의 경우
REPOSITORY
: 저장소 ID입니다.LOCATION
: 저장소의 리전 또는 멀티 리전 위치입니다.
Google 서비스 계정
Artifact Registry에 OCI 이미지를 저장하고 클러스터에서 GKE용 GKE 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 gcpserviceaccount
를 인증 유형으로 사용할 수 있습니다. 버전 1.17.2부터는 대신 k8sserviceaccount
를 사용하는 것이 좋습니다. 이 옵션을 사용하면 Google 서비스 계정 및 연결된 IAM 정책 바인딩을 만드는 추가 단계가 필요하지 않습니다.
아직 서비스 계정이 없으면 서비스 계정을 만듭니다.
Artifact Registry 리더(
roles/artifactregistry.reader
) IAM 역할을 Google 서비스 계정에 부여합니다. Artifact Registry 역할 및 권한에 대한 자세한 내용은 Artifact Registry의 역할 및 권한 구성을 참조하세요.프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --project=PROJECT_ID
다음 명령어를 실행하여 Kubernetes 서비스 계정과 Google 서비스 계정 사이에 IAM 정책 바인딩을 만듭니다.
gcloud iam service-accounts add-iam-policy-binding GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 조직의 프로젝트 ID입니다.FLEET_HOST_PROJECT_ID
: GKE용 GKE 워크로드 아이덴티티 제휴를 사용하는 경우PROJECT_ID
와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 클러스터가 등록된 Fleet의 프로젝트 ID입니다.GSA_NAME
: Artifact Registry에 연결하는 데 사용할 커스텀 Google 서비스 계정입니다. 서비스 계정에는 Artifact Registry 리더(roles/artifactregistry.reader
) IAM 역할이 있어야 합니다.KSA_NAME
: 조정자의 Kubernetes 서비스 계정입니다.- 루트 저장소의 경우
RootSync
이름이root-sync
이면root-reconciler
를 사용합니다. 그렇지 않은 경우root-reconciler-ROOT_SYNC_NAME
을 사용하세요. Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치하면 구성 동기화는root-sync
라는 RootSync 객체를 자동으로 만듭니다.
- 루트 저장소의 경우
REPOSITORY
: 저장소 ID입니다.LOCATION
: 저장소의 리전 또는 멀티 리전 위치입니다.
Compute Engine 기본 서비스 계정
Artifact Registry에 Helm 차트를 저장하고 클러스터가 GKE용 워크로드 아이덴티티 제휴가 중지된 GKE이면 gcenode
를 인증 유형으로 사용할 수 있습니다.
구성 동기화는 Compute Engine 기본 서비스 계정을 사용합니다.
Compute Engine 기본 서비스 계정에 Artifact Registry에 대한 읽기 액세스를 부여해야 합니다.
다음 명령어를 실행하여 Compute Engine 서비스 계정에 Artifact Registry에 대한 읽기 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.reader
PROJECT_ID
를 조직의 프로젝트 ID로 바꾸고PROJECT_NUMBER
를 조직의 프로젝트 번호로 바꿉니다.
구성 동기화에 Helm에 대한 읽기 전용 액세스 권한 부여
구성 동기화에는 저장소에서 Helm 차트를 읽고 이를 클러스터에 설치할 수 있도록 Helm 저장소에 대한 읽기 전용 액세스 권한이 필요합니다.
저장소에 읽기 전용 액세스에 대한 인증이 필요하지 않으면 계속 구성 동기화를 구성하고 none
을 인증 유형으로 사용할 수 있습니다. 예를 들어 Helm 저장소가 공개 상태이고 인터넷의 모든 사용자가 액세스할 수 있으면 인증할 필요가 없습니다.
하지만 대부분의 사용자는 비공개 Helm 저장소에 액세스하기 위해 사용자 인증 정보를 만들어야 합니다. 구성 동기화는 다음과 같은 인증 메커니즘을 지원합니다.
- 토큰(
token
) - Kubernetes 서비스 계정(
k8sserviceaccount
) - Google 서비스 계정(
gcpserviceaccount
) - Compute Engine 기본 서비스 계정(
gcenode
)
토큰
Helm 저장소 사용자 이름과 비밀번호로 보안 비밀을 만듭니다.
kubectl create secret generic SECRET_NAME \
--namespace=config-management-system \
--from-literal=username=USERNAME \
--from-literal=password=PASSWORD
다음을 바꿉니다.
SECRET_NAME
: 보안 비밀에 지정할 이름입니다.USERNAME
: Helm 저장소 사용자 이름입니다.PASSWORD
: Helm 저장소 비밀번호입니다.
ConfigManagement Operator를 구성할 때 spec.helm.secretRef.name
에 선택한 보안 비밀 이름을 사용합니다.
Kubernetes 서비스 계정
Artifact Registry에 Helm 차트를 저장하고 클러스터에서 GKE용 GKE 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 버전 1.17.2 이상에서 k8sserviceaccount
를 인증 유형으로 사용할 수 있습니다. 이 옵션은 간소화된 구성 프로세스로 인해 gcpserviceaccount
보다 권장됩니다.
GKE용 워크로드 아이덴티티 제휴 풀이 있는 Kubernetes 서비스 계정에 Artifact Registry 리더(
roles/artifactregistry.reader
) IAM 역할을 부여합니다. Artifact Registry 역할 및 권한에 대한 자세한 내용은 Artifact Registry의 역할 및 권한 구성을 참조하세요.프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 조직의 프로젝트 ID입니다.FLEET_HOST_PROJECT_ID
: GKE용 GKE 워크로드 아이덴티티 제휴를 사용하는 경우PROJECT_ID
와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 클러스터가 등록된 Fleet의 프로젝트 ID입니다.KSA_NAME
: 조정자의 Kubernetes 서비스 계정입니다.- 루트 저장소의 경우
RootSync
이름이root-sync
이면root-reconciler
를 사용합니다. 그렇지 않은 경우root-reconciler-ROOT_SYNC_NAME
을 사용하세요.
- 루트 저장소의 경우
REPOSITORY
: 저장소 ID입니다.LOCATION
: 저장소의 리전 또는 멀티 리전 위치입니다.
Google 서비스 계정
Artifact Registry에 Helm 차트를 저장하고 클러스터에서 GKE용 GKE 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 gcpserviceaccount
를 인증 유형으로 사용할 수 있습니다. 버전 1.17.2부터는 대신 k8sserviceaccount
를 사용하는 것이 좋습니다. 이 옵션을 사용하면 Google 서비스 계정 및 연결된 IAM 정책 바인딩을 만드는 추가 단계가 필요하지 않습니다.
아직 서비스 계정이 없으면 서비스 계정을 만듭니다.
Artifact Registry 리더(
roles/artifactregistry.reader
) IAM 역할을 Google 서비스 계정에 부여합니다. Artifact Registry 역할 및 권한에 대한 자세한 내용은 Artifact Registry의 역할 및 권한 구성을 참조하세요.프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --project=PROJECT_ID
다음 명령어를 실행하여 Kubernetes 서비스 계정과 Google 서비스 계정 사이에 IAM 정책 바인딩을 만듭니다.
gcloud iam service-accounts add-iam-policy-binding GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" --project=PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 조직의 프로젝트 ID입니다.FLEET_HOST_PROJECT_ID
: GKE용 GKE 워크로드 아이덴티티 제휴를 사용하는 경우PROJECT_ID
와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 클러스터가 등록된 Fleet의 프로젝트 ID입니다.GSA_NAME
: Artifact Registry에 연결하는 데 사용할 커스텀 Google 서비스 계정입니다. 서비스 계정에는 Artifact Registry 리더(roles/artifactregistry.reader
) IAM 역할이 있어야 합니다.KSA_NAME
: 조정자의 Kubernetes 서비스 계정입니다.- 루트 저장소의 경우
RootSync
이름이root-sync
이면root-reconciler
를 사용합니다. 그렇지 않은 경우root-reconciler-ROOT_SYNC_NAME
을 사용하세요.
- 루트 저장소의 경우
REPOSITORY
: 저장소 ID입니다.LOCATION
: 저장소의 리전 또는 멀티 리전 위치입니다.
Compute Engine 기본 서비스 계정
Artifact Registry에 Helm 차트를 저장하고 클러스터가 GKE용 워크로드 아이덴티티 제휴가 중지된 GKE이면 gcenode
를 인증 유형으로 사용할 수 있습니다.
구성 동기화는 Compute Engine 기본 서비스 계정을 사용합니다.
Compute Engine 기본 서비스 계정에 Artifact Registry에 대한 읽기 액세스를 부여해야 합니다. 이미지를 가져올 수 있는 읽기 전용 권한을 부여하려면 storage-ro
액세스 범위를 부여해야 할 수 있습니다.
Compute Engine 서비스 계정에 Artifact Registry에 대한 읽기 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.reader
PROJECT_ID
를 조직의 프로젝트 ID로 바꾸고PROJECT_NUMBER
를 조직의 프로젝트 번호로 바꿉니다.
구성 동기화 구성
이 섹션에서는 루트 저장소의 설정을 구성합니다. Git 저장소에 동기화하는 경우 Google Cloud 콘솔을 사용하여 설치 과정을 안내받고 일부 단계를 자동화할 수 있습니다.
Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치하면 구성 동기화는 root-sync
라는 RootSync 객체를 자동으로 만듭니다. kubectl
명령어를 사용하여 root-sync
를 수정하고 구성 동기화 구성을 추가할 수 있습니다. 자세한 내용은 kubectl
명령어로 구성 동기화 구성을 참조하세요.
콘솔
구성 동기화 설치
구성 동기화를 설치하려면 모든 클러스터를 Fleet에 등록해야 합니다. Google Cloud 콘솔에서 구성 동기화를 설치할 때 개별 클러스터를 선택하면 해당 클러스터가 Fleet에 자동으로 등록됩니다.
- Google Cloud 콘솔에서 기능 섹션 아래의 구성 페이지로 이동합니다.
- add 구성 동기화 설치를 클릭합니다.
- 자동 업그레이드(미리보기)를 선택하여 구성 동기화가 버전을 자동으로 업그레이드하도록 사용 설정하거나 수동 업그레이드를 선택하여 구성 동기화 버전을 직접 관리합니다. 자동 업그레이드 작동 방식에 대한 자세한 내용은 구성 동기화 업그레이드를 참조하세요.
- 설치 옵션에서 다음 옵션 중 하나를 선택합니다.
- 전체 Fleet에 구성 동기화 설치(권장): 구성 동기화가 Fleet의 모든 클러스터에 설치됩니다.
- 개별 클러스터에 구성 동기화 설치: 선택한 모든 클러스터가 Fleet에 자동으로 등록됩니다. 구성 동기화가 Fleet의 모든 클러스터에 설치됩니다.
- 개별 클러스터에 구성 동기화를 설치하는 경우 사용 가능한 클러스터 테이블에서 구성 동기화를 설치할 클러스터를 선택합니다.
- 구성 동기화 설치를 클릭합니다. 몇 분 후 설정 탭에서 Fleet에 있는 클러스터의 상태 열에 사용 설정됨이 표시됩니다.
패키지 배포
클러스터를 Fleet에 등록하고 구성 동기화를 설치한 후 구성 동기화를 구성하여 정보 소스에서 클러스터에 패키지를 배포할 수 있습니다. 동일한 패키지를 여러 클러스터에 배포하거나 서로 다른 패키지를 여러 클러스터에 배포할 수 있습니다. 패키지 이름 및 동기화 유형과 같은 일부 설정을 제외하고는 패키지를 배포한 후 편집할 수 있습니다. 자세한 내용은 패키지 관리를 참조하세요.
패키지를 배포하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 구성 동기화 대시보드로 이동합니다.
패키지 배포를 클릭합니다.
패키지 배포를 위한 클러스터 선택 테이블에서 패키지를 배포할 클러스터를 선택한 후 계속을 클릭합니다.
Git에서 호스팅되는 패키지 또는 OCI에서 호스팅된 패키지를 소스 유형으로 선택하고 계속을 클릭합니다.
패키지 세부정보 섹션에 RootSync 또는 RepoSync 객체를 식별하는 패키지 이름을 입력합니다.
동기화 유형 필드에서 클러스터 범위 동기화 또는 네임스페이스 범위 동기화를 동기화 유형으로 선택합니다.
클러스터 범위 동기화는 RootSync 객체를 만들고 네임스페이스 범위 동기화는 RepoSync 객체를 만듭니다. 이러한 객체에 대한 자세한 내용은 구성 동기화 아키텍처를 참조하세요.
소스 섹션에서 다음을 완료합니다.
Git 저장소에서 호스팅되는 소스의 경우 다음 필드를 입력하세요.
- 저장소 URL로 정보 소스로 사용하는 Git 저장소의 URL을 입력합니다.
- (선택사항): 기본
HEAD
를 사용하지 않는지 확인하려면 버전 필드를 업데이트합니다. - (선택사항): 루트 저장소에서 동기화하지 않으려면 경로 필드를 업데이트합니다.
- (선택사항): 기본
main
브랜치를 사용하지 않는 경우 브랜치 필드를 업데이트합니다.
OCI 이미지에서 호스팅되는 소스의 경우 다음 필드를 입력합니다.
- 정보 소스로 사용하는 OCI 이미지의 URL을 이미지로 입력합니다.
- 루트 디렉터리를 기준으로 동기화할 디렉터리의 경로를 디렉터리로 입력합니다.
(선택사항): 고급 설정 섹션을 펼친 후 다음을 완료합니다.
인증 유형을 선택합니다. 구성 동기화는 소스의 구성 파일을 읽고 이를 클러스터에 적용할 수 있도록 정보 소스에 대한 읽기 전용 액세스 권한이 필요합니다. 공개 저장소와 같이 소스에 인증이 필요하지 않은 경우를 제외하고 구성 동기화에 Git 저장소, OCI 이미지 또는 Helm 차트(gcloud CLI만 해당)에 대한 읽기 전용 액세스 권한을 부여해야 합니다. 구성 동기화를 설치할 때 구성한 것과 동일한 인증 유형을 선택합니다.
- None: 인증을 사용하지 않습니다.
- SSH: SSH 키 쌍을 사용하여 인증합니다.
- Cookiefile:
cookiefile
을 사용하여 인증합니다. - 토큰: 액세스 토큰 또는 비밀번호를 사용하여 인증합니다.
- Google Cloud Repository: Google 서비스 계정을 사용하여 Cloud Source Repositories 저장소에 액세스합니다. GKE용 워크로드 아이덴티티 제휴가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.
- 워크로드 아이덴티티: Google 서비스 계정을 사용하여 Cloud Source Repositories 저장소에 액세스합니다.
동기화 대기 시간을 설정하려면 숫자(초)를 입력하세요. 여기서는 구성 동기화가 정보 소스에서 가져오기를 시도할 때 대기하는 시간을 결정합니다.
정보 소스와 통신할 때 사용될 HTTPS 프록시의 Git 프록시 URL을 입력합니다.
계층 구조를 선택하여 소스 형식을 변경합니다.
기본값인 구조화되지 않음은 원하는 방식으로 소스를 구성할 수 있으므로 대부분의 경우에 권장됩니다.
패키지 배포를 클릭합니다.
구성 동기화 패키지 페이지로 리디렉션됩니다. 몇 분 후에 구성한 클러스터의 동기화 상태 열에 Synced(동기화됨)가 표시됩니다.
gcloud
계속하기 전에 Fleet에 클러스터를 등록했는지 확인하세요.
ConfigManagement
Fleet 기능을 사용 설정합니다.gcloud beta container fleet config-management enable
새
apply-spec.yaml
매니페스트를 만들거나 기존 매니페스트를 추가하여 구성을 준비합니다. 기존 매니페스트를 사용하면 다른 클러스터에 사용되는 것과 동일한 설정으로 클러스터를 구성할 수 있습니다.새 매니페스트 만들기
클러스터에 대해 구성 동기화를 새 설정으로 구성하려면
apply-spec.yaml
이라는 파일을 만들고 이 파일에 다음 YAML 파일을 복사합니다.매니페스트를 만들 때 필요한 모든 선택적
spec.configSync
필드를 설정하고 나중에 구성을 위해kubectl
명령어를 사용할 수 있습니다.spec.configSync.enabled
필드만true
로 설정하고 선택적 필드를 생략할 수도 있습니다. 그런 다음 나중에kubectl
명령어를 사용하여 추가 RootSync 객체를 만들거나 이후kubectl
명령어를 사용하여 완전히 관리할 수 있는 RepoSync를 만들 수 있습니다.# apply-spec.yaml applySpecVersion: 1 spec: # upgrades: UPGRADE_SETTING configSync: # Set to true to install and enable Config Sync enabled: true # If you don't have a source of truth yet, omit the # following fields. You can configure them later. sourceType: SOURCE_TYPE sourceFormat: FORMAT syncRepo: REPO syncRev: REVISION syncBranch: BRANCH secretType: SECRET_TYPE gcpServiceAccountEmail: EMAIL metricsGcpServiceAccountEmail: METRICS_EMAIL policyDir: DIRECTORY preventDrift: PREVENT_DRIFT
다음을 바꿉니다.
(미리보기)
UPGRADE_SETTING
: 필드의 주석 처리를 삭제하고auto
로 설정하여 구성 동기화가 자동으로 업그레이드되도록 구성합니다. 구성 동기화를 직접 수동으로 업그레이드하려면manual
로 설정합니다. 기본값은manual
입니다. 이 플래그는 Google Cloud 기반 GKE 클러스터에서만 지원됩니다. 이 필드를 사용하려면gcloud components update
를 실행하여 gcloud CLI를 업데이트해야 할 수 있습니다.SOURCE_TYPE
: Git 저장소에서 동기화하려면git
을, OCI 이미지에서 동기화하려면oci
를, Helm 차트에서 동기화하려면helm
을 추가합니다. 값을 지정하지 않으면 기본값은git
입니다.FORMAT
:unstructured
를 추가하여 구조화되지 않은 저장소를 사용하거나hierarchy
를 추가하여 계층 구조의 저장소를 사용합니다. 이러한 값은 대소문자를 구분합니다. 이 필드는 선택사항이며 기본값은hierarchy
입니다. 이 형식을 사용하면 가장 편리한 방식으로 구성을 조직화할 수 있기 때문에unstructured
를 추가하는 것이 좋습니다.REPO
:정보 소스의 URL을 추가합니다. Git 및 Helm 저장소 URL은 HTTPS 또는 SSH 프로토콜을 사용합니다. 예를 들면https://github.com/GoogleCloudPlatform/anthos-config-management-samples
입니다. SSH를secretType
으로 사용하려면 SSH 프로토콜로 URL을 입력합니다. 이 필드는 필수 항목이며 프로토콜을 입력하지 않으면 URL이 HTTPS URL로 취급됩니다.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
REVISION
: 동기화할 Git 버전(태그 또는 해시)입니다. 이 필드는 선택사항이며 기본값은HEAD
입니다. 구성 동기화 버전 1.17.0부터는syncRev
필드에 브랜치 이름을 지정할 수도 있습니다. 버전 1.17.0 이상에서 해시를 사용하는 경우 축약된 양식이 아닌 전체 해시 양식을 사용해야 합니다.BRANCH
: 동기화할 저장소의 브랜치입니다. 이 필드는 선택사항이며 기본값은master
입니다. 구성 동기화 버전 1.17.0부터는 간단히syncRev
필드를 사용하여 브랜치 이름을 지정하는 것이 좋습니다.syncRev
필드와syncBranch
필드 모두 지정되면syncRev
가syncBranch
보다 우선 적용됩니다.SECRET_TYPE
: 다음secretTypes
중 하나입니다.git
none
: 인증을 사용하지 않습니다.ssh
: SSH 키 쌍을 사용합니다.cookiefile
:cookiefile
을 사용합니다.token
: 토큰을 사용합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 Cloud Source Repositories에 액세스합니다. 이 인증 유형을 선택하는 경우 구성 동기화 구성을 완료한 후 IAM 정책 바인딩을 만들어야 합니다. 자세한 내용은 Git에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여 섹션의 Google 서비스 계정 탭을 참조하세요.gcenode
: Google 서비스 계정을 사용하여 Cloud Source Repositories에 액세스합니다. GKE용 워크로드 아이덴티티 제휴가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.
이러한 인증 유형에 대한 자세한 내용은 Git에 대한 읽기 전용 액세스 권한을 구성 동기화에 부여를 참조하세요.
oci
none
: 인증 사용 안함gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. GKE용 워크로드 아이덴티티 제휴가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
helm
token
: 토큰을 사용합니다.gcenode
: Compute Engine 기본 서비스 계정을 사용하여 Artifact Registry의 이미지에 액세스합니다. GKE용 워크로드 아이덴티티 제휴가 클러스터에 사용 설정되지 않은 경우에만 이 옵션을 선택합니다.gcpserviceaccount
: Google 서비스 계정을 사용하여 이미지에 액세스합니다.
EMAIL
:gcpserviceaccount
를secretType
으로 추가한 경우 Google 서비스 계정 이메일 주소를 추가합니다. 예를 들면acm@PROJECT_ID.iam.gserviceaccount.com
입니다.METRICS_EMAIL
: 구성 동기화 측정항목을 Cloud Monitoring으로 내보내기 위해 사용되는 Google Cloud 서비스 계정(GSA)의 이메일입니다. GSA에는 모니터링 측정항목 작성자(roles/monitoring.metricWriter
) IAM 역할이 있어야 합니다.config-management-monitoring
네임스페이스의 Kubernetes 서비스 계정default
가 GSA에 바인딩되어야 합니다.DIRECTORY
: Git 저장소의 루트를 기준으로 동기화할 디렉터리의 경로입니다. 지정한 디렉터리의 모든 하위 디렉터리가 포함되어 클러스터에 동기화됩니다. 기본값은 저장소의 루트 디렉터리입니다.PREVENT_DRIFT
:true
로 설정되었으면 충돌하는 변경사항이 라이브 클러스터로 푸시되지 않도록 거부하여 구성 동기화 허용 웹훅이 드리프트를 방지하도록 사용 설정합니다. 기본 설정은false
입니다. 구성 동기화는 이 필드 값에 관계없이 항상 드리프트를 조정합니다.
spec
필드에 추가할 수 있는 전체 필드 목록은 gcloud 필드를 참조하세요.기존 매니페스트 사용
다른 클러스터에서 사용하는 것과 동일한 설정으로 클러스터를 구성하려면 등록된 클러스터에서 설정을 가져옵니다.
gcloud alpha container fleet config-management fetch-for-apply \ --membership=MEMBERSHIP_NAME \ --project=PROJECT_ID \ > CONFIG_YAML_PATH
다음을 바꿉니다.
MEMBERSHIP_NAME
: 사용할 구성 동기화 설정이 있는 등록된 클러스터의 멤버십 이름입니다.PROJECT_ID
: 프로젝트 ID입니다.CONFIG_YAML_PATH
: 클러스터에서 가져온 설정이 포함된apply-spec.yaml
파일의 경로입니다.
apply-spec.yaml
파일을 적용합니다. 기존 매니페스트를 사용하는 경우 이전 명령어에서 가져온 설정으로 구성하려는 클러스터에 파일을 적용해야 합니다.gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML_PATH \ --project=PROJECT_ID
다음을 바꿉니다.
MEMBERSHIP_NAME
: 클러스터를 등록할 때 선택한 Fleet 멤버십 이름으로gcloud container fleet memberships list
를 사용하여 찾을 수 있습니다.CONFIG_YAML_PATH
:apply-spec.yaml
파일에 대한 경로입니다.PROJECT_ID
: 프로젝트 ID
Terraform
구성 동기화를 구성하려는 클러스터마다 configmanagement
및 config_sync
블록이 포함된 google_gkehub_feature_membership
리소스 블록을 적용합니다.
git
resource "google_container_cluster" "cluster" {
name = "EXISTING_CLUSTER_NAME"
location = "EXISTING_CLUSTER_LOCATION"
}
resource "google_gke_hub_membership" "membership" {
membership_id = "MEMBERSHIP_ID"
endpoint {
gke_cluster {
resource_link = "//container.googleapis.com/${google_container_cluster.cluster.id}"
}
}
}
resource "google_gke_hub_feature" "feature" {
name = "configmanagement"
location = "global"
}
resource "google_gke_hub_feature_membership" "feature_member" {
location = "global"
feature = google_gke_hub_feature.feature.name
membership = google_gke_hub_membership.membership.membership_id
configmanagement {
version = "VERSION"
config_sync {
# The field `enabled` was introduced in Terraform version 5.41.0, and
# needs to be set to `true` explicitly to install Config Sync.
enabled = true
git {
sync_repo = "REPO"
sync_branch = "BRANCH"
policy_dir = "DIRECTORY"
secret_type = "SECRET"
}
}
}
}
다음을 바꿉니다.
EXISTING_CLUSTER_NAME
: 기존 클러스터의 이름EXISTING_CLUSTER_LOCATION
: 기존 클러스터의 위치MEMBERSHIP_ID
: 멤버십 결합 IDVERSION
: (선택사항) 구성 동기화 버전 번호. 버전 1.17.0 이상으로 설정해야 합니다. 비워두면 기본값이 최신 버전입니다.REPO
: 구성 파일이 포함된 저장소의 URLBRANCH
: 저장소 브랜치(예:main
)DIRECTORY
: 동기화하려는 저장소의 최상위 수준을 나타내는 Git 저장소 내의 경로SECRET
: 보안 비밀 인증 유형
oci
resource "google_container_cluster" "cluster" {
name = "EXISTING_CLUSTER_NAME"
location = "EXISTING_CLUSTER_LOCATION"
}
resource "google_gke_hub_membership" "membership" {
membership_id = "MEMBERSHIP_ID"
endpoint {
gke_cluster {
resource_link = "//container.googleapis.com/${google_container_cluster.cluster.id}"
}
}
}
resource "google_gke_hub_feature" "feature" {
name = "configmanagement"
location = "global"
}
resource "google_gke_hub_feature_membership" "feature_member" {
location = "global"
feature = google_gke_hub_feature.feature.name
membership = google_gke_hub_membership.membership.membership_id
configmanagement {
version = "VERSION"
config_sync {
# The field `enabled` was introduced in Terraform version 5.41.0, and
# needs to be set to `true` explicitly to install Config Sync.
enabled = true
oci {
sync_repo = "REPO"
policy_dir = "DIRECTORY"
secret_type = "SECRET"
}
}
}
}
다음을 바꿉니다.
EXISTING_CLUSTER_NAME
: 기존 클러스터의 이름EXISTING_CLUSTER_LOCATION
: 기존 클러스터의 위치MEMBERSHIP_ID
: 멤버십 결합 IDVERSION
: (선택사항) 구성 동기화 버전 번호. 비워두면 기본값이 최신 버전입니다.REPO
: 구성 파일이 포함된 OCI 이미지 저장소의 URLDIRECTORY
: 동기화할 리소스가 포함된 디렉터리의 절대 경로. 루트 디렉터리를 사용하려면 비워 둡니다.SECRET
: 보안 비밀 인증 유형
동기화하려는 클러스터마다 이 프로세스를 반복합니다.
루트 저장소 구성을 완료한 후 선택적으로 다른 루트 저장소 및 네임스페이스 저장소를 포함하여 여러 저장소로부터 동기화를 구성하도록 선택할 수 있습니다. 네임스페이스 저장소는 클러스터 간 특정 네임스페이스에 동기화된 네임스페이스 범위 구성이 포함된 저장소를 원하는 경우에 유용합니다.
Fleet 수준 기본값 구성
Google Kubernetes Engine(GKE) Enterprise 버전을 사용 설정한 경우 구성 동기화를 클러스터의 Fleet 수준 기본값으로 사용 설정하고 구성할 수 있습니다. 즉, Fleet에 생성된 모든 새 Google Cloud 기반 GKE 클러스터는 지정한 설정으로 클러스터에 구성 동기화가 사용 설정됩니다. Fleet 기본 구성에 대한 자세한 내용은 Fleet 수준 기능 관리를 참조하세요.
Google Cloud 콘솔만 사용하는 경우 기본적으로 클러스터에서 구성 동기화를 사용 설정하고 Fleet의 구성 동기화 버전을 설정할 수 있습니다. gcloud CLI 또는 Terraform을 사용하는 경우 기본적으로 클러스터에서 구성 동기화를 사용 설정하고 Fleet의 구성 동기화 버전을 설정하며 Git 저장소 또는 OCI 이미지 저장소에 대한 연결을 설정할 수 있습니다.
구성 동기화의 Fleet 수준 기본값을 구성하려면 다음 단계를 수행합니다.
gcloud
기능에 대해 enable
명령어를 실행하여 개별 클러스터에서 구성 동기화를 구성할 때 만든 apply-spec.yaml
구성 파일을 전달합니다.
gcloud beta container fleet config-management enable \
--fleet-default-member-config=apply-spec.yaml
이 명령어를 사용하면 언제든지 Fleet 기본 설정을 업데이트할 수 있습니다. Fleet 기본 설정을 업데이트하는 경우 기존 클러스터를 기본 설정과 다시 동기화해야 합니다.
콘솔
Google Cloud 콘솔에서 기능 관리자 페이지로 이동합니다.
구성 동기화 창에서 구성을 클릭합니다.
Fleet 수준 설정을 검토합니다. Fleet에서 만드는 모든 새 클러스터는 이러한 설정을 상속합니다.
선택사항: 기본 설정을 변경하려면 Fleet 맞춤설정을 클릭합니다. 대화상자가 나타나면 다음을 수행합니다.
자동 업그레이드(미리보기)를 선택하여 구성 동기화 업그레이드 버전을 자동으로 만들거나 수동 업그레이드를 선택하여 구성 동기화 버전을 직접 관리합니다. 자동 업그레이드 작동 방식에 대한 자세한 내용은 구성 동기화 업그레이드를 참조하세요.
수동 업그레이드를 선택한 경우 버전 목록에서 사용하려는 구성 동기화 버전을 선택합니다.
변경사항 저장을 클릭합니다.
구성을 클릭합니다.
Fleet 설정 구성 확인 대화상자에서 확인을 클릭합니다. 이전에 구성 동기화를 사용 설정하지 않은 경우 확인을 클릭하면
anthosconfigmanagement.googleapis.com
API도 사용 설정할 수 있습니다.
Terraform
Fleet 기본 구성 Terraform 파일의 디렉터리를 만듭니다. 해당 디렉터리에 구성 동기화 설정을 구성하는 다음 리소스와 함께
main.tf
파일을 추가합니다.git
terraform { required_providers { google = { source = "hashicorp/google" version = ">=5.16.0" } } } provider "google" { project = "PROJECT_ID" } resource "google_gke_hub_feature" "feature" { name = "configmanagement" location = "global" provider = google fleet_default_member_config { configmanagement { version = "VERSION" config_sync { source_format = "unstructured" git { sync_repo = "REPO" sync_branch = "BRANCH" policy_dir = "DIRECTORY" secret_type = "SECRET" } } } } }
다음을 바꿉니다.
PROJECT_ID
: Fleet 호스트 프로젝트 IDVERSION
: (선택사항) 구성 동기화 버전 번호. 비워두면 기본값이 최신 버전입니다.REPO
: 구성 파일이 포함된 저장소의 URLBRANCH
: 저장소 브랜치(예:main
)DIRECTORY
: 동기화하려는 저장소의 최상위 수준을 나타내는 Git 저장소 내의 경로SECRET
: 보안 비밀 인증 유형
구성 동기화
git
블록에서 지원되는 전체 설정 목록은 GKE 허브 기능에 대한 Terraform 참고 문서를 참조하세요.OCI
terraform { required_providers { google = { source = "hashicorp/google" version = ">=5.16.0" } } } provider "google" { project = "PROJECT_ID" } resource "google_gke_hub_feature" "feature" { name = "configmanagement" location = "global" provider = google fleet_default_member_config { configmanagement { version = "VERSION" config_sync { source_format = "unstructured" oci { sync_repo = "REPO" policy_dir = "DIRECTORY" secret_type = "SECRET" } } } } }
다음을 바꿉니다.
PROJECT_ID
: Fleet 호스트 프로젝트 IDVERSION
: 구성 동기화 버전 번호. 버전 1.17.0 이상으로 설정해야 합니다. 비워두면 기본값이 최신 버전입니다.REPO
: 구성 파일이 포함된 OCI 이미지 저장소의 URLDIRECTORY
: 동기화할 리소스가 포함된 디렉터리의 절대 경로. 루트 디렉터리를 사용하려면 비워 둡니다.SECRET
: 보안 비밀 인증 유형
구성 동기화
oci
블록에서 지원되는 전체 설정 목록은 GKE 허브 기능에 대한 Terraform 참고 문서를 참조하세요.생성한 디렉터리에서 Terraform을 초기화합니다.
terraform init
Terraform으로 제안한 변경사항이 예상 계획과 일치하는지 확인합니다.
terraform plan
기본 Fleet 구성원 구성을 만듭니다.
terraform apply
기존 클러스터를 업데이트하여 기본 구성 동기화 설정을 사용하려면 Google Cloud 콘솔이나 gcloud CLI를 사용하여 선택한 Fleet 클러스터를 Fleet 기본값에 동기화하면 됩니다. 또는 구성 동기화 구성 안내에 따라 Terraform을 사용하여 같은 설정으로 각 클러스터를 수동으로 구성할 수 있습니다. 이전에 Terraform을 사용하여 Fleet 기본값을 지정한 경우 기본값을 설정하는 데 사용한 블록과 동일한 configmanagement
및 config_sync
블록을 사용하여 선택한 클러스터를 구성합니다.
Fleet 전반에서 구성 동기화 기본 설정을 동기화하려면 다음 단계를 수행합니다.
gcloud
기존 멤버십을 Fleet 기본 구성과 동기화합니다.
gcloud beta container fleet config-management apply \ --origin=FLEET \ --membership=MEMBERSHIP_NAME
MEMBERSHIP_NAME
을 Fleet 기본 구성과 동기화하려는 클러스터의 Fleet 멤버십 이름으로 바꿉니다.멤버십 구성이 Fleet 기본값과 동기화되었는지 확인합니다.
gcloud beta container fleet config-management status
이 명령어의 출력은 동기화한 멤버십의
Synced_to_Fleet_Default
상태에 대해Yes
로 표시됩니다.
Console
기능 관리자로 이동
클러스터 테이블에서 Fleet 설정과 동기화할 클러스터를 선택합니다.
Fleet 설정과 동기화를 클릭합니다.
Fleet에서 구성 동기화 기본 설정을 중지하려면 다음 단계를 수행합니다.
Fleet 기본 구성을 중지하려면 다음 명령어를 실행합니다.
gcloud beta container fleet config-management disable --fleet-default-member-config
Fleet 기본 구성이 중지되었는지 확인합니다.
gcloud beta container fleet config-management status
구성 동기화 기본 설정은 선택한 모든 클러스터에 적용됩니다. 구성 동기화 버전과 마찬가지로 Google Cloud 콘솔에는 설정 하위 집합만 표시되지만 모든 Fleet 수준 설정은 클러스터에 동기화됩니다. 예를 들어 Terraform 또는 gcloud CLI를 사용하여 구성 동기화를 구성해 Git 저장소에 동기화하는 경우 해당 설정은 클러스터에 동기화되지만 Google Cloud 콘솔에는 표시되지 않습니다.
설치 확인
구성 동기화를 설치하고 구성한 후에는 설치가 성공적으로 완료되었는지 확인할 수 있습니다.
콘솔
다음 단계를 완료합니다.
- Google Cloud 콘솔에서 기능 섹션 아래의 구성 페이지로 이동합니다.
- 패키지 탭에서 클러스터 테이블의 동기화 상태 열을 확인합니다. 구성 동기화 설치에 성공한 경우 설치됨 상태가 표시됩니다. 성공적으로 구성된 정보 소스의 상태는 동기화됨입니다.
gcloud
다음 명령어를 실행합니다.
gcloud beta container fleet config-management status \
--project=PROJECT_ID
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
설치에 성공한 경우 SYNCED
상태가 표시됩니다. 구성 동기화 버전 1.18.0부터는 출력에 설치된 구성 동기화 버전과 구성 동기화의 업그레이드 설정도 표시됩니다.
위 명령어를 실행한 후 오류가 발생하면 git-creds
보안 비밀을 만들었는지 확인합니다. 보안 비밀을 만든 경우 다음 명령어를 다시 실행해 봅니다.
gcloud beta container fleet config-management apply
또한 nomos status
명령어를 사용하여 구성 동기화가 성공적으로 설치되었는지 확인할 수 있습니다. 문제가 없는 유효한 설치 상태는 PENDING
또는 SYNCED
입니다. 설치가 유효하지 않거나 완료되지 않은 경우 상태는 NOT INSTALLED
또는 NOT CONFIGURED
입니다. 출력에는 보고된 오류도 포함됩니다.
역할 기반 액세스 제어(RBAC) 및 권한
구성 동기화에는 상위 권한이 있는 워크로드가 포함됩니다. 다음 표에는 이러한 워크로드에 대한 권한이 나와 있습니다.
구성요소 | 네임스페이스 | 서비스 계정 | 권한 | 설명 |
---|---|---|---|---|
ConfigManagement Operator | config-management-system |
config-management-operator |
cluster-admin | ConfigManagement Operator는 이 테이블에 다른 구성요소를 설치합니다. 이러한 구성요소 중 일부는 클러스터 관리자 권한이 필요하므로 ConfigManagement Operator에도 해당 권한이 필요합니다. |
구성 동기화 | config-management-system |
필요한 권한은 구성 동기화 권한을 참조하세요. |
리소스 요청
다음 섹션에는 구성 동기화에 대한 리소스 요청이 나와 있습니다.
다음 표에는 구성 동기화 구성요소의 Kubernetes 리소스 요구사항이 나와 있습니다. 자세한 내용은 Kubernetes 문서의 컨테이너 리소스 관리를 참조하세요.
나열된 모든 구성요소가 생성되지는 않습니다. 다음 조건으로 인해 각 구성요소가 예약됩니다.
- 구성 동기화가 사용 설정되면
config-management-operator
가 설치됩니다. - 구성 동기화가 사용 설정되면
reconciler-manager
가 설치됩니다. - 드리프트 방지가 사용 설정되면
admission-webhook
이 설치됩니다. - RootSync 및 RepoSync마다
reconciler
가 설치됩니다. - 구성 동기화가 사용 설정되면
otel-collector
가 설치됩니다.
이러한 구성요소에 대한 자세한 내용은 구성 동기화 아키텍처를 참조하세요.
1.18
배포 이름 | 복제본당 CPU 요청(m) | 복제본당 메모리 요청(Mi) |
---|---|---|
config-management-operator |
100 | 200 |
resource-group-controller-manager |
110 | 300 |
admission-webhook1 |
10 | 100 |
otel-collector |
200 | 400 |
reconciler-manager |
20 | 150 |
reconciler (RootSync 및 RepoSync당 하나) |
자세한 내용은 조정자 배포를 참조하세요. |
1 허용 웹훅에는 복제본이 두 개 있으므로 총 리소스 요청을 계산할 때 허용 웹훅을 사용하는 경우 값에 2를 곱해야 합니다 허용 웹훅은 기본적으로 사용 중지되어 있습니다.
1.17
배포 이름 | 복제본당 CPU 요청(m) | 복제본당 메모리 요청(Mi) |
---|---|---|
config-management-operator |
100 | 200 |
resource-group-controller-manager |
110 | 300 |
admission-webhook1 |
10 | 100 |
otel-collector |
200 | 400 |
reconciler-manager |
20 | 150 |
reconciler (RootSync 및 RepoSync당 하나) |
자세한 내용은 조정자 배포를 참조하세요. |
1 허용 웹훅에는 복제본이 두 개 있으므로 총 리소스 요청을 계산할 때 허용 웹훅을 사용하는 경우 값에 2를 곱해야 합니다 허용 웹훅은 기본적으로 사용 중지되어 있습니다.
1.16
배포 이름 | 복제본당 CPU 요청(m) | 복제본당 메모리 요청(Mi) |
---|---|---|
config-management-operator |
100 | 200 |
resource-group-controller-manager |
110 | 300 |
admission-webhook1 |
10 | 100 |
otel-collector |
200 | 400 |
reconciler-manager |
20 | 150 |
reconciler (RootSync 및 RepoSync당 하나) |
자세한 내용은 조정자 배포를 참조하세요. |
1 허용 웹훅에는 복제본이 두 개 있으므로 총 리소스 요청을 계산할 때 허용 웹훅을 사용하는 경우 값에 2를 곱해야 합니다 허용 웹훅은 기본적으로 사용 중지되어 있습니다.
조정자 배포
구성 동기화는 RootSync
및 RepoSync
객체마다 동기화를 처리하기 위한 독립적인 조정자 배포를 만듭니다. 조정자 배포는 컨테이너 여러 개로 구성됩니다. 이러한 컨테이너에 대한 자세한 내용은 조정자 컨테이너를 참조하세요.
구성 동기화 버전 1.17.0 이상에서는 조정자에 대한 기본 리소스 요청이 표준 및 Autopilot 클러스터와 다릅니다. 다른 모든 클러스터 유형은 표준 기본값을 사용합니다.
Standard 클러스터
1.18
컨테이너 이름 | CPU 요청(m) | 메모리 요청(Mi) |
---|---|---|
reconciler |
50 | 200 |
otel-agent |
10 | 100 |
hydration-controller (선택사항) |
10 | 100 |
git-sync |
10 | 16 |
gcenode-askpass-sidecar (선택사항) |
10 | 20 |
helm-sync |
75 | 128 |
oci-sync |
25 | 32 |
1.17
컨테이너 이름 | CPU 요청(m) | 메모리 요청(Mi) |
---|---|---|
reconciler |
50 | 200 |
otel-agent |
10 | 100 |
hydration-controller (선택사항) |
10 | 100 |
git-sync |
10 | 16 |
gcenode-askpass-sidecar (선택사항) |
10 | 20 |
helm-sync |
75 | 128 |
oci-sync |
25 | 32 |
1.16
컨테이너 이름 | CPU 요청(m) | 메모리 요청(Mi) |
---|---|---|
reconciler |
50 | 200 |
otel-agent |
10 | 100 |
hydration-controller (선택사항) |
10 | 100 |
git-sync |
10 | 200 |
gcenode-askpass-sidecar (선택사항) |
10 | 20 |
helm-sync |
50 | 256 |
oci-sync |
10 | 200 |
Autopilot 클러스터
1.18
컨테이너 이름 | CPU 요청 및 한도(m) | 메모리 요청 및 한도(Mi) |
---|---|---|
reconciler |
700 | 512 |
otel-agent |
10 | 64 |
hydration-controller (선택사항) |
200 | 256 |
git-sync |
20 | 32 |
gcenode-askpass-sidecar (선택사항) |
50 | 64 |
helm-sync |
250 | 384 |
oci-sync |
50 | 64 |
1.17
컨테이너 이름 | CPU 요청 및 한도(m) | 메모리 요청 및 한도(Mi) |
---|---|---|
reconciler |
700 | 512 |
otel-agent |
10 | 64 |
hydration-controller (선택사항) |
200 | 256 |
git-sync |
20 | 32 |
gcenode-askpass-sidecar (선택사항) |
50 | 64 |
helm-sync |
150 | 256 |
oci-sync |
50 | 64 |
1.16
1.17.0 이전 버전의 구성 동기화에서는 리소스 요청이 표준과 Autopilot에서 동일합니다.
기본 리소스 요청 및 한도를 재정의하는 방법을 알아보려면 리소스 재정의를 참조하세요.
번들 Helm 및 Kustomize 버전
구성 동기화는 내부적으로 Helm 및 Kustomize 실행 파일을 활용하여 구성을 렌더링합니다. 다음 표에서는 렌더링 기능을 지원하는 구성 동기화 버전 목록과 번들 Helm 및 Kustomize 버전을 보여줍니다.
구성 동기화 버전 | Helm 버전 | Kustomize 버전 |
---|---|---|
1.18.0 | v3.14.3 | v5.3.0 |
1.17.1 및 1.17.3 | v3.13.3 | v5.3.0 |
1.16.3 및 1.17.0 | v3.13.1 | v5.1.1 |
1.16.1 및 1.16.2 | v3.12.3 | v5.1.1 |
1.16.0 | v3.12.2 | v5.1.1 |
1.15.3 | v3.12.2 | v5.1.0 |
1.15.1에서 1.15.2 | v3.11.3 | v5.0.3 |
1.15.0 | v3.11.3 | v5.0.1 |
1.11.0에서 1.14.3 | v3.6.3 | v4.5.2 |
Kustomize를 통한 Helm 렌더링에 대한 자세한 내용은 Kustomize로 Kubernetes 구성을 참조하세요. Helm API 사용에 대해서는 Artifact Registry에서 Helm 차트 동기화를 참조하세요.
다음 단계
- 구성 동기화 업그레이드 방법 알아보기
- 구성 동기화 구성에 사용되는
gcloud
명령어 자세히 알아보기 - 여러 저장소에서 동기화 구성하는 방법 알아보기
nomos
명령어 사용하기- 구성 동기화 문제 해결 소개 읽어보기
- 구성 동기화 제거 방법 알아보기
- 기본 구성 동기화 권한 검토하기