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

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

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

RootSync 구성 파일 만들기 및 수정

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

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

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

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

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

설명
spec.git.noSSLVerify noSSLVerify는 SSL 인증서 확인을 사용 설정 또는 사용 중지할지 여부를 지정합니다. 기본값: false
noSSLVerifytrue로 설정된 경우 Git에 SSL 인증서 확인을 건너뛰도록 지정합니다.
spec.git.caCertSecretRef.name 인증 기관(CA) 인증서가 포함된 보안 비밀의 이름입니다. 이 필드가 제공되면 Git 서버는 이 CA에서 발급한 인증서를 사용해야 합니다. CA 인증서는 `cert`라는 키 아래 보안 비밀에 저장되어야 합니다.
spec.override.resources 컨테이너 리소스 요청 및 한도 재정의 목록입니다. 선택사항.
목록의 각 항목에 3개 필드가 포함됩니다.
  • containerName: 이 필드는 git-sync, oci-sync, hydration-controller, 또는 reconciler 중 하나일 수 있습니다.
  • cpuRequest(선택사항)
  • cpuLimit(선택사항)
  • memoryRequest(선택사항)
  • memoryLimit(선택사항)

리소스 요청 또는 한도의 재정의 값이 제공되지 않았으면 요청 또는 한도에 대해 기본 리소스 값이 사용됩니다.
spec.override.gitSyncDepth gitSyncDepth를 사용하면 가져올 Git 커밋 수를 재정의할 수 있습니다.
0보다 작지 않아야 합니다.
이 필드가 0이면 구성 동기화가 전체 클론을 수행하고 이 필드가 0보다 크면 부분 클론을 수행합니다.
이 필드를 제공하지 않으면 구성 동기화가 이를 자동으로 구성합니다.
spec.override.statusMode statusMode를 사용하면 리소스 수준 상태 캡처를 사용 설정하거나 사용 중지할 수 있습니다.
기본값은 enabled입니다.
리소스 수준 상태 캡처를 사용 중지하려면 이 필드를 disabled로 설정합니다.
spec.override.reconcileTimeout reconcileTimeout을 사용하면 포기하기 전에 적용 그룹의 리소스가 조정될 때까지 기다리는 시간에 대한 기준점을 재정의할 수 있습니다. 커밋의 모든 리소스는 종속 항목을 기반으로 여러 적용 그룹에 있을 수 있습니다.
기본 제한 시간은 5m입니다.
문자열을 사용하여 이 필드 값을 지정합니다(예: 30s, 5m).
spec.override.enableShellInRendering enableShellInRendering은 렌더링 프로세스에서 셸 액세스를 사용 설정 또는 사용 중지할지 여부를 지정합니다. Kustomize 원격 베이스에는 셸 액세스가 필요합니다. 이 필드를 true로 설정하면 렌더링 프로세스에서 셸 액세스를 사용 설정하고 공개 저장소에서 원격 베이스를 가져올 수 있습니다.
기본값은 false입니다.

파일 만들기

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 디렉터리에서 동기화합니다.

다음 단계