2.4.4.5. 종속성 모범 사례
종속 항목을 지정할 때는 모범 사례를 고려해야 합니다.
- API 또는 특정 버전의 Operator 범위에 따라
-
Operator는 언제든지 API를 추가하거나 제거할 수 있습니다. 항상 Operator에서 요구하는 API에
olm.gvk
종속성을 지정합니다. 이에 대한 예외는 대신olm.package
제약 조건을 지정하는 경우입니다. - 최소 버전 설정
API 변경에 대한 Kubernetes 설명서에서는 Kubernetes 스타일 Operator에 허용되는 변경 사항을 설명합니다. 이러한 버전 관리 규칙을 사용하면 API가 이전 버전과 호환되는 경우 Operator에서 API 버전 충돌 없이 API를 업데이트할 수 있습니다.
Operator 종속 항목의 경우 이는 API 버전의 종속성을 확인하는 것으로는 종속 Operator가 의도한 대로 작동하는지 확인하는 데 충분하지 않을 수 있을 의미합니다.
예를 들면 다음과 같습니다.
-
TestOperator v1.0.0에서는 v1alpha1 API 버전의
MyObject
리소스를 제공합니다. -
TestOperator v1.0.1에서는 새 필드
spec.newfield
를MyObject
에 추가하지만 여전히 v1alpha1입니다.
Operator에
spec.newfield
를MyObject
리소스에 쓰는 기능이 필요할 수 있습니다.olm.gvk
제약 조건만으로는 OLM에서 TestOperator v1.0.0이 아닌 TestOperator v1.0.1이 필요한 것으로 판단하는 데 충분하지 않습니다.가능한 경우 API를 제공하는 특정 Operator를 미리 알고 있는 경우 추가
olm.package
제약 조건을 지정하여 최솟값을 설정합니다.-
TestOperator v1.0.0에서는 v1alpha1 API 버전의
- 최대 버전 생략 또는 광범위한 범위 허용
Operator는 API 서비스 및 CRD와 같은 클러스터 범위의 리소스를 제공하기 때문에 짧은 종속성 기간을 지정하는 Operator는 해당 종속성의 다른 소비자에 대한 업데이트를 불필요하게 제한할 수 있습니다.
가능한 경우 최대 버전을 설정하지 마십시오. 또는 다른 Operator와 충돌하지 않도록 매우 광범위한 의미 범위를 설정하십시오. 예를 들면
>1.0.0 <2.0.0
과 같습니다.기존 패키지 관리자와 달리 Operator 작성자는 OLM의 채널을 통해 업데이트가 안전함을 명시적으로 인코딩합니다. 기존 서브스크립션에 대한 업데이트가 제공되면 Operator 작성자가 이전 버전에서 업데이트할 수 있음을 나타내는 것으로 간주합니다. 종속성에 최대 버전을 설정하면 특정 상한에서 불필요하게 잘라 작성자의 업데이트 스트림을 덮어씁니다.
참고클러스터 관리자는 Operator 작성자가 설정한 종속 항목을 덮어쓸 수 없습니다.
그러나 피해야 하는 알려진 비호환성이 있는 경우 최대 버전을 설정할 수 있으며 설정해야 합니다. 버전 범위 구문을 사용하여 특정 버전을 생략할 수 있습니다(예:
> 1.0.0 !1.2.1
).
추가 리소스
- Kubernetes 설명서: API 변경