🍳머리말
operator sdk를 설치 후 초기화해보는 예제글입니다. {}는 직접 입력해야하는 부분입니다. Ubuntu로 진행합니다.
📕 Background
operator sdk는 kube builder라는 k8s controller 개발을 도와주는 tool의 구조를 따르고 있습니다. 관련 설명은 다음 blog에 잘 정리되어 있습니다.
https://ssup2.github.io/programming/Kubernetes_Kubebuilder/
📕 Prerequisite
📔 macOs 또는 linux 기반 os
operator sdk는 macOS또는 linux 기반 운영체제에 설치할 수 있습니다. 아래 link에서 github로 설치하는 guide를 따라줍니다.
https://sdk.operatorframework.io/docs/installation/
📔 operator-sdk
최신 version입니다. version에 민감하니 유의해 받아줍니다.
📑 명령어 실행
설치 후 다음 명령어로 지원하는 k8s version과 go version을 확인해줍니다. 이보다 낮은 경우 작동하지 않으니 유의해 줍니다.
operator-sdk version
📑 출력결과
📔 git
📔 go version 1.18
go version이 낮아 operator-sdk가 동작하지 않는 경우에 go directory를 지운다음에 새 go versino tar file을 설치하라고 하는데 안되는 경우가 있습니다. 다음 명령어로 기존 설치한 부분을 삭제해주시면 됩니다.
sudo apt-get purge golang*
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz
📔 docker version 17.03+
📔 kubectl 과 k8s cluster
📕 생성
📔 작업공간, project init
* 명령어가 중간에 fail되면 생성된 file들이 folder에 찌꺼기로 남게 됩니다. 해당 file을 지우거나 folder 자체를 삭제하시고 다시하면 됩니다.
📑 명령어 실행
mkdir {원하는 작업 folder명}
cd {원하는 작업 folder명}
operator-sdk init --domain {원하는 domain명} --repo {이미 생성된 혹은 예정인 github repo명}
제 경우는 다음 처럼 생성했습니다.
mkdir ms-operator && cd ms-operator
operator-sdk init --domain=mskim.com --repo=github.com/zmrdltl/ms-operator
📑 출력결과
📔 API 정의
📑 memcached API 정의
* resource명은 반드시 소문자, kind는 대문자여야 합니다.
operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller
이런 error가 뜬다면 operator-sdk구동하는데 필요한 go version이 낮은 경우이므로 그 이상으로 설정하고 다시 수행해줍니다.
📑 출력결과
이런 식으로 resource, controller를 create하겠냐는 문구에 y를 두 번 입력해주시면 api 생성이 완료됩니다.
📕참조
https://sdk.operatorframework.io/docs/building-operators/golang/quickstart/
https://book.kubebuilder.io/cronjob-tutorial/gvks.html
https://book.kubebuilder.io/introduction.html
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Cloud' 카테고리의 다른 글
(kubernetes) - resource삭제 시 terminating 상태에서 멈춤 (0) | 2022.01.25 |
---|---|
(Kubernetes) - 명령어 모음 (0) | 2022.01.06 |
(Kubernetes) - cluster상에서 WAS-DB 연결 (10) | 2021.12.17 |
(Kubernetes) - container와 local간 file 이동 (0) | 2021.12.16 |
(Kubernetes) - application에 data 주입 4 (0) | 2021.12.06 |