검색

5.14. Go 기반 Operator의 오브젝트 정리 유틸리티

download PDF

operator-lib 정리 유틸리티를 사용하면 Go 기반 Operator가 더 이상 필요하지 않을 때 오브젝트를 정리하거나 정리할 수 있습니다. Operator 작성자는 유틸리티를 사용하여 사용자 정의 후크 및 전략을 생성할 수도 있습니다.

중요

Operator 프로젝트의 관련 스캐폴딩 및 테스트 툴을 포함하여 Operator SDK CLI 툴의 Red Hat 지원 버전은 더 이상 사용되지 않으며 향후 OpenShift Dedicated 릴리스에서 제거될 예정입니다. Red Hat은 현재 릴리스 라이프사이클 동안 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않으며 향후 OpenShift Dedicated 릴리스에서 제거됩니다.

새 Operator 프로젝트를 생성하는 데 Red Hat 지원 버전의 Operator SDK는 권장되지 않습니다. 기존 Operator 프로젝트가 있는 Operator 작성자는 OpenShift Dedicated 4와 함께 릴리스된 Operator SDK CLI 툴 버전을 사용하여 프로젝트를 유지 관리하고 최신 버전의 OpenShift Dedicated를 대상으로 하는 Operator 릴리스를 생성할 수 있습니다.

Operator 프로젝트의 다음과 같은 관련 기본 이미지는 더 이상 사용되지 않습니다. 이러한 기본 이미지의 런타임 기능 및 구성 API는 버그 수정 및 CVE 문제를 해결하는 데 계속 지원됩니다.

  • Ansible 기반 Operator 프로젝트의 기본 이미지
  • Helm 기반 Operator 프로젝트의 기본 이미지

지원되지 않는 커뮤니티 유지 관리 버전에 대한 자세한 내용은 Operator SDK(Operator Framework) 를 참조하십시오.

5.14.1. operator-lib 정리 유틸리티 정보

작업 또는 Pod와 같은 오브젝트는 Operator 라이프 사이클의 정상적인 부분으로 생성됩니다. dedicated-admin 역할 또는 Operator가 이러한 오브젝트를 제거하지 않는 경우 클러스터에 남아 있고 리소스를 사용할 수 있습니다.

이전에는 불필요한 오브젝트를 정리하는 데 다음 옵션을 사용할 수 있었습니다.

  • Operator 작성자는 Operator에 고유한 정리 솔루션을 생성해야 했습니다.
  • 클러스터 관리자는 오브젝트를 자체적으로 정리해야 했습니다.

operator-lib 정리 유틸리티는 지정된 네임스페이스의 Kubernetes 클러스터에서 오브젝트를 제거합니다. 라이브러리가 Operator 프레임워크의 일부로 operator-lib 라이브러리0.9.0 버전에 추가되었습니다.

5.14.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,
}

정리 유틸리티 구성 파일은 다음 필드를 사용하여 정리 작업을 정의합니다.

구성 필드설명

log

라이브러리 로그 메시지를 처리하는 데 사용되는 로거입니다.

DryRun

리소스를 제거해야 하는지 여부를 결정하는 부울입니다. true 로 설정하면 유틸리티가 실행되지만 리소스를 제거하지는 않습니다.

Clientset

Kubernetes API 호출에 사용되는 client-go Kubernetes ClientSet.

LabelSelector

정리할 리소스를 찾는 데 사용되는 Kubernetes 라벨 선택기 표현식입니다.

Resources

Kubernetes 리소스 종류. PodKindJobKind 는 현재 지원됩니다.

네임스페이스

리소스를 검색할 Kubernetes 네임스페이스 목록입니다.

전략

실행할 정리 전략입니다.

Strategy.Mode

MaxCountStrategy,MaxAgeStrategy 또는 CustomStrategy 가 현재 지원됩니다.

Strategy.MaxCountSetting

정리 유틸리티가 실행된 후에도 남아 있어야 하는 리소스 수를 지정하는 MaxCountStrategy 의 정수 값입니다.

Strategy.MaxAgeSetting

정리할 리소스의 수명을 지정하는 Go time.Duration 문자열 값(예: 48h )입니다.

Strategy.CustomSettings

사용자 지정 전략 함수로 전달할 수 있는 값 맵을 이동합니다.

PreDeleteHook

선택 사항: 리소스를 정리하기 전에 호출하는 기능을 수행합니다.

customStrategy

선택 사항: 사용자 정의 정리 전략을 구현하는 Go 함수입니다.

실행 정리

정리 구성에서 실행 기능을 실행하여 정리 작업을 호출할 수 있습니다.

err := cfg.Execute(ctx)

cron 패키지를 사용하거나 트리거 이벤트와 함께 정리 유틸리티를 호출하여 정리 작업을 호출할 수도 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.