5.6.6. Operator 조건 활성화
OLM(Operator Lifecycle Manager)에서는 Operator에 Operator를 관리하는 동안 OLM 동작에 영향을 미치는 복잡한 상태를 보고하는 채널을 제공합니다. 기본적으로 OLM은 Operator를 설치할 때 OperatorCondition
CRD(사용자 정의 리소스 정의)를 생성합니다. OperatorCondition
CR(사용자 정의)에 설정된 조건에 따라 OLM의 동작이 적절하게 변경됩니다.
Operator 조건을 지원하려면 Operator가 OLM에서 생성한 OperatorCondition
CR을 읽고 다음 작업을 완료할 수 있어야 합니다.
- 특정 조건을 가져옵니다.
- 특정 조건의 상태를 설정합니다.
이 작업은 operator-lib
라이브러리를 사용하여 수행할 수 있습니다. Operator 작성자는 라이브러리에서 클러스터의 Operator 보유 OperatorCondition
CR에 액세스할 수 있도록 Operator에 controller-runtime
클라이언트를 제공할 수 있습니다.
라이브러리에서는 일반 Conditions
인터페이스를 제공합니다. 이 인터페이스는 OperatorCondition
CR에서 다음과 같은 방법으로 conditionType
을 Get
및 Set
합니다.
Get
-
라이브러리는 특정 조건을 가져오기 위해
controller-runtime
의client.Get
함수를 사용합니다. 이 함수에는conditionAccessor
에 있는types.NamespacedName
유형의ObjectKey
가 필요합니다. Set
-
특정 조건의 상태를 업데이트하기 위해 라이브러리는
controller-runtime
의client.Update
함수를 사용합니다.conditionType
이 CRD에 없으면 오류가 발생합니다.
Operator는 CR의 status
하위 리소스만 수정할 수 있습니다. Operator는 조건을 포함하도록 status.conditions
어레이를 삭제하거나 업데이트할 수 있습니다. 조건에 있는 필드의 형식 및 설명에 대한 자세한 내용은 업스트림 조건 GoDocs를 참조하십시오.
Operator SDK v1.3.0은 operator-lib
v0.3.0을 지원합니다.
사전 요구 사항
- Operator SDK를 사용하여 생성한 Operator 프로젝트입니다.
프로세스
Operator 프로젝트에서 Operator 조건을 활성화하려면 다음을 수행합니다.
Operator 프로젝트의
go.mod
파일에operator-framework/operator-lib
을 필수 라이브러리로 추가합니다.module github.com/example-inc/memcached-operator go 1.15 require ( k8s.io/apimachinery v0.19.2 k8s.io/client-go v0.19.2 sigs.k8s.io/controller-runtime v0.7.0 operator-framework/operator-lib v0.3.0 )
Operator 논리에 다음과 같은 결과가 발생하는 자체 생성자를 작성합니다.
-
controller-runtime
클라이언트를 허용합니다. -
conditionType
을 허용합니다. -
Condition
인터페이스를 반환하여 조건을 업데이트하거나 추가합니다.
OLM은 현재
Upgradeable
조건을 지원하므로Upgradeable
조건에 액세스할 수 있는 인터페이스를 생성할 수 있습니다. 예를 들면 다음과 같습니다.import ( ... apiv1 "github.com/operator-framework/api/pkg/operators/v1" ) func NewUpgradeable(cl client.Client) (Condition, error) { return NewCondition(cl, "apiv1.OperatorUpgradeable") } cond, err := NewUpgradeable(cl);
이 예제에서는 유형
Condition
의 변수cond
를 생성하는 데NewUpgradeable
생성자가 추가로 사용됩니다. 결국cond
변수에는 OLMUpgradeable
조건을 처리하는 데 사용할 수 있는Get
및Set
방법이 포함됩니다.-
추가 리소스