LoginSignup
3
1

More than 3 years have passed since last update.

Kubernetesで和牛を給付する

Posted at

Motivation

コンテナ管理基盤であるKubernetesには、Kubernetes Operatorという概念があり
任意のオブジェクトをKubernetes上で管理することができる。
このKubernetes Operatorを用いると和牛も管理することができるので給付してみる。

ここで、Kubernetes Operatorを開発するツールは、下記の通りいくつか存在しているが
エコシステムが充実しているOperator SDKを採用した。

Operator SDK
Kubebuilder
Metacontroller

QuickStart

環境

和牛の配り方

Quay.ioのアカウント登録

quay.png

operator-sdkを用いて和牛Operatorの雛形を作成

TMPDIR=`mktemp -d` && cd $TMPDIR
mkdir $TMPDIR  && cd $TMPDIR
operator-sdk new wagyu-operator --repo github.com/delicious/wagyu
cd wagyu-operator

operator-sdk add api --api-version=app.example.com/v1alpha1 --kind=Wagyu

operator-sdk add controller --api-version=app.example.com/v1alpha1 --kind=Wagyu

和牛コントローラの処理を一部書き換え

実際にはデプロイされるPodのImageを差し替えている

sed 's|Image:   "busybox"|Image:   "quay.io/iaoiui727/wagyu:latest"|g' -i pkg/controller/wagyu/wagyu_controller.go

和牛OperatorのDockerイメージ作成

export USER=<quay.ioで作成したユーザ名>
operator-sdk build quay.io/$USER/wagyu-operator
docker login quay.io

DockerイメージのPush

docker push quay.io/$USER/wagyu-operator

Quay.ioでリポジトリをpublicにする

make_repository_public.png

Kubernetesクラスタの構築

kind create cluster

和牛Operatorのマニフェスト内で、先ほどquayにアップロードしたDockerイメージを使うよう変更

sed -i "/Command/d" pkg/controller/wagyu/wagyu_controller.go 
sed -i "s|REPLACE_IMAGE|quay.io/$USER/wagyu-operator|g" deploy/operator.yaml

Operator用のサービスアカウント、ロールを用意

kubectl create -f deploy/service_account.yaml
kubectl create -f deploy/role.yaml
kubectl create -f deploy/role_binding.yaml

和牛のCRD(Custom Resource Definition)を生成

和牛というCRDリソースがKubernetesに登録される

kubectl create -f deploy/crds/app.example.com_wagyus_crd.yaml 

和牛というCRDリソースの定義を確認できるようになる

 k get wagyu
NAME            AGE
example-wagyu   1m

和牛Operatorを起動

kubectl create -f deploy/operator.yaml

和牛Operatorの起動を確認

kubectl get po
NAME                              READY   STATUS    RESTARTS   AGE
wagyu-operator-7d87f94966-c7rbt   1/1     Running   0          18s

和牛インスタンスを起動

kubectl create -f deploy/crds/app.example.com_v1alpha1_wagyu_cr.yaml 

正常に起動していることを確認

kubectl get pod -l app=example-wagyu
kubectl describe appservice example-appservice

給付された和牛を確認

kubectl logs example-wagyu-pod 
🐄 

Clean up

kind delete cluster

まとめ

Operator SDKを用いてKubernetes上で和牛を給付できた
今回はGo言語で検証したが、Operator SDKではAnsible, Helmも対応しているので利用してみたい。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1