RootSync 및 RepoSync 객체 모니터링

이 페이지에서는 RootSyncRepoSync 객체를 모니터링할 수 있는 다양한 방법을 보여줍니다. 예를 들어 정보 소스의 최신 커밋이 클러스터에 적용되고 성공적으로 조정되었는지 확인해야 할 수 있습니다.

동기화된 커밋 보기

RootSync 또는 RepoSync 객체의 .status.sync 필드를 확인하여 클러스터에 동기화되는 커밋을 확인할 수 있습니다.

  • RootSync 객체의 동기화된 커밋을 보려면 다음 명령어를 실행합니다.

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    ROOT_SYNC_NAMERootSync 객체 이름으로 바꿉니다.

  • RepoSync 객체의 동기화된 커밋을 보려면 다음 명령어를 실행합니다.

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    다음을 바꿉니다.

    • REPO_SYNC_NAME: RepoSync 객체 이름
    • REPO_SYNC_NAMESPACE: 네임스페이스 저장소를 만든 네임스페이스

이러한 명령어의 출력에는 소스 커밋 값과 동기화된 커밋이 표시됩니다. 예를 들어 RepoSync의 명령어를 실행했으면 다음과 비슷한 출력이 표시됩니다.

NAME        RENDERINGCOMMIT                            SOURCECOMMIT                               SYNCCOMMIT
root-sync   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72

RENDERINGCOMMIT 열의 값은 hydration-controller에서 처리되는 커밋입니다. 렌더링이 필요하지 않으면 값은 SOURCECOMMIT 열과 동일합니다. SOURCECOMMIT 열의 값은 클러스터에 동기화해야 하는 정보 소스에서의 커밋입니다. SYNCCOMMIT 열의 값은 클러스터에 배포된 커밋입니다. SOURCECOMMITSYNCCOMMIT 열의 두 값이 동일하면 예상된 커밋이 클러스터에 배포된 것입니다.

커밋의 리소스가 조정되었는지 확인

ResourceGroups는 정보 소스에 선언된 관리형 리소스의 조정 상태를 캡처하므로 커밋의 리소스가 조정되었는지 확인하기 위해 이를 검사할 수 있습니다.

ResourceGroup 객체는 RootSync 또는 RepoSync 객체와 동일한 네임스페이스 및 이름을 갖습니다. 예를 들어 네임스페이스 config-management-system의 이름이 root-syncRootSync 객체의 경우 해당 ResourceGroup 객체도 네임스페이스 config-management-systemroot-sync입니다.

  • RootSync 객체의 ResourceGroup 객체를 가져오려면 다음 안내를 따르세요.

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • RepoSync 객체의 ResourceGroup 객체를 가져오려면 다음 안내를 따르세요.

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    다음을 바꿉니다.

    • ROOT_SYNC_NAME: 조회하려는 ResourceGroup 객체의 이름
    • REPO_SYNC_NAME: 조회하려는 ResourceGroup 객체의 이름
    • REPO_SYNC_NAMESPACE: 조회하려는 ResourceGroup 객체의 이름

커밋의 리소스가 조정되었는지 확인하려면 출력에서 다음을 확인합니다.

  • .status.observedGeneration은 ResourceGroup 객체의 .metadata.generation 필드 값과 동일합니다.
  • Stalled 조건 및 Reconciling 조건 모두 status"False"입니다.
  • .status.resourceStatuses 필드의 각 항목 상태는 Current입니다.

오류 보기

RootSyncRepoSync 객체는 status 필드를 사용하여 정보 소스의 구성을 클러스터에 동기화할 때 발생하는 오류를 추적합니다.

  • RootSync 객체의 상태를 보려면 다음 명령어를 실행합니다.

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system -o yaml
    

    ROOT_SYNC_NAMERootSync 객체 이름으로 바꿉니다.

  • RepoSync 객체의 상태를 보려면 다음 명령어를 실행합니다.

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    다음을 바꿉니다.

    • REPO_SYNC_NAME: RepoSync 객체 이름
    • NAMESPACE: 네임스페이스 저장소를 만든 네임스페이스

status 필드 아래의 하위 필드에 대한 자세한 내용은 객체 상태를 참조하세요.

객체 세부정보 보기

RootSyncRepoSync 객체의 세부정보를 보고 잠재적 오류에 대한 자세한 정보를 확인하려면 kubectl describe 명령어를 사용합니다.

이 명령어의 출력에는 메모리 제약조건(OOMKilled), 예약 실패 또는 이미지 가져오기 오류와 같은 문제 디버깅에 특히 도움이 될 수 있는 이벤트가 포함됩니다.

