본문 바로가기

Cloud

(Operator-sdk) - Ubuntu에서 operator project 만들기

반응형

 

🍳머리말

operator sdk를 설치 후 초기화해보는 예제글입니다. {}는 직접 입력해야하는 부분입니다. Ubuntu로 진행합니다.


📕 Background

operator sdk는 kube builder라는 k8s controller 개발을 도와주는 tool의 구조를 따르고 있습니다. 관련 설명은 다음 blog에  잘 정리되어 있습니다.

https://ssup2.github.io/programming/Kubernetes_Kubebuilder/

 

Kubernetes Kubebuilder를 이용한 Operator 개발

Memcached 예제를 통해서 Kubebuilder와 Controller를 분석한다.

ssup2.github.io

📕 Prerequisite

📔 macOs 또는 linux 기반 os

operator sdk는 macOS또는 linux 기반 운영체제에 설치할 수 있습니다. 아래 link에서 github로 설치하는 guide를 따라줍니다.

https://sdk.operatorframework.io/docs/installation/

 

Installation

Install the Operator SDK CLI

sdk.operatorframework.io

📔 operator-sdk

최신 version입니다. version에 민감하니 유의해 받아줍니다.

 

Quickstart for Go-based Operators

A simple set of instructions to set up and run a Go-based operator.

sdk.operatorframework.io

📑 명령어 실행

설치 후 다음 명령어로 지원하는 k8s version과 go version을 확인해줍니다. 이보다 낮은 경우 작동하지 않으니 유의해 줍니다.

operator-sdk version

📑 출력결과

📔 git

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

📔 go version 1.18

 

Downloads - The Go Programming Language

Downloads After downloading a binary release suitable for your system, please follow the installation instructions. If you are building from source, follow the source installation instructions. See the release history for more information about Go releases

go.dev

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+

 

Get Docker

 

docs.docker.com

📔 kubectl 과 k8s cluster

 

Install Tools

Set up Kubernetes tools on your computer.

kubernetes.io


📕 생성

📔 작업공간, 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/

 

Quickstart for Go-based Operators

A simple set of instructions to set up and run a Go-based operator.

sdk.operatorframework.io

https://book.kubebuilder.io/cronjob-tutorial/gvks.html

 

Groups and Versions and Kinds, oh my! - The Kubebuilder Book

Actually, before we get started with our API, we should talk terminology a bit. When we talk about APIs in Kubernetes, we often use 4 terms: groups, versions, kinds, and resources. An API Group in Kubernetes is simply a collection of related functionality.

book.kubebuilder.io

https://book.kubebuilder.io/introduction.html

 

Introduction - The Kubebuilder Book

Note: Impatient readers may head straight to Quick Start. Using Kubebuilder v1 or v2? Check the legacy documentation for v1 or v2 Users of Kubernetes will develop a deeper understanding of Kubernetes through learning the fundamental concepts behind how API

book.kubebuilder.io


*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.