4.6. Operator 조건 관리
클러스터 관리자는 OLM(Operator Lifecycle Manager)을 사용하여 Operator 상태를 관리할 수 있습니다.
4.6.1. Operator 상태 덮어쓰기
클러스터 관리자는 Operator에서 보고한 지원되는 Operator 상태를 무시해야 할 수 있습니다. 이러한 상태가 있는 경우 Spec.Overrides
어레이의 Operator 상태가 Spec.Conditions
어레이의 상태를 덮어씁니다. 그러면 클러스터 관리자가 Operator에서 OLM(Operator Lifecycle Manager)에 상태를 잘못 보고하는 상황을 처리할 수 있습니다.
기본적으로 Spec.Overrides
배열은 클러스터 관리자가 추가할 때까지 OperatorCondition
오브젝트에 존재하지 않습니다. 사용자가 추가하거나 사용자 정의 Operator 논리의 결과로 Spec.Conditions
어레이도 존재하지 않습니다.
예를 들어 항상 업그레이드할 수 없다고 보고하는 알려진 버전의 Operator를 떠올려 보십시오. 이 경우 Operator에서 업그레이드할 수 없다고 보고하더라도 Operator를 업그레이드해야 할 수 있습니다. 이는 OperatorCondition
오브젝트의 Spec.Overrides
어레이에 조건 유형
및 상태를
추가하여 Operator 조건을 재정의하여 수행할 수 있습니다.
사전 요구 사항
-
OperatorCondition
오브젝트가 있는 Operator가 OLM을 사용하여 설치되었습니다.
프로세스
Operator의
OperatorCondition
오브젝트를 편집합니다.$ oc edit operatorcondition <name>
오브젝트에
Spec.Overrides
어레이를 추가합니다.Operator 조건 덮어쓰기 예제
apiVersion: operators.coreos.com/v1 kind: OperatorCondition metadata: name: my-operator namespace: operators spec: overrides: - type: Upgradeable 1 status: "True" reason: "upgradeIsSafe" message: "This is a known issue with the Operator where it always reports that it cannot be upgraded." conditions: - type: Upgradeable status: "False" reason: "migration" message: "The operator is performing a migration." lastTransitionTime: "2020-08-24T23:15:55Z"
- 1
- 클러스터 관리자는 업그레이드 준비 상태를
True
로 변경할 수 있습니다.
4.6.2. Operator 조건을 사용하도록 Operator 업데이트
OLM(Operator Lifecycle Manager)은 OLM에서 조정하는 각 ClusterServiceVersion
리소스에 대해 OperatorCondition
리소스를 자동으로 생성합니다. CSV의 모든 서비스 계정에는 Operator에 속하는 OperatorCondition
과 상호 작용할 수 있도록 RBAC가 부여됩니다.
Operator 작성자는 Operator가 OLM에 의해 배포된 후 operator-lib
라이브러리를 사용하여 자체 조건을 설정할 수 있도록 Operator를 개발할 수 있습니다. Operator 작성자가 Operator 조건을 설정하는 논리를 작성하는 방법에 대한 자세한 내용은 Operator SDK 설명서를 참조하십시오.
4.6.2.1. 기본값 설정
OLM은 이전 버전과의 호환성을 유지하기 위해 OperatorCondition
리소스의 부재를 조건을 옵트아웃하는 것으로 처리합니다. 따라서 Operator 조건 사용에 옵트인하는 Operator는 Pod의 준비 상태 프로브를 true
로 설정하기 전에 기본 조건을 설정해야 합니다. 그러면 Operator에 조건을 올바른 상태로 업데이트할 수 있는 유예 기간이 제공됩니다.