[k8s] operator-sdk(Go)로 memcahce 오퍼레이터 구축하기 - 1

[k8s] operator-sdk(Go)로 memcahce 오퍼레이터 구축하기 - 2 

위의 두 단계에서 한 내용을 요약해보자 

 

 1. 현재 폴더에 Operator project를  설정한다

operator-sdk로 초기화를 한다 

operator-sdk init --domain example.com --repo github.com/example/memcached-operator

 

 

2. API와 Controller 를 생성한다 

operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller

CR을 위한 API와 Controller 생성이 된다 

CRD 와 Controller 로직을 위한 '기본 코드'가 생성된다 

 

 

3. 코드 살피기

API코드 :

   경로 : /memcached-operator/api/v1alpha1  

   operator의 version 설정이나 , CR의 spec이나 Status를 정의한다 

CR 파일 : 

   경로 : /memcached-operator/config/samples

   memcache의 리소스를 정의한다

Controller 파일 :

   경로 : memcached-operator/internal/controller

   operator에서 할 일을 구현한다 

 

 

4. make install 

CRD를 k8s에 등록(설치)하여 CR을 사용할 수 있게 한다 

config/crd/bases/cache.example.com_memcacheds.yaml  에서 정의된 CRD가 k8s 에 등록이 된다 

 

5. make run 

operator의 Controller를 실행한다 

Operator가 Cluster에 연결이 되어 , local 에서 k8s의 리소스를 관리하게 된다 

Operator는 k8s에 직접 배포하고 등록하는 개념이 아닌, 로컬에서 go 프로세스를 띄우는 것이다  

 

6. CR을 k8s에 등록 

kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml

 

 

6. CR 스펙 변경 후 적용

kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml

 

 

 

7. Operator를 docker 이미지로 build & push 

make docker-build docker-push IMG="example.com/memcached-operator:v0.0.1"

Operator 구현이 완성되었다며

operator를 다른 곳에서도 쓸 수 있게 hub에 올린다 

 

5. Operator를 k8s에 배포 

make deploy IMG="example.com/memcached-operator:v0.0.1"

hub에 올렸던 Operator 이미지를 배포한다 

make run으로 local에서 Operator를 올려서 테스트 했었다면

실제 운영에선 Operator를 k8s 에 등록해서 사용한다. 

 

 

make run :  main.go를 실행하여 local 에서 k8s 의 CRD 모니터링

deploy operator IMG :  k8s에 Operator를 등록하여 해당 CRD 모니터링