빠른 시작: 저장소에서 구성 동기화
이 튜토리얼에서는 Google Kubernetes Engine(GKE) 클러스터를 만들고 구성 동기화를 사용하여 Anthos Config Management 멀티 저장소 샘플 저장소의 구성에 동기화합니다.
규정 준수팀에서 조직의 모든 구성원이 내부 규칙을 준수하도록 해야 한다고 가정해 보세요. 이러한 규칙을 적용하기 위해 규정 준수팀은 구성을 만들고 샘플 저장소에 추가했습니다. 조직의 각 클러스터는 저장소에 동기화해야 하며 클러스터를 만들고 동기화할 책임은 사용자에게 있습니다.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
프로젝트에 다음 역할이 있는지 확인합니다. GKE Hub Admin
역할 확인
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
IAM으로 이동 - 프로젝트를 선택합니다.
-
주 구성원 열에서 이메일 주소가 있는 행을 찾습니다.
이메일 주소가 열에 없으면 역할이 없는 것입니다.
- 이메일 주소가 있는 행에 대해 역할 열에서 역할 목록에 필요한 역할이 있는지 확인합니다.
역할 부여
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
IAM으로 이동 - 프로젝트를 선택합니다.
- 액세스 권한 부여를 클릭합니다.
- 새 주 구성원 필드에 이메일 주소를 입력합니다.
- 역할 선택 목록에서 역할을 선택합니다.
- 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
- 저장을 클릭합니다.
-
클러스터 만들기
이 섹션에서는 이 튜토리얼에서 사용할 수 있는 클러스터를 만듭니다. 실제 시나리오에서는 여러 클러스터를 관리하는 경우가 많지만 이 튜토리얼을 단순화하기 위해 하나의 클러스터만 만들고 관리합니다.
클러스터를 만들려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 Kubernetes Engine 페이지로 이동합니다.
GKE를 처음 사용하는 경우 사용 설정을 클릭하여 Kubernetes Engine API를 사용 설정합니다.
add_box만들기를 클릭합니다.
Autopilot 섹션에서 구성을 선택합니다.
클러스터 기본사항 섹션의 이름 필드에
cs-cluster
를 입력하고 다른 모든 필드를 권장 기본값으로 둡니다.만들기를 클릭합니다. Kubernetes 클러스터 페이지로 이동합니다. 클러스터를 만드는 데 몇 분 정도 걸립니다. 클러스터 옆에 있는 상태 열에 녹색 체크표시가 보이면 준비된 것입니다.
클러스터 구성
이제 클러스터가 생성되었으므로 Anthos Config Management 샘플 저장소의 config-sync-quickstart
디렉터리에 있는 구성과 동기화되도록 구성 동기화를 구성할 수 있습니다.
Google Cloud 콘솔에서 구성 동기화를 구성하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 GKE Hub API를 사용 설정합니다.
Google Cloud 콘솔에서 구성 동기화 대시보드로 이동합니다.
구성 동기화 설정 상자에서 add 구성 동기화 설치를 클릭합니다.
사용 가능한 클러스터 테이블에서
cs-cluster
를 선택하고 다음을 클릭합니다.정책 컨트롤러 사용 설정 체크박스를 선택 해제하고 다음을 클릭합니다.
구성 동기화 사용 설정 체크박스를 활성화한 상태로 둡니다.
저장소 목록에서 커스텀을 선택합니다.
URL 필드에
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
를 추가합니다.고급 설정 표시를 클릭합니다.
구성 디렉터리 필드에
config-sync-quickstart/multirepo/root
를 추가합니다.다른 필드는 기본값 그대로 둡니다.
완료를 클릭합니다.
구성 동기화 설정 페이지로 이동합니다. 몇 분 후
cs-cluster
의 구성 동기화 상태 열에 Synced가 표시됩니다.
구성 동기화가 저장소에 동기화되었으므로 저장소의 구성과 클러스터 상태를 지속적으로 조정합니다.
구성 동기화 설치 살펴보기
다음 섹션에서는 Cloud Shell을 사용하여 cs-cluster
가 동기화되는 저장소를 살펴보고 저장소의 구성이 배포되고 있는지 확인합니다.
Cloud Shell 열기
-
Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.
Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
-
다음 섹션의 명령어를 사용하려면
kubectl
명령줄 액세스를 구성합니다.gcloud container clusters get-credentials cs-cluster \ --zone ZONE \ --project PROJECT_ID
다음을 바꿉니다.
ZONE
: 클러스터를 만든 영역입니다.PROJECT_ID
: 프로젝트 ID입니다.
출력은 다음과 같습니다.
Fetching cluster endpoint and auth data. kubeconfig entry generated for cs-cluster.
승인을 요청하는 메시지가 표시되면 승인을 클릭합니다.
클러스터 및 저장소 검사
config-sync-quickstart
디렉터리에는 ClusterRole, CustomResourceDefinition, Rolebinding, 네임스페이스, RepoSync 구성이 포함됩니다. 모니터링용 Prometheus 연산자의 구성도 포함되어 있습니다.
이 구성은 구성 동기화가 저장소에서 읽도록 구성되는 즉시 적용됩니다.
구성 동기화가 관리하는 모든 객체에는 configmanagement.gke.io
로 설정된 app.kubernetes.io/managed-by
라벨이 있습니다. 이 라벨을 사용하여 관리형 객체를 볼 수 있습니다.
구성 동기화가 관리하는 네임스페이스를 나열하려면 다음 명령어를 실행합니다.
kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io
출력은 다음과 비슷합니다.
NAME STATUS AGE
gamestore Active 58s
monitoring Active 58s
GitHub에서 Anthos Config Management 저장소의 /config-sync-quickstart/multirepo/ 폴더로 이동하여 이러한 네임스페이스를 만든 구성을 살펴볼 수 있습니다.
ClusterRole, Reposync, CRD, Rolebinding 등의 다른 객체를 같은 방식으로 검사할 수 있습니다.
동기화 상태 확인
구성 동기화를 사용하는 경우 nomos
명령줄 도구를 사용할 수 있습니다. 이 도구는 구성 동기화의 추가 기능을 제공합니다.
이 섹션에서는 nomos status
명령어를 사용하여 구성 동기화가 클러스터에 모든 구성을 성공적으로 동기화했는지 확인합니다.
nomos status
출력은 다음과 비슷합니다.
*gke_PROJECT_ID_ZONE_cs-cluster
--------------------
<root>:root-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
SYNCED @ 2023-02-03 16:58:42 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee
Managed resources:
NAMESPACE NAME STATUS SOURCEHASH
clusterrole.rbac.authorization.k8s.io/namespace-reader Current 1fbab5c
clusterrole.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c
clusterrole.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c
clusterrole.rbac.authorization.k8s.io/webstore-admin Current 1fbab5c
clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c
clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/anvils.acme.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com Current 1fbab5c
namespace/gamestore Current 1fbab5c
namespace/monitoring Current 1fbab5c
gamestore reposync.configsync.gke.io/repo-sync Current 1fbab5c
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-admin Current 1fbab5c
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin Current 1fbab5c
monitoring deployment.apps/prometheus-operator Current 1fbab5c
monitoring prometheus.monitoring.coreos.com/acm Current 1fbab5c
monitoring service/prometheus-acm Current 1fbab5c
monitoring service/prometheus-operator Current 1fbab5c
monitoring serviceaccount/prometheus-acm Current 1fbab5c
monitoring serviceaccount/prometheus-operator Current 1fbab5c
monitoring servicemonitor.monitoring.coreos.com/acm-service Current 1fbab5c
--------------------
gamestore:repo-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
SYNCED @ 2023-02-03 16:58:51 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee
Managed resources:
NAMESPACE NAME STATUS SOURCEHASH
gamestore configmap/store-inventory Current 1fbab5c
gamestore webstore.marketplace.com/gameplace Current 1fbab5c
이 출력에서는 cs-cluster
가 두 저장소에서 성공적으로 동기화되는 것을 확인할 수 있습니다. 또한 모든 리소스의 상태가 Current
이므로 리소스 상태가 원하는 상태와 일치합니다.
삭제
Cloud 콘솔에서 GKE 메뉴로 이동합니다.
cs-cluster
옆의 more_vert 작업을 클릭한 다음 delete 삭제를 클릭합니다.확인 메시지가 나타나면 삭제를 다시 클릭합니다.
다음 단계
- 구성 확인 알아보기