리소스 객체 간 종속 항목 선언

이 가이드에서는 구성 동기화에서 종속 항목이 작동하는 방법과 자체 종속 항목을 지정하는 방법을 설명합니다.

구성 동기화에서는 특정 객체를 클러스터에 동기화할 때 해당 객체 간의 암시적 종속 항목을 자동으로 감지합니다. 예를 들어 네임스페이스 객체는 항상 해당 네임스페이스의 객체보다 먼저 적용되고 CustomResourceDefinition(CRD) 객체는 항상 이 유형의 커스텀 리소스가 적용되기 전에 적용됩니다. 암시적 종속 항목의 삭제 순서는 반대로 적용됩니다. 네임스페이스가 해당 네임스페이스의 객체 다음에 삭제되고 CRD는 해당 유형의 커스텀 리소스 다음에 삭제됩니다.

또한 depends-on 주석을 사용하여 명시적 종속 항목을 설정할 수 있습니다. 예를 들어 Wordpress 배포 전에 MySQL StatefulSet가 시작되게 하여 Wordpress가 시작되기 전에 데이터베이스를 적용 및 준비할 수 있습니다.

요구사항

  • RootSync 및 RepoSync API를 사용 설정해야 합니다. kubectl을 사용하여 구성 동기화를 수동으로 설치했고 RootSync 및 RepoSync API가 사용 설정되지 않았으면 ConfigManagement 객체를 마이그레이션해야 합니다.

  • 제한사항: 종속 항목은 해당하는 종속 항목과 동일한 정보 소스에 있어야 합니다. 종속 항목은 해당 종속 항목과 동일한 RootSync 또는 RepoSync 객체에서 관리해야 하므로 모든 리소스가 동일한 ResourceGroup에 있어야 합니다.

그룹 적용

클러스터에 리소스를 동기화하면 구성 동기화가 직접 또는 간접 종속 항목을 포함하는 리소스를 여러 적용 그룹으로 분할합니다. 하나의 적용 그룹은 서로에 대해 직접 또는 간접 종속 항목이 없는 리소스만으로 구성됩니다. 종속 항목이 없는 적용 그룹이 먼저 적용됩니다.

활성화 및 조정

객체를 활성화(적용 또는 프루닝)하면 컨트롤러에 따라 객체가 조정되는 데 시간이 걸릴 수 있습니다. 예를 들어 배포가 적용될 때 기본 포드가 즉시 준비되지 않을 수 있습니다. 기본 포드가 준비되면 배포가 조정됩니다. 이러한 유형의 객체에 대해 구성 동기화는 여러 조건 유형을 검사하여 객체가 조정되었는지 확인합니다. 자세한 내용은 sigs.k8s.io/cli-utils에서 확인할 수 있습니다.

depends-on 주석을 사용하면 구성 동기화에서 원하는 순서로 객체를 적용할 뿐만 아니라 종속 객체를 적용하기 전에 종속 항목 객체가 조정되었는지 확인합니다.

종속 항목 객체가 기본 조종 제한 시간인 5분 이내에 조정되지 않을 경우 구성 동기화는 다음 동기화 기간이 될 때까지 종속 객체를 적용하지 않습니다. spec.override.reconcileTimeout을 설정하여 기본 조정 제한 시간을 재정의할 수 있습니다.

객체에 depends-on 주석 추가

종속 항목을 지정하려면 config.kubernetes.io/depends-on 주석을 종속 항목 객체를 참조하는 값과 함께 종속 객체에 추가합니다.

Wordpress 예시에서 Wordpress 배포의 주석은 다음과 비슷합니다.

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  namespace: default
  labels:
    app: wordpress
  annotations:
    config.kubernetes.io/depends-on: apps/namespaces/default/StatefulSet/wordpress-mysql

구성 동기화는 객체를 적용할 때 먼저 종속 항목인 객체 wordpress-mysql StatefulSet를 적용합니다. 종속 항목이 조정되면 구성 동기화에서 종속 객체인 wordpress 배포를 적용합니다.

객체 참조

객체 참조에는 다음 구문이 사용됩니다.

  • 네임스페이스 객체:

    GROUP/namespaces/NAMESPACE/KIND/NAME
    
  • 클러스터 범위 객체:

    GROUP/KIND/NAME
    

    다음을 바꿉니다.

    • GROUP: 종속 항목 객체의 그룹입니다.
    • NAMESPACE: 네임스페이스 범위의 종속 항목 객체에 대한 네임스페이스입니다.
    • KIND: 종속 항목 객체의 종류입니다. 이 필드는 대소문자를 구분합니다. 예를 들어 "pod" 대신 "Pod"를 사용합니다.
    • NAME: 종속 항목 객체의 이름입니다.

핵심 그룹의 객체에는 빈 문자열이 대신 사용됩니다(예: /namespaces/test/Pod/pod-a).

,를 사용하여 여러 객체 참조를 구분합니다(예: /namespaces/test/Pod/pod-a,/namespaces/test/Pod/pod-b).