읽기 전용 저장소와 동기화

이 빠른 시작에서는 foo-corp 예시 저장소를 사용하여 일련의 구성으로 클러스터를 부트스트랩하여 새 클러스터에서 Anthos Config Management를 시작하는 방법을 보여줍니다. 이 빠른 시작에서는 저장소에 대한 쓰기 액세스 권한이 필요하지 않습니다. 조직의 규정 준수팀이 구성을 만들고, 각 클러스터가 저장소와 동기화해야 한다고 가정해 보세요.

이 빠른 시작을 완료하면 구성 작성, 테스트, 동기화에 대한 고급 빠른 시작을 따라 할 수 있습니다.

시작하기 전에

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Anthos API를 사용 설정합니다.

    API 사용 설정

  5. Cloud SDK 설치 및 초기화

요구사항

Anthos Config Management에는 활성 Anthos 권한이 필요합니다. 자세한 정보는 Anthos에 대한 가격 책정을 참조하세요.

클러스터 설정

GKE 사용자

  1. 클러스터 만들기

  2. kubectl 명령어를 설정하여 클러스터에 인증하고 다음 명령어로 RoleBinding을 만들어 자신을 클러스터 관리자로 지정합니다. [MY-CLUSTER]에는 클러스터 이름을 사용하고 [USER-ACCOUNT]에는 Google Cloud 계정의 이메일 주소를 사용합니다. 로컬 시스템에서 gcloud 명령어를 구성한 방법에 따라 --project--zone 필드를 추가해야 할 수도 있습니다.

    gcloud container clusters get-credentials [MY-CLUSTER]
    
    kubectl create clusterrolebinding cluster-admin-binding \
        --clusterrole cluster-admin --user [USER_ACCOUNT]
    

Anthos GKE On-Prem 사용자

Anthos Config Management 설치

  1. 로컬 시스템에 nomos 명령어를 설치합니다.

  2. 수동으로 설치하는 경우 방금 만든 클러스터에 Config Management Operator를 설치합니다.

  3. Connect를 사용하여 Anthos 환경에 클러스터를 등록합니다.

클러스터 구성

kubectl 또는 Google Cloud Console을 사용하여 클러스터를 구성할 수 있습니다.

kubectl

config-management.yaml 파일을 만들고 아래 YAML 파일을 복사합니다. 저장소를 전 세계에서 읽을 수 있으므로 secretTypenone으로 설정됩니다. 필드에 대한 설명은 Git 저장소 구성을 참조하세요.

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
    syncBranch: 1.0.0
    secretType: none
    policyDir: "foo-corp"

클러스터에 구성을 적용합니다.

kubectl apply -f config-management.yaml

명령어가 성공적으로 실행되면 Kubernetes는 클러스터에서 Config Management Operator를 업데이트하여 저장소에서 클러스터의 구성을 동기화하기 시작합니다. Config Management Operator가 실행 중인지 확인하려면 config-management-system 네임스페이스에서 실행 중인 모든 Pod를 나열합니다.

kubectl get pods -n config-management-system

결과:

NAME                                   READY     STATUS    RESTARTS   AGE
git-importer-5f8bdb59bd-7nn5m          2/2       Running   0          2m
monitor-58c48fbc66-ggrmd               1/1       Running   0          2m
syncer-7bbfd7686b-dxb45                1/1       Running   0          2m

콘솔

Google Cloud Console에서 Operator를 구성하려면 다음 단계를 완료합니다.

  1. Google Cloud Console에서 Anthos Config Management 메뉴로 이동합니다.

    Anthos Config Management 메뉴로 이동

  2. 등록된 클러스터를 선택하고 구성을 클릭합니다.

  3. ACM용 Git 저장소 인증 섹션에서 다음을 완료합니다.

    1. 이 예시에서 저장소를 공개적으로 읽을 수 있으므로 보안 비밀 유형없음을 선택합니다.
    2. 계속을 클릭합니다.
  4. 클러스터의 ACM 설정 섹션에서 다음을 완료합니다.

    1. URL 필드에 https://github.com/GoogleCloudPlatform/csp-config-management/를 추가합니다.
    2. 분기 필드에 1.0.0을 추가합니다.
    3. 고급 옵션 표시를 클릭합니다.
    4. 정책 디렉터리 필드에 foo-corp을 추가합니다.
  5. 완료를 클릭합니다. Anthos Config Management 메뉴로 돌아갑니다. 몇 분 후에 페이지를 새로 고칩니다. 구성한 클러스터 옆에 있는 상태 열에 Synced가 표시됩니다.

클러스터 및 저장소 검사

foo-corp 저장소에는 cluster/namespaces/ 디렉터리의 구성이 포함됩니다. 이 구성은 Config Management Operator가 저장소에서 읽도록 구성되는 즉시 적용됩니다.

Anthos Config Management가 관리하는 모든 객체에는 app.kubernetes.io/managed-by 라벨이 configmanagement.gke.io로 설정되어 있습니다.

Anthos Config Management에서 관리하는 네임스페이스를 나열합니다.

kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io

결과:

NAME               STATUS   AGE
audit              Active   4m
shipping-dev       Active   4m
shipping-prod      Active   4m
shipping-staging   Active   4m

namespaces/audit/namespace.yaml, namespaces/online/shipping-app-backend/shipping-dev/namespace.yaml 등 이러한 네임스페이스를 만든 구성을 검토합니다.

Anthos Config Management에서 관리하는 ClusterRole을 나열합니다.

kubectl get clusterroles -l app.kubernetes.io/managed-by=configmanagement.gke.io

결과:

NAME               AGE
namespace-reader   6m52s
pod-creator        6m52s

다음을 선언하는 ClusterRole 구성을 조사합니다.

  • cluster/namespace-reader-clusterrole.yaml
  • cluster/pod-creator-clusterrole.yaml

역할 및 PodSecurityPolicies와 같은 다른 객체도 같은 방법으로 검사할 수 있습니다.

관리형 객체를 수동으로 수정 시도

Anthos Config Management에서 관리하는 Kubernetes 객체를 수동으로 수정하면 수정된 객체 구성이 저장소에 있는 객체 구성과 일치하도록 자동으로 업데이트됩니다. 이를 테스트하려면 shipping-dev 네임스페이스를 삭제합니다.

kubectl delete namespace shipping-dev

바로 검사하면 네임스페이스가 누락될 수 있지만 몇 초 내에 다시 존재하게 됩니다. 예:

kubectl get ns shipping-dev

결과:

Error from server (NotFound): namespaces "shipping-dev" not found

몇 초 후:

kubectl get ns shipping-dev

결과:

NAME           STATUS   AGE
shipping-dev   Active   3s

삭제

이 주제의 연습을 마친 후에는 테스트에 사용한 클러스터를 삭제하여 정리할 수 있습니다.

다음 단계