kubectl 명령어로 구성 동기화 구성

이 페이지에서는 Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치한 후 kubectl 명령어를 사용해서 구성 동기화를 구성하는 방법을 설명합니다.

콘솔 또는 CLI를 사용하여 구성을 많이 변경할 수 있지만 일부 구성 동기화 기본값을 재정의하고 SSL 인증서 확인을 제어하며 인증 기관을 사용하려면 kubectl 명령어를 사용해야 합니다.

RootSync 구성 파일 만들기 및 수정

kubectl 명령어를 사용하여 구성 동기화를 구성하려면 YAML 파일을 만들어서 RootSync 객체를 수정합니다.

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 구성 동기화를 설치하면 구성 동기화는 root-sync라는 RootSync 객체를 자동으로 만듭니다. 이 객체에는 구성 동기화에 대한 최신 구성 정보가 포함됩니다. Google Cloud 콘솔 또는 Google Cloud CLI에서 변경을 수행할 때마다 root-sync가 업데이트됩니다.

kubectl을 사용하여 수정할 수 있는 필드에 대해 알아보기

Google Cloud 콘솔 또는 Google Cloud CLI에서 지원되지 않는 필드에 kubectl 명령어를 사용하여 root-sync에 고급 변경사항을 적용할 수 있습니다. kubectl 명령어를 사용해서 RootSync 또는 RepoSync 객체를 직접 만든 후 업데이트하려면 RootSync 및 RepoSync 필드를 참조하세요.

다음 섹션에서 만드는 YAML 파일을 변경하기 전에 다음 표를 숙지합니다. 이 표에는 편집 및 추가할 수 있는 필드가 나열되어 있습니다. 이 표에 나열되지 않은 필드를 수정하면 구성 동기화는 Google Cloud 콘솔 또는 Google Cloud CLI에서 구성 동기화를 마지막으로 구성했을 때 설정한 값으로 변경사항을 자동으로 되돌립니다.

설명
spec.helm Helm 저장소 구성의 모든 필드입니다.
spec.override 기본 구성을 재정의하는 모든 필드입니다.
spec.git.noSSLVerify Git의 SSL 인증서 확인을 사용 설정 또는 사용 중지할지 지정합니다. 기본값은 false입니다.
spec.git.caCertSecretRef.name Git 저장소의 인증 기관(CA) 인증서가 포함된 보안 비밀의 이름입니다.
spec.oci.caCertSecretRef.name OCI 저장소의 인증 기관(CA) 인증서가 포함된 보안 비밀의 이름입니다.

파일 만들기

root-sync를 위한 구성 파일을 만들고 수정하려면 다음 단계를 완료하세요.

  1. 올바른 클러스터에 대한 구성 정보를 검색하고 있는지 확인하려면 kubectl 명령줄 액세스를 구성합니다.

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 변경하려는 구성 동기화 구성이 포함된 클러스터의 이름입니다.
    • ZONE: 클러스터를 만든 영역입니다.
    • PROJECT_ID: 프로젝트 ID입니다.
  2. 구성 동기화로 만든 RootSync 객체의 구성 정보를 YAML 파일에 복사합니다.

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    FILE_NAME을 구성 파일의 이름으로 바꿉니다.

  3. 만든 YAML 파일을 열고 필요한 구성 변경을 수행합니다. 예를 들어 git-sync 컨테이너의 메모리 한도를 재정의하려면 다음 필드를 굵게 표시합니다.

    apiVersion: v1
    items:
    - apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
    annotations:
      configmanagement.gke.io/managed-by-hub: "true"
      configmanagement.gke.io/update-time: "1644945169"
    creationTimestamp: "2022-02-15T17:12:52Z"
    generation: 1
    name: root-sync
    namespace: config-management-system
    resourceVersion: "211980457"
    uid: aa30a94b-2825-4590-ad30-5af848403502
    spec:
    git:
      auth: none
      branch: main
      dir: /quickstart/config-sync
      period: 15s
      repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      revision: HEAD
      secretRef: {}
    override:
      resources:
      - containerName: "git-sync"
        memoryLimit: "400Mi"
    sourceFormat: unstructured
    # Remainder of RootSync omitted
    
  4. 변경사항을 YAML 파일에 적용합니다.

    kubectl apply -f FILE_NAME.yaml
    
  5. 구성 동기화로 변경사항이 적용되었는지 확인하려면 RootSync 객체를 봅니다.

    kubectl describe rootsync root-sync -n config-management-system
    
  6. 변경사항으로 오류가 발생하지 않았는지 확인하려면 nomos status 명령어를 사용합니다.

    nomos status
    

인증 기관 구성

아직 신뢰할 수 없는 인증 기관(CA)의 인증서로 구성된 서버의 경우, 구성 동기화는 CA 인증서를 사용하여 서버에 대한 HTTPS 연결을 확인하도록 구성할 수 있습니다. 이는 Git, Helm 또는 OCI 서버에서 지원됩니다. CA 인증서에는 전체 SSL 인증서(루트/중간/리프)가 포함되어야 합니다. 서버가 이미 신뢰할 수 있는 CA를 사용 중이거나 HTTPS를 통해 연결하지 않는 경우 이 단계를 건너뛰고 caCertSecretRef를 설정하지 않습니다.

RootSync

  1. Git 서버의 인증서를 발급하는 데 사용된 CA 인증서를 가져와서 파일에 저장합니다.

  2. RootSync 객체의 경우 config-management-system 네임스페이스에 보안 비밀을 만들어야 합니다. 예를 들면 다음과 같습니다.

    kubectl create secret generic ROOT_CA_CERT_SECRET_NAME 
    --namespace=config-management-system
    --from-file=cert=/path/to/CA_CERT_FILE

  3. RootSync 객체를 구성할 때 RootSync 객체의 caCertSecretRef.name 필드 값을 ROOT_CA_CERT_SECRET_NAME으로 설정합니다.

RepoSync

  1. Git 서버의 인증서를 발급하는 데 사용된 CA 인증서를 가져와서 파일에 저장합니다.

  2. RepoSync 객체의 경우 RepoSync와 동일한 네임스페이스에 보안 비밀을 만들어야 합니다. 예를 들면 다음과 같습니다.

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. RepoSync를 구성할 때 RepoSync 객체의 caCertSecretRef.name 필드 값을 NAMESPACE_CA_CERT_SECRET_NAME으로 설정합니다.

RootSync 객체 삭제

root-sync를 삭제하려면 다음 명령어를 실행합니다.

kubectl delete -f FILE_NAME

FILE_NAME을 RootSync 구성 파일의 이름으로 바꿉니다. 예를 들면 root-sync.yaml입니다.

RootSync 또는 RepoSync 객체를 삭제해도 구성 동기화 주석 및 라벨은 삭제되지 않습니다. 관리형 리소스를 삭제하려면 비어 있는 Git 디렉터리에서 동기화합니다.

다음 단계