5.4. Ansible 기반 Operator
5.4.1. Ansible 기반 Operator를 위한 Operator SDK 시작하기
Operator SDK에는 Go 코드를 작성하지 않고도 기존 Ansible 플레이북 및 모듈을 활용하여 Kubernetes 리소스를 통합 애플리케이션으로 배포하는 Operator 프로젝트를 생성하는 옵션이 포함되어 있습니다.
Operator 개발자는 Operator SDK에서 제공하는 툴 및 라이브러리를 사용하여 Ansible 기반 Operator를 설정 및 실행하는 기본 동작을 설명하기 위해 분산형 키-값 저장소인 Memcached에 대한 Go 기반 Operator 예제를 빌드하고 클러스터에 배포할 수 있습니다.
5.4.1.1. 사전 요구 사항
- Operator SDK CLI가 설치됨
-
OpenShift CLI(
oc
) v4.7 이상이 설치됨 - Ansible 버전 v2.9.0
- Ansible Runner 버전 v1.1.0 이상
- Ansible Runner HTTP Event Emitter 플러그인 버전 v1.0.0 이상
- OpenShift Python 클라이언트 버전 v0.11.2 이상
-
cluster-admin
권한이 있는 계정으로oc
를 사용하여 OpenShift Container Platform 4.7 클러스터에 로그인함 - 클러스터에서 이미지를 가져올 수 있도록 하려면 이미지를 내보내는 리포지토리를 공개로 설정하거나 이미지 가져오기 보안을 구성해야 합니다.
5.4.1.2. Ansible 기반 Operator 생성 및 배포
Operator SDK를 사용하여 Memcached에 대한 간단한 Ansible 기반 Operator를 빌드하고 배포할 수 있습니다.
프로세스
프로젝트를 생성합니다.
프로젝트 디렉토리를 생성합니다.
$ mkdir memcached-operator
프로젝트 디렉터리로 변경합니다.
$ cd memcached-operator
ansible
플러그인과 함께operator-sdk init
명령을 실행하여 프로젝트를 초기화합니다.$ operator-sdk init \ --plugins=ansible \ --domain=example.com
API를 생성합니다.
간단한 Memcached API를 생성합니다.
$ operator-sdk create api \ --group cache \ --version v1 \ --kind Memcached \ --generate-role 1
- 1
- API에 대한 Ansible 역할을 생성합니다.
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>
샘플 CR(사용자 정의 리소스)을 생성합니다.
샘플 CR을 생성합니다.
$ oc apply -f config/samples/cache_v1_memcached.yaml \ -n memcached-operator-system
CR에서 Operator를 조정하는지 확인합니다.
$ oc logs deployment.apps/memcached-operator-controller-manager \ -c manager \ -n memcached-operator-system
출력 예
... I0205 17:48:45.881666 7 leaderelection.go:253] successfully acquired lease memcached-operator-system/memcached-operator {"level":"info","ts":1612547325.8819902,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting EventSource","source":"kind source: cache.example.com/v1, Kind=Memcached"} {"level":"info","ts":1612547325.98242,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting Controller"} {"level":"info","ts":1612547325.9824686,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting workers","worker count":4} {"level":"info","ts":1612547348.8311093,"logger":"runner","msg":"Ansible-runner exited successfully","job":"4037200794235010051","name":"memcached-sample","namespace":"memcached-operator-system"}
정리합니다.
다음 명령을 실행하여 이 절차의 일부로 생성된 리소스를 정리합니다.
$ make undeploy
5.4.1.3. 다음 단계
- Ansible 기반 Operator를 빌드하는 방법에 대한 자세한 내용은 Ansible 기반 Operator를 위한 Operator SDK 튜토리얼을 참조하십시오.