Upgrade to Pro — share decks privately, control downloads, hide ads and more …

作って学ぶkubebuilder入門/Kubebuilder Introduction

作って学ぶkubebuilder入門/Kubebuilder Introduction

3499a1d71fa70b8ee44816ca9e7329fe?s=128

bells17

May 12, 2021
Tweet

Transcript

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

  2. ▶ @bells17 ▶ Software Engineer ▶ 普段やってること: + Kubernetes 関連コンポーネントの開発

    + Kubernetes as a Service開発の調査・研究 ▶ Kubernetes SIG-Docs Japanese localization reviewer ▶ Kubernetes Internal Organizer ▶ #kubenews ▶ @bells17_
  3. 今⽇話すこと ▶ Kubebuilderについて ▶ Kubebuilderの開発デモ

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

    controller-tools: v0.4.1
  5. Kubebuilderとは

  6. Kubebuilder 1. KubernetesのOperatorを開発するためのフレームワーク 2. Kubernetesコミュニティが開発を⾏っている 3. Kubebuilderは以下のツールで構成されている + kubebuilder: コントローラーやCRDのAPIコードなどを⽣成するツール

    + controller-tools: goのコードからCRDなどのマニフェストを⽣成するツール + controller-runtime: カスタムコントローラーやWebhookなどを実装するライブラリ 3. 類似のフレームワークとしてOperator SDKなどがある
  7. Kubebuilderの利点 1. goのKubernetes SDK(client-go)を使って開発するよりもシンプルにコードが書ける 2. コードからCRDを⽣成したり、コントローラーを管理するマネージャーアプリケーション があったりとclient-goを使って1から開発するよりも便利なケースが多い 3. CRDとコントローラーだけでなく、Webhookを簡単に開発~組み込めるようになってる 4.コントローラーのビルド~デプロイを⾏なうためのMakefileが便利で開発に必要なコマンド

    がだいたいMakefileにまとめられている 5. コントローラーをテストできるenvtestが同梱されていて、ginkgo/gomegaを使ったe2eテ ストが簡単に書き始められるようになってる
  8. 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アプリケーション
  9. Kubebuilderの使い⽅

  10. Kubebuilderの使い⽅ Πϯετʔϧ DVSMPVTSMPDBMCJOLVCFCVJMEFSTG-IUUQTHPLVCFCVJMEFSJPEM HPFOW (004  HPFOW(0"3$) DINPEB YVTSMPDBMCJOLVCFCVJMEFS ਽ܗΛੜ੒

    LVCFCVJMEFSJOJUEPNBJOCFMMTJPSFQPHJUIVCDPNCFMMTLTTBNQMF DPOUSPMMFS $3%ίϯτϩʔϥʔΛੜ੒ LVCFCVJMEFSDSFBUFBQJHSPVQIFMMPWFSTJPOWCFUBLJOE.FTTBHF
  11. None
  12. Kubebuilderを使った開発デモ

  13. デモで作るOperator 1. Custome Resourceの .spec.message の値を元に .status.message にメッセージを設定す るだけのHello World的なアプリケーション

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