「Kubernetes Meetup Tokyo #23 - Operator Deep Dive」に参加して

## 参加したイベント

- 概要
今回参加したイベントはKubernetesに関する代表的なMeetUpになる「[Kubernetes Meetup Tokyo](
https://k8sjp.connpass.com/event/145942/)」の第23回目になります。[動画はこちら](https://www.youtube.com/watch?v=mHsCjzhkq8k)

- Operatorとは
Kubernetesではコンテナを管理する代表的な方法として`Deployment`、`DeamonSet`、`StatefulSet`の3つがあります。ただこれらの標準機能だけでは、Kubernetes上でDBのクラスタを作るなどで、もう少し複雑な運用をしたい場合にOperator使って運用することがあります。

    - Operatorについて、簡単に知りたい場合は[@cotoc](https://twitter.com/cotoc88)さんが作ったこの[資料](https://speakerdeck.com/cotoc/oracle-mysql-operator-jian-zheng-sitemita?slide=13)のp13-17が分かりやすいのでオススメです。

- Operatorについて学ぶ意味
Operatorについて学ぶことで得られる利点は２つあると思っています。

    - Kuberntesの仕組みがより深く分かるようになる
        Operatorの仕組みを学ぶ過程で、`Controller`や`API-Server`など機能の中身を理解していくことになります。
        
    - Kubernetesで色んなことを自動化出来るかも
        Operatorを自分で作れるようになれば、きっと色んなことを自動化できるようになるはず！

- Operatorの作り方
一から全て自分で作ることもできますが、中々大変なので下記の２つのうち、どちらかを利用することが多くなってきたように思います。詳しいことについてはメインセッションの中で、触れられているのでそちらをご参照ください。
    - [kubebuilder](https://github.com/kubernetes-sigs/kubebuilder)
    - [operator-sdk](https://github.com/operator-framework/operator-sdk)


## メインセッション

### ゼロから始めるKubernetes Controller
コロプラ社の[@go_vargo][1-0]さんの発表になります。
発表資料は[こちら][1-1]になります。

発表内容は、Kubernetesのアーキテクチャの概要から始まり、Controllerがどんな考えた方で実装されているかと、Controllerの動きを丁寧に説明してくれているので、大変勉強になります。

[@go_vargo][1-0]さんは[技術書展7][1-2]で「[実践入門Kubernetes カスタムコントローラへの道][1-3]」という本を出版されており、本の方にも詳しく書かれているのオススメです。

![398eb357-273e-4df0-bc70-166276ec802a_base_resized.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309176/cc0bfc3a-99c9-1024-7d12-d878c5507c7e.jpeg)


[1-0]:https://twitter.com/go_vargo
[1-1]:https://speakerdeck.com/govargo/under-the-kubernetes-controller-36f9b71b-9781-4846-9625-23c31da93014
[1-2]:https://techbookfest.org/event/tbf07
[1-3]:https://go-vargo.booth.pm/items/1566979



### kubebuilder/controller-runtime 入門 with v2
Cybozu社の[kfyharukz][2-0]さんの発表になります。
発表資料は[こちら][2-1]になります。

発表内容は、kubebuilderについての説明になります。

[2-0]:https://github.com/kfyharukz
[2-1]:https://www.slideshare.net/KazuhitoMatsuda1/kubernetes-meetup-tokyo-23-kubebuilderv2?ref=https://k8sjp.connpass.com/event/145942/presentation/

### ~Introduction of Operator Framework 
この発表については発表者の方が病欠のため急遽、[@Ladicle][3-0]さんと[@superbrothers][4-0]さんが`Kubernetes 1.16`のアップデートによる変更内容に関する発表をしてくれました。
当日のアクシデントにも動じずに価値のある情報を提供して頂きありがたいです。

### Kubernetes 1.16 SIG API Machinary のアップデートについて
Z lab社(Yahoo! JAPANグループ)の[@Ladicle][3-0]さんの発表になります。
発表資料は[こちら][3-1]になります。

発表内容は、Kubernetes 1.16のアップデートに伴う`SIG-API Machinery`について丁寧に説明してくれた形になります。

そもそも`SIG`って何だろうと思う人もいると思いますが、正式な説明は以下になります。


SIGとは
- Special Interest Groups (SIGs) are persistent open groups that focus on a part of the project. SIGs must have open and transparent proceedings. Anyone is welcome to participate and contribute provided they follow the Kubernetes Code of Conduct. The purpose of a SIG is to own and develop a set of subprojects.


[参考URL][3-2]

Kubernetesは大きなプロジェクトなので、SIGという単位のグループがあってそれ毎にテーマを決めて、議論して、開発している形になります。

今回は[@Ladicle][3-0]さんが、`SIG-API Machinery`の中で議論して開発されたKubernetes 1.16のアップデートに伴う変更点について丁寧に説明してくれた形になります。

- 余談１
    Kubernetesのアップデートをキャッチアップするというのが量が多くて大変です。
    Z Labさんでは、それぞれのメンバーがチェックしているSIGがあって、情報を交換し合ってるみたいですね。素敵な取り組みです。
    Z Labさんが取りまとめてくれた情報については、[こちら][3-3]で公開されているので皆さんも見ることができます。ありがたいです。
    
- 余談2
    [CloudNative Days Tokyo][3-4]で[@Ladicle][3-0]さんが発表した[Kubernetesを拡張して日々のオペレーションを自動化する][3-5]の資料もOperatorを理解する上でオススメです。

[3-0]:https://twitter.com/Ladicle
[3-1]:https://qiita.com/Ladicle/items/f192d266b80e873eb0a8
[3-2]:https://github.com/kubernetes/community/tree/master#governance
[3-3]:https://qiita.com/uesyn/items/0246346d8958318fa1d4#_reference-b7f8be141a930bd199a0
[3-4]:https://cloudnativedays.jp/cndt2019/
[3-5]:https://speakerdeck.com/ladicle/kuberneteswokuo-zhang-siteri-falseoperesiyonwozi-dong-hua-suru


### Kubernetes 1.16 SIG CLI のアップデート

Z lab社(Yahoo! JAPANグループ)の[@superbrothers][4-0]さんの発表になります。
発表資料は[こちら][4-1]になります。

こちらの方は[@superbrothers][4-0]さんが、`SIG CLI`の中で議論して開発されたKubernetes 1.16のアップデートに伴う変更点について丁寧に説明してくれた形になります。

- 余談３
    Kubernetesに関する情報のキャッチアップが量が多くて大変だと思ったことはありませんか？
    毎日毎日、色々なところで新しい情報が発信されているので追いかけるのが大変です。
    実は、Z Labさんが`KubeWeekly`という毎週、興味深い情報が流れているサイトを[こちら][4-2]の方に纏めてくれているので、興味がある方は読んでみると面白いと思います。

[4-0]:https://twitter.com/superbrothers
[4-1]:https://qiita.com/superbrothers/items/e78a8a04347e57900fd9
[4-2]:https://qiita.com/tags/kubeweekly

## LT

### ClusterAPI v1alpha1
GMOペパボ社の[@r_takaishi][5-0]さんの発表になります。
発表資料は[こちら][5-1]になります。

発表内容はClusterAPIに関する社内での利用事例になります。

[5-0]:https://twitter.com/r_takaishi
[5-1]:https://speakerdeck.com/takaishi/k8s-meetup-23


### 自動化はshell-operator
GMO Internet社の[@nwiizo][6-0]さんの発表になります。
発表資料は[こちら][6-1]になります。

発表内容はKubernetesでbashを使いたいからshell-operatorを使った事例になります。

[6-0]:https://twitter.com/nwiizo
[6-1]:https://speakerdeck.com/nwiizo/zi-dong-hua-hashell-operatortogong-ni


### 自作 Controller による Secret の配布と収集
Wantedly社の[@unblee][7-0]さんの発表になります。
発表資料は[こちら][7-1]になります。

発表内容はOperatorを自作して運用を自動化した話になります。

[7-0]:https://twitter.com/unblee
[7-1]:https://speakerdeck.com/unblee/distributing-and-collecting-secrets-with-self-made-controller