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

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

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

또한 Config Sync 버전 1.11.0 이상에서 제공되는 depends-on 주석을 사용하여 명시적 종속 항목을 설정할 수도 있습니다. 예를 들어 Wordpress가 시작되기 전에 데이터베이스가 적용되고 준비되도록 Wordpress 배포 전에 MySQL StatefulSet가 시작되도록 할 수 있습니다.

요구사항

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

  • 종속 항목은 해당하는 종속 객체와 동일한 Git 저장소에 있어야 하며 동일한 RootSync 또는 RepoSync 객체에서 관리해야 합니다.

활성화 및 조정

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

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

객체에 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).