더 읽기 쉬운 형식을 만들려면 다음 명령어에 -o yaml을 추가하여 출력을 YAML로 변환합니다. 이 형식은 특정 매개변수, 주석 또는 리소스 사양을 검사해야 할 때 특히 유용합니다.

  • RootSync 객체의 세부정보를 보려면 다음 명령어를 실행합니다.

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    ROOT_SYNC_NAMERootSync 객체 이름으로 바꿉니다.

  • RepoSync 객체의 세부정보를 보려면 다음 명령어를 실행합니다.

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    다음을 바꿉니다.

    • REPO_SYNC_NAME: RepoSync 객체 이름
    • NAMESPACE: 네임스페이스 저장소를 만든 네임스페이스

리소스가 준비되었는지 확인

클러스터에 동기화된 리소스가 준비되었는지 확인하려면 조정 상태를 확인합니다. 예를 들어 조정 상태를 보면 동기화된 배포가 트래픽을 처리할 준비가 되었는지 확인할 수 있습니다.

클러스터에 동기화된 각 정보 소스의 경우 모든 리소스의 조정 상태가 ResourceGroup이라는 리소스에 집계됩니다. 각 RootSync 또는 RepoSync 객체에 대해 클러스터에 적용된 리소스 집합을 캡처하고 해당 상태를 수집하기 위해 ResourceGroup이 생성됩니다.

  • RootSync 객체의 조정 상태를 보려면 다음 명령어를 실행합니다.

    kubectl get resourcegroup.kpt.dev ROOT_SYNC_NAME -n config-management-system -o yaml
    

    ROOT_SYNC_NAMERootSync 객체 이름으로 바꿉니다.

  • RepoSync 객체의 조정 상태를 보려면 다음 명령어를 실행합니다.

    kubectl get resourcegroup.kpt.dev REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    다음을 바꿉니다.

    • REPO_SYNC_NAME: RepoSync 객체 이름
    • NAMESPACE: 네임스페이스 저장소를 만든 네임스페이스

출력에서 모든 ResourceGroup 리소스 상태를 확인합니다. 예를 들어 다음 출력은 nginx-deployment라는 배포가 준비되었음을 보여줍니다.

resourceStatuses:
- group: apps
  kind: Deployment
  name: nginx-deployment
  namespace: default
  status: Current

로그 보기

구성 동기화는 개발자가 만드는 RootSyncRepoSync 객체마다 동기화를 수행하기 위해 조정자 배포를 만듭니다. 이 섹션에서는 이러한 조정자에 대한 로그를 보는 방법을 설명합니다. RootSyncRepoSync 객체 상태에서 제공되는 것 이상의 진행 상태, 경고, 오류에 대한 추가 정보를 제공하여 문제를 디버깅할 때 로그를 확인하는 것이 도움이 됩니다.

  • RootSync 또는 RepoSync 조정자에 대한 로그를 보려면 다음 명령어를 실행합니다.

    kubectl logs -n config-management-system deployment/RECONCILER_NAME CONTAINER_NAME
    

    다음을 바꿉니다.

    • RECONCILER_NAME: RootSync 또는 RepoSync 객체의 조정자 이름.

      • RootSync의 경우 조정자 이름은 root-reconciler-ROOT_SYNC_NAME이거나 RootSync 이름이 root-syncroot-reconciler입니다.

      • RepoSync의 경우 조정자 이름은 ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH이거나 RepoSync 이름이 repo-syncns-reconciler-NAMESPACE입니다. 여기서 NAMESPACERepoSync 객체를 만든 네임스페이스입니다.

    • CONTAINER_NAME: 컨테이너 이름은 reconciler, git-sync, hydration-controller, oci-sync, helm-sync 값 중 하나여야 합니다. 이러한 컨테이너에 대한 자세한 내용은 조정자 컨테이너를 참조하세요.

RootSync 또는 RepoSync 조정자 로그 수준 구성

컨테이너 로그에 더 많은 정보를 포함하려면 로그 세부정보 수준을 구성합니다. 기본적으로 대부분의 컨테이너의 로그 세부정보 수준 기본값은 0입니다. 기본값이 5git-syncotel-agent 컨테이너는 예외입니다.

로그 세부정보 수준을 변경할 때 로그 세부정보 수준을 늘리면 기록되는 데이터 양이 많아져 로깅 비용이 증가합니다.

로그 세부정보 수준을 변경하려면 다음 예시와 같이 .spec.override.logLevels 필드를 사용합니다.

apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
  name: root-sync
  namespace: config-management-system
spec:
  override:
    logLevels:
    - containerName: "reconciler"
      logLevel: 0
    - containerName: "git-sync"
       logLevel: 10

containerName 필드의 값은 reconciler, git-sync, hydration-controller, oci-sync, helm-sync 중 하나여야 합니다.

로그 세부정보 수준이 구성되었는지 확인하려면 다음 명령어를 실행합니다.

kubectl get deployment.apps/root-reconciler -n config-management-system -o yaml

로그 세부정보 수준은 spec.template.spec.containers[] 내의 args 중 하나로 찾을 수 있으며 -v=0과 같습니다. 여기서 0은 현재 로그 세부정보 수준입니다. 이 예시에서 로그 세부정보 수준 값이 0이면 중요한 이벤트만 로깅합니다.