Anthos Config Management 설치

이 페이지는 플랫폼 관리자용으로 작성되었습니다.

이 페이지에서는 Anthos Config Management를 설치하는 방법을 설명합니다.

Anthos Config Management를 사용하면 중앙 Git 저장소에서 새 구성을 자동으로 배포하여 Anthos 클러스터에 선언적으로 정책과 구성을 적용할 수 있습니다. 자세한 내용은 Anthos Config Management 문서를 참조하세요.

관리 센터 또는 kubectl을 사용하여 Anthos Config Management를 설치할 수 있습니다. Anthos Config Management를 설치하려면 Git 저장소가 필요합니다.

관리 센터에서 설치

구성 관리 탭으로 이동하고 설정을 클릭하여 사용자 클러스터에 Anthos Config Management를 설정합니다. 그런 다음 페이지의 안내에 따라 설정을 완료합니다.

기존 Anthos Config Management 설치를 업데이트하거나 업그레이드할 수도 있습니다. 버전 열 아래에 있는 링크를 클릭하여 기존 구성을 수정합니다.

kubectl을 사용하여 설치

kubectl을 사용하여 Anthos Config Management를 설치하는 과정은 두 단계로 진행됩니다. 먼저 구성 동기화에서 Git 저장소에 인증하는 데 사용할 SSH 키를 설정합니다. 그런 다음 클러스터에 Anthos Config Management 리소스인 ConfigManagementFeatureSpecConfigManagementBinding을 설치합니다.

kubectl을 사용하여 기존 Anthos Config Management 설치를 업데이트하거나 업그레이드할 수도 있습니다.

SSH 키 설정

SSH 키 쌍은 공개 키 파일과 비공개 키 파일 등 파일 두 개로 구성됩니다. 일반적으로 공개 키에는 .pub 확장자가 있습니다.

  1. 구성 동기화가 Git 저장소에 인증할 수 있도록 SSH 키 쌍을 만듭니다. 보안 및 규정 준수 요구사항에 따라 모든 클러스터에 단일 키 쌍을 사용하거나 클러스터별로 키 쌍을 사용할 수 있습니다.

    다음 명령어는 4096비트 RSA 키를 만듭니다. 이보다 낮은 값은 권장되지 않습니다.

    ssh-keygen -t rsa -b 4096 \
      -C GIT_REPOSITORY_USERNAME \
      -N '' \
      -f /path/to/KEYPAIR_FILENAME
    

    다음을 바꿉니다.

    • GIT_REPOSITORY_USERNAME: 구성 동기화가 저장소에 인증하기 위해 사용할 사용자 이름입니다.
    • /path/to/KEYPAIR_FILENAME: 키 쌍을 출력할 경로입니다.
  2. 저장소가 새로 생성된 공개 키를 인식하도록 구성합니다. Git 호스팅 업체의 문서를 참조하세요.

  3. 비공개 키를 사용자 클러스터의 새 보안 비밀 객체에 추가합니다.

    kubectl create ns config-management-system --kubeconfig=USER_CLUSTER_KUBECONFIG && \
    kubectl create secret generic git-creds --kubeconfig=USER_CLUSTER_KUBECONFIG \
     --namespace=config-management-system \
     --from-file=ssh=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
    

    다음을 바꿉니다.

    • USER_CLUSTER_KUBECONFIG: 사용자 클러스터의 구성 파일입니다. 관리 센터에서 가져올 수 있습니다.
    • /path/to/KEYPAIR_PRIVATE_KEY_FILENAME: 비공개 키 이름(.pub 서픽스가 없는 파일)입니다.
  4. 로컬 디스크에서 비공개 키를 삭제하거나 키를 보호합니다.

ConfigManagementFeatureSpecConfigManagementBinding 구성

다음으로 클러스터에 ConfigManagementFeatureSpec 리소스를 만듭니다.

kubectl apply -f CONFIG_MANAGEMENT_YAML --kubeconfig=ADMIN_OIDC_KUBECONFIG

다음을 바꿉니다.

  • ADMIN_OIDC_KUBECONFIG: 관리자 클러스터의 OIDC 사용자 인증 정보입니다. 자세한 내용은 OIDC로 관리자 클러스터 Kubernetes API 서버에 로그인을 참조하세요.
  • CONFIG_MANAGEMENT_YAML: ConfigManagementFeatureSpec 리소스의 구성 파일 경로입니다. 다음 예시를 참조하세요.
apiVersion: managementcenter.anthos.cloud.google.com/v1
kind: ConfigManagementFeatureSpec
metadata:
  name: config-management-spec-sample
  namespace: anthos-management-center
spec:
  version: "1.8.2"
  git:
    syncRepo: "git@GIT_HOST_ADDRESS:REPO_NAME.git"
    policyDir: "."
    secretType: "ssh"
    syncBranch: "master"
    syncRev: "HEAD"
    syncWait: 15
  policyController:
    enabled: true
---
apiVersion: managementcenter.anthos.cloud.google.com/v1
kind: ConfigManagementBinding
metadata:
  name: config-management-binding-sample
  namespace: anthos-management-center
spec:
  configs:
  - configRef:
      name: config-management-spec-sample
      namespace: anthos-management-center
    placement:
      clusterIDs:
      - "CLUSTER-NAME"

다음을 바꿉니다.

  • GIT_HOST_ADDRESS: Git 저장소의 호스트 주소입니다.
  • REPO_NAME: Git 저장소 이름입니다.
  • CLUSTER-NAME: 클러스터 이름입니다.

업데이트 및 업그레이드

해당 ConfigManagementFeatureSpec을 수정하여 Anthos Config Management를 업데이트하거나 업그레이드할 수 있습니다.

예를 들어 구조화되지 않은 Repo 기능을 사용 설정하려면 ConfigManagementFeatureSpec을 업데이트합니다.

apiVersion: managementcenter.anthos.cloud.google.com/v1
kind: ConfigManagementFeatureSpec
metadata:
  name: config-management-spec-sample
  namespace: anthos-management-center
spec:
  version: "1.8.2"
  sourceFormat: "unstructured"
  git:
    syncRepo: "git@<YOUR_GIT_HOST_ADDRESS>:<YOUR_UNSTRUCTURED_REPO>.git"
    policyDir: "."
    secretType: "ssh"
    syncBranch: "master"
    syncRev: "HEAD"
    syncWait: 15
  policyController:
    enabled: true

Anthos Config Management 상태 보기

ConfigManagementBinding 리소스를 쿼리하여 Anthos Config Management 상태를 볼 수 있습니다.

kubectl get ConfigManagementBinding -o \
jsonpath="{range .items[*].status.bindingItemStatuses[*]}{'\n'}{['clusterID', 'configRef', 'conditions']}" \
--namespace=anthos-management-center \
--kubeconfig=ADMIN_OIDC_KUBECONFIG \
| grep CLUSTER-NAME

다음을 바꿉니다.

다음은 정상 상태의 Anthos Config Management에서 출력된 예시입니다.

target-user-cluster-1 {"name":"new-spec-f75y8","namespace":"anthos-management-center"} [{"lastTransitionTime":"2021-05-27T18:06:27Z","message":"","observedGeneration":1,"reason":"Healthy","status":"True","type":"Ready"}]

다음 단계