이 튜토리얼에서는 Google Kubernetes Engine(GKE) Enterprise 버전 클러스터를 만들고 구성 동기화를 사용하여 멀티 저장소 샘플 저장소의 구성에 동기화합니다.
규정 준수팀에서 조직의 모든 구성원이 내부 규칙을 준수하도록 해야 한다고 가정해 보세요. 이러한 규칙을 적용하기 위해 규정 준수팀은 구성을 만들고 샘플 저장소에 추가했습니다. 조직의 각 클러스터는 저장소에 동기화해야 하며 클러스터를 만들고 동기화할 책임은 사용자에게 있습니다.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
프로젝트에 다음 역할이 있는지 확인합니다. 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 클러스터 페이지로 이동합니다. 클러스터를 만드는 데 몇 분 정도 걸립니다. 클러스터 옆에 있는 상태 열에 녹색 체크표시가 보이면 준비된 것입니다.
클러스터 구성
이제 클러스터가 생성되었으므로 구성 동기화를 구성하여 샘플 저장소의 config-sync-quickstart
디렉터리의 구성과 동기화할 수 있습니다.
Google Cloud 콘솔에서 구성 동기화를 구성하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 GKE Hub API를 사용 설정합니다.
- Google Cloud 콘솔에서 기능 섹션 아래의 구성 페이지로 이동합니다.
add 구성 동기화 설치를 클릭합니다.
자동 업그레이드를 선택하여 구성 동기화가 버전을 자동으로 업그레이드하도록 사용 설정합니다.
설치 옵션에서 개별 클러스터에 구성 동기화 설치를 선택합니다.
사용 가능한 클러스터 테이블에서
cs-cluster
를 선택하고 구성 동기화 설치를 클릭합니다. 몇 분 후에 설정 탭에서cs-cluster
상태가 사용 설정됨으로 표시됩니다.구성 동기화 대시보드에서 패키지 배포를 클릭합니다.
패키지 배포에 사용할 클러스터 선택 테이블에서
cs-cluster
를 선택한 후 계속을 클릭합니다.Git에서 호스팅되는 패키지를 선택한 상태로 두고 계속을 클릭합니다.
패키지 이름 필드에
sample-repository
를 입력합니다.저장소 URL 필드에
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
를 입력합니다.경로 필드에
config-sync-quickstart/multirepo/root
를 입력합니다.다른 필드는 기본값 그대로 둡니다.
패키지 배포를 클릭합니다.
몇 분 후
cs-cluster
의 동기화 상태 열에 동기화됨이 표시됩니다.
구성 동기화가 저장소에 동기화되었으므로 저장소의 구성과 클러스터 상태를 지속적으로 조정합니다.
구성 동기화 설치 살펴보기
다음 섹션에서는 Cloud Shell을 사용하여 cs-cluster
가 동기화되는 저장소를 살펴보고 저장소의 구성이 배포되고 있는지 확인합니다.
Cloud Shell 열기
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
다음 섹션의 명령어를 사용하려면
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에서 저장소의 /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
이므로 리소스 상태가 원하는 상태와 일치합니다.
삭제
Google Cloud 콘솔에서 GKE 메뉴로 이동합니다.
cs-cluster
옆의 more_vert 작업을 클릭한 다음 delete 삭제를 클릭합니다.확인 메시지가 나타나면 삭제를 다시 클릭합니다.
다음 단계
- 구성 확인 알아보기