5.5. Helm 기반 Operator
5.5.1. Helm 기반 Operator를 위한 Operator SDK 시작하기 링크 복사링크가 클립보드에 복사되었습니다!
Operator SDK에는 Go 코드를 작성하지 않고도 기존 Helm 차트를 활용하여 Kubernetes 리소스를 통합 애플리케이션으로 배포하는 Operator 프로젝트를 생성하는 옵션이 포함되어 있습니다.
Operator 프로젝트의 관련 스캐폴딩 및 테스트 툴을 포함한 Red Hat 지원 버전의 Operator SDK CLI 툴은 더 이상 사용되지 않으며 향후 OpenShift Container Platform 릴리스에서 제거될 예정입니다. Red Hat은 현재 릴리스 라이프사이클 동안 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않으며 향후 OpenShift Container Platform 릴리스에서 제거됩니다.
새 Operator 프로젝트를 생성하는 데 Red Hat 지원 버전의 Operator SDK는 권장되지 않습니다. 기존 Operator 프로젝트가 있는 Operator 작성자는 OpenShift Container Platform 4.16과 함께 릴리스된 Operator SDK CLI 툴 버전을 사용하여 프로젝트를 유지 관리하고 최신 버전의 OpenShift Container Platform을 대상으로 하는 Operator 릴리스를 생성할 수 있습니다.
Operator 프로젝트의 다음과 같은 관련 기본 이미지는 더 이상 사용되지 않습니다. 이러한 기본 이미지의 런타임 기능 및 구성 API는 버그 수정 및 CVE 문제를 해결하는 데 계속 지원됩니다.
- Ansible 기반 Operator 프로젝트의 기본 이미지
- Helm 기반 Operator 프로젝트의 기본 이미지
OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
지원되지 않는 커뮤니티 유지 관리 버전에 대한 자세한 내용은 Operator SDK(Operator Framework) 를 참조하십시오.
Operator 개발자는 Operator SDK에서 제공하는 툴 및 라이브러리를 사용하여 Helm 기반 Operator를 설정 및 실행하는 기본 동작을 설명하기 위해 Nginx에 대한 Helm 기반 Operator 예제를 빌드하고 클러스터에 배포할 수 있습니다.
5.5.1.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- Operator SDK CLI가 설치됨
-
OpenShift CLI (
oc) 4.16 이상이 설치됨 -
cluster-admin권한이 있는 계정으로oc를 사용하여 OpenShift Container Platform 4.16 클러스터에 로그인함 - 클러스터가 이미지를 가져올 수 있도록 하려면 이미지를 내보내는 리포지토리를 공개로 설정하거나 이미지 가져오기 보안을 구성해야 합니다.
5.5.1.2. Helm 기반 Operator 생성 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
Operator SDK를 사용하여 Nginx에 대한 간단한 Helm 기반 Operator를 빌드하고 배포할 수 있습니다.
프로세스
프로젝트를 생성합니다.
프로젝트 디렉토리를 생성합니다.
$ mkdir nginx-operator프로젝트 디렉터리로 변경합니다.
$ cd nginx-operatorhelm플러그인과 함께operator-sdk init명령을 실행하여 프로젝트를 초기화합니다.$ operator-sdk init \ --plugins=helm
API를 생성합니다.
간단한 Nginx API를 생성합니다.
$ operator-sdk create api \ --group demo \ --version v1 \ --kind Nginx이 API는
helm create명령의 기본 제공 Helm 차트 상용구를 사용합니다.Operator 이미지를 빌드하여 내보냅니다.
기본
Makefile대상을 사용하여 Operator를 빌드하고 내보냅니다. 내보낼 수 있는 레지스트리를 사용하는 이미지의 가져오기 사양에IMG를 설정합니다.$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>Operator를 실행합니다.
CRD를 설치합니다.
$ make install클러스터에 프로젝트를 배포합니다. 내보낸 이미지에
IMG를 설정합니다.$ make deploy IMG=<registry>/<user>/<image_name>:<tag>
SCC(보안 컨텍스트 제약 조건)를 추가합니다.
Nginx 서비스 계정에는 OpenShift Container Platform에서 실행할 수 있는 권한이 필요합니다.
nginx-samplePod의 서비스 계정에 다음 SCC를 추가합니다.$ oc adm policy add-scc-to-user \ anyuid system:serviceaccount:nginx-operator-system:nginx-sample샘플 CR(사용자 정의 리소스)을 생성합니다.
샘플 CR을 생성합니다.
$ oc apply -f config/samples/demo_v1_nginx.yaml \ -n nginx-operator-systemCR에서 Operator를 조정하는지 확인합니다.
$ oc logs deployment.apps/nginx-operator-controller-manager \ -c manager \ -n nginx-operator-system
CR을 삭제합니다.
다음 명령을 실행하여 CR을 삭제합니다.
$ oc delete -f config/samples/demo_v1_nginx.yaml -n nginx-operator-system정리합니다.
다음 명령을 실행하여 이 절차의 일부로 생성된 리소스를 정리합니다.
$ make undeploy