5.15. Go 기반 Operator의 오브젝트 정리 유틸리티
operator-lib
정리 유틸리티를 사용하면 Go 기반 Operator가 더 이상 필요하지 않을 때 오브젝트를 정리하거나 정리할 수 있습니다. Operator 작성자는 유틸리티를 사용하여 사용자 정의 후크 및 전략을 생성할 수도 있습니다.
5.15.1. operator-lib 정리 유틸리티 정보
작업 또는 Pod와 같은 오브젝트는 Operator 라이프 사이클의 정상적인 부분으로 생성됩니다. 클러스터 관리자 또는 Operator에서 이러한 오브젝트를 제거하지 않으면 클러스터에 남아 있고 리소스를 사용할 수 있습니다.
이전에는 불필요한 오브젝트를 정리하는 데 다음 옵션을 사용할 수 있었습니다.
- Operator 작성자는 Operator에 고유한 정리 솔루션을 생성해야 했습니다.
- 클러스터 관리자는 오브젝트를 자체적으로 정리해야 했습니다.
operator-lib
정리 유틸리티는 지정된 네임스페이스의 Kubernetes 클러스터에서 오브젝트를 제거합니다. 라이브러리가 Operator 프레임워크의 일부로 operator-lib
라이브러리 의 0.9.0
버전에 추가되었습니다.
5.15.2. 유틸리티 구성 정리
operator-lib
정리 유틸리티는 Go로 작성되며 Go 기반 Operator의 일반적인 정리 전략을 포함합니다.
설정 예
cfg = Config{ log: logf.Log.WithName("prune"), DryRun: false, Clientset: client, LabelSelector: "app=<operator_name>", Resources: []schema.GroupVersionKind{ {Group: "", Version: "", Kind: PodKind}, }, Namespaces: []string{"<operator_namespace>"}, Strategy: StrategyConfig{ Mode: MaxCountStrategy, MaxCountSetting: 1, }, PreDeleteHook: myhook, }
정리 유틸리티 구성 파일은 다음 필드를 사용하여 정리 작업을 정의합니다.
구성 필드 | 설명 |
---|---|
| 라이브러리 로그 메시지를 처리하는 데 사용되는 로거입니다. |
|
리소스를 제거해야 하는지 여부를 결정하는 부울입니다. |
| Kubernetes API 호출에 사용되는 client-go Kubernetes ClientSet. |
| 정리할 리소스를 찾는 데 사용되는 Kubernetes 라벨 선택기 표현식입니다. |
|
Kubernetes 리소스 종류. |
| 리소스를 검색할 Kubernetes 네임스페이스 목록입니다. |
| 실행할 정리 전략입니다. |
|
|
|
정리 유틸리티를 실행한 후에도 남아 있어야 하는 리소스 수를 지정하는 |
|
정리할 리소스의 수명을 지정하는 Go |
| 사용자 지정 전략 함수로 전달할 수 있는 값 맵을 이동합니다. |
| 선택 사항: 리소스를 정리하기 전에 호출하는 기능을 수행합니다. |
| 선택 사항: 사용자 정의 정리 전략을 구현하는 Go 함수 |
실행 정리
정리 구성에서 실행 기능을 실행하여 정리 작업을 호출할 수 있습니다.
err := cfg.Execute(ctx)
cron 패키지를 사용하거나 트리거 이벤트와 함께 정리 유틸리티를 호출하여 정리 작업을 호출할 수도 있습니다.