빠른 시작: 저장소에서 구성 동기화

이 튜토리얼에서는 Google Kubernetes Engine(GKE) Enterprise 버전 클러스터를 만들고 구성 동기화를 사용하여 멀티 저장소 샘플 저장소의 구성에 동기화합니다.

규정 준수팀에서 조직의 모든 구성원이 내부 규칙을 준수하도록 해야 한다고 가정해 보세요. 이러한 규칙을 적용하기 위해 규정 준수팀은 구성을 만들고 샘플 저장소에 추가했습니다. 조직의 각 클러스터는 저장소에 동기화해야 하며 클러스터를 만들고 동기화할 책임은 사용자에게 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. 프로젝트에 다음 역할이 있는지 확인합니다. GKE Hub Admin

    역할 확인

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 프로젝트를 선택합니다.
    3. 주 구성원 열에서 이메일 주소가 있는 행을 찾습니다.

      이메일 주소가 열에 없으면 역할이 없는 것입니다.

    4. 이메일 주소가 있는 행에 대해 역할 열에서 역할 목록에 필요한 역할이 있는지 확인합니다.

    역할 부여

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 프로젝트를 선택합니다.
    3. 액세스 권한 부여를 클릭합니다.
    4. 새 주 구성원 필드에 이메일 주소를 입력합니다.
    5. 역할 선택 목록에서 역할을 선택합니다.
    6. 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
    7. 저장을 클릭합니다.

클러스터 만들기

이 섹션에서는 이 튜토리얼에서 사용할 수 있는 클러스터를 만듭니다. 실제 시나리오에서는 여러 클러스터를 관리하는 경우가 많지만 이 튜토리얼을 단순화하기 위해 하나의 클러스터만 만들고 관리합니다.

클러스터를 만들려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. GKE를 처음 사용하는 경우 사용 설정을 클릭하여 Kubernetes Engine API를 사용 설정합니다.

  3. 만들기를 클릭합니다.

  4. Autopilot 섹션에서 구성을 선택합니다.

  5. 클러스터 기본사항 섹션의 이름 필드에 cs-cluster를 입력하고 다른 모든 필드를 권장 기본값으로 둡니다.

  6. 만들기를 클릭합니다. Kubernetes 클러스터 페이지로 이동합니다. 클러스터를 만드는 데 몇 분 정도 걸립니다. 클러스터 옆에 있는 상태 열에 녹색 체크표시가 보이면 준비된 것입니다.

클러스터 구성

이제 클러스터가 생성되었으므로 구성 동기화를 구성하여 샘플 저장소의 config-sync-quickstart 디렉터리의 구성과 동기화할 수 있습니다.

Google Cloud 콘솔에서 구성 동기화를 구성하려면 다음 단계를 완료하세요.

  1. Google Cloud 콘솔에서 GKE Hub API를 사용 설정합니다.

    GKE Hub API로 이동

  2. Google Cloud 콘솔에서 기능 섹션 아래의 구성 페이지로 이동합니다.

    구성으로 이동

  3. 구성 동기화 설치를 클릭합니다.

  4. 자동 업그레이드를 선택하여 구성 동기화가 버전을 자동으로 업그레이드하도록 사용 설정합니다.

  5. 설치 옵션에서 개별 클러스터에 구성 동기화 설치를 선택합니다.

  6. 사용 가능한 클러스터 테이블에서 cs-cluster를 선택하고 구성 동기화 설치를 클릭합니다. 몇 분 후에 설정 탭에서 cs-cluster 상태가 사용 설정됨으로 표시됩니다.

  7. 구성 동기화 대시보드에서 패키지 배포를 클릭합니다.

  8. 패키지 배포에 사용할 클러스터 선택 테이블에서 cs-cluster를 선택한 후 계속을 클릭합니다.

  9. Git에서 호스팅되는 패키지를 선택한 상태로 두고 계속을 클릭합니다.

  10. 패키지 이름 필드에 sample-repository를 입력합니다.

  11. 저장소 URL 필드에 https://github.com/GoogleCloudPlatform/anthos-config-management-samples를 입력합니다.

  12. 경로 필드에 config-sync-quickstart/multirepo/root를 입력합니다.

  13. 다른 필드는 기본값 그대로 둡니다.

  14. 패키지 배포를 클릭합니다.

    몇 분 후 cs-cluster동기화 상태 열에 동기화됨이 표시됩니다.

구성 동기화가 저장소에 동기화되었으므로 저장소의 구성과 클러스터 상태를 지속적으로 조정합니다.

구성 동기화 설치 살펴보기

다음 섹션에서는 Cloud Shell을 사용하여 cs-cluster가 동기화되는 저장소를 살펴보고 저장소의 구성이 배포되고 있는지 확인합니다.

Cloud Shell 열기

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 다음 섹션의 명령어를 사용하려면 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이므로 리소스 상태가 원하는 상태와 일치합니다.

삭제

  1. Google Cloud 콘솔에서 GKE 메뉴로 이동합니다.

    GKE로 이동

  2. cs-cluster 옆의 작업을 클릭한 다음 삭제를 클릭합니다.

  3. 확인 메시지가 나타나면 삭제를 다시 클릭합니다.

다음 단계