Slide 1

Slide 1 text

作って学ぶKubebuilder⼊⾨ Kubernetes Novice Tokyo(2021/05/12) @bells17

Slide 2

Slide 2 text

▶ @bells17 ▶ Software Engineer ▶ 普段やってること: + Kubernetes 関連コンポーネントの開発 + Kubernetes as a Service開発の調査・研究 ▶ Kubernetes SIG-Docs Japanese localization reviewer ▶ Kubernetes Internal Organizer ▶ #kubenews ▶ @bells17_

Slide 3

Slide 3 text

今⽇話すこと ▶ Kubebuilderについて ▶ Kubebuilderの開発デモ

Slide 4

Slide 4 text

注意点 ▶ 利⽤バージョン ▶ kubebuilder: v3.0.0 ▶ controller-runtime: v0.7.2 ▶ controller-tools: v0.4.1

Slide 5

Slide 5 text

Kubebuilderとは

Slide 6

Slide 6 text

Kubebuilder 1. KubernetesのOperatorを開発するためのフレームワーク 2. Kubernetesコミュニティが開発を⾏っている 3. Kubebuilderは以下のツールで構成されている + kubebuilder: コントローラーやCRDのAPIコードなどを⽣成するツール + controller-tools: goのコードからCRDなどのマニフェストを⽣成するツール + controller-runtime: カスタムコントローラーやWebhookなどを実装するライブラリ 3. 類似のフレームワークとしてOperator SDKなどがある

Slide 7

Slide 7 text

Kubebuilderの利点 1. goのKubernetes SDK(client-go)を使って開発するよりもシンプルにコードが書ける 2. コードからCRDを⽣成したり、コントローラーを管理するマネージャーアプリケーション があったりとclient-goを使って1から開発するよりも便利なケースが多い 3. CRDとコントローラーだけでなく、Webhookを簡単に開発~組み込めるようになってる 4.コントローラーのビルド~デプロイを⾏なうためのMakefileが便利で開発に必要なコマンド がだいたいMakefileにまとめられている 5. コントローラーをテストできるenvtestが同梱されていて、ginkgo/gomegaを使ったe2eテ ストが簡単に書き始められるようになってる

Slide 8

Slide 8 text

Kubebuilderの参考情報 1. kubernetes-sigs/kubebuilder: https://github.com/kubernetes-sigs/kubebuilder 2. The Kubebuilder Book: https://kind.sigs.k8s.io/ 3. つくって学ぶKubebuilder: https://zoetrope.github.io/kubebuilder-training/ 4. Kubebuilderを使って作成された各種OSSアプリケーション

Slide 9

Slide 9 text

Kubebuilderの使い⽅

Slide 10

Slide 10 text

Kubebuilderの使い⽅ Πϯετʔϧ DVSMPVTSMPDBMCJOLVCFCVJMEFSTG-IUUQTHPLVCFCVJMEFSJPEM HPFOW (004 HPFOW(0"3$) DINPEBYVTSMPDBMCJOLVCFCVJMEFS ਽ܗΛੜ੒ LVCFCVJMEFSJOJUEPNBJOCFMMTJPSFQPHJUIVCDPNCFMMTLTTBNQMF DPOUSPMMFS $3%ίϯτϩʔϥʔΛੜ੒ LVCFCVJMEFSDSFBUFBQJHSPVQIFMMPWFSTJPOWCFUBLJOE.FTTBHF

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Kubebuilderを使った開発デモ

Slide 13

Slide 13 text

デモで作るOperator 1. Custome Resourceの .spec.message の値を元に .status.message にメッセージを設定す るだけのHello World的なアプリケーション 2. Kubebuilderデモ⽤に超簡単なアプリケーションを作る + セッション時間的に超簡単なのしかやる時間がなかった + 参考情報で紹介したサイトの例で作るOperatorは結構本格的なのばかりなので、本当に ただの⼊⾨⽤の簡単Operatorにしたかった、というのも⼀応ある 今回作ったデモ https://github.com/bells17/k8s-sample-controller