읽기 전용 저장소와 동기화

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

시작하기 전에

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

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

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

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

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

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

    API 사용 설정

  5. Cloud SDK 설치 및 초기화

클러스터 설정

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 clusters on VMware 사용자

Anthos Config Management 준비

다음 단계를 완료하여 이 빠른 시작에 필요한 도구를 준비하세요.

  1. Anthos Config Management를 처음으로 사용하는 경우 Google Cloud Console 또는 gcloud 명령줄 도구를 통해 이 기능을 사용 설정합니다.

    콘솔

    Anthos Config Management를 사용 설정하려면 다음 안내를 따르세요.

    1. Google Cloud Console에서 Anthos 기능 페이지로 이동합니다.

      Anthos 기능으로 이동

    2. Config Management 행에서 사용 설정을 클릭합니다.

    3. 확인 창에서 Config Management 사용 설정을 클릭합니다.

    gcloud

    Anthos Config Management를 사용 설정하려면 다음 명령어를 실행합니다.

     gcloud alpha container hub config-management enable
    
  2. 로컬 시스템에 nomos 명령어를 설치합니다.

  3. kubectl을 사용하여 설치하려는 경우 방금 만든 클러스터에 Config Management Operator를 배포합니다.

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

클러스터 구성

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

콘솔

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

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

    Anthos Config Management 메뉴로 이동

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

  3. 이 예시에서 저장소를 공개적으로 읽을 수 있으므로 ACM용 Git 저장소 인증 섹션에 없음을 선택합니다.

  4. 계속을 클릭합니다.

  5. 클러스터의 ACM 설정 섹션에서 다음을 완료합니다.

    1. 버전 필드에서 Anthos Config Management 버전을 선택합니다.
    2. 구성 동기화 사용 설정 체크박스를 선택합니다.
    3. 표시되는 드롭다운 메뉴에서 다음을 완료합니다.

      1. URL 필드에 https://github.com/GoogleCloudPlatform/csp-config-management/를 추가합니다.
      2. 분기 필드에 1.0.0을 추가합니다.
      3. HEAD의 기본값을 사용하므로 태그/커밋 필드를 비워 둡니다.
      4. 정책 디렉터리 필드에 foo-corp를 추가합니다.
      5. 다른 필드는 모두 기본값 그대로 둡니다.
  6. 완료를 클릭합니다. Anthos Config Management 메뉴로 돌아갑니다. 몇 분 후에 구성한 클러스터 옆에 있는 상태 열에 Synced가 표시됩니다.

gcloud

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

  1. config-management.yaml 파일을 만들고 이 파일에 아래 YAML 파일을 복사합니다.

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
      namespace: config-management-system
    
    spec:
      git:
        syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
        syncBranch: 1.0.0
        secretType: none
        policyDir: "foo-corp"
    
  2. 변수 설정:

    export CONFIG_YAML=PATH_TO_CONFIG_YAML

  3. config-management.yaml 파일을 적용합니다.

     gcloud alpha container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 이 구성을 적용할 등록된 클러스터를 추가합니다.
    • PROJECT_ID: 프로젝트 ID를 추가합니다.

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는 클러스터에서 Anthos Config Management를 업데이트하여 저장소에서 클러스터의 구성을 동기화하기 시작합니다. Anthos Config Management가 실행 중인지 확인하려면 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

클러스터 및 저장소 검사

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

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

삭제

Config Sync을 위한 구성 작성의 빠른 시작을 사용하려면 아직 정리하지 마세요. 이 빠른 시작은 고급 빠른 시작의 기본 요건이며, 고급 빠른 시작에도 삭제 안내가 포함되어 있습니다.

고급 빠른 시작을 원하지 않으면 테스트에 사용된 클러스터를 삭제하여 정리할 수 있습니다.

다음 단계