KubeCon 2017 North America CRD 特集

このエントリは [Z Lab Advent Calendar 2017](https://qiita.com/advent-calendar/2017/zlab) の 21 日のエントリです。
先日 2017/12/6-8 に CloudNativeCon + KubeCon 2017 North America が行われました。 全体の Recap は様々なエントリや発表があるため、このエントリでは各セッションで CRD (CustomResourceDefinisions) を利用している例が多くありましたので、CRD に着目していくつか紹介していきたいと思います！
CRD 自体の説明については[Kubernetes Advent Calender 2017 の 16 日のエントリ](https://qiita.com/shmurata/items/86f3a0c2a2431cec410e)に軽く記載しましたので、そちらを参照してもらえばと思います。
なお、実際に参加していないセッションも記載しているため誤っている部分などがあるかもしれません。もし見つけましたらコメントなどで連絡してもらえると助かります。

それでは早速紹介していきます。

# Extending Kubernetes 101 [A] - Travis Nielsen, Quantum Corp

まずは Kuberentes の拡張について話しているセッションです。何故拡張するのか、どうやって拡張すべきかなどが話されています。このセッションの中では [operator-kit](https://github.com/rook/operator-kit) というカスタムコントローラを作成するための汎用的な仕組みも紹介され、それを使ったサンプルコントローラの作成方法などを話していました。
[資料](https://schd.ws/hosted_files/kccncna17/c8/ExtendingKubernetes101.pdf) [動画](https://www.youtube.com/watch?v=yn04ERW0SbI&index=81&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb)

# Kubernetes Feature Prototyping with External Controllers and Custom Resource Definitions [I] - Tomas Smetana, Red Hat

Kubernetes は大きなプロジェクトになりすぎて、変更が容易ではなくなったので、新しい機能のプロトタイピングに CRD とカスタムコントローラを利用するとKubernetes 自体の開発サイクルに束縛されず、早く深い変更をしやすいという話のようです。
[資料](https://schd.ws/hosted_files/kccncna17/cf/kubecon_slides_tsmetana.pdf) [動画](https://www.youtube.com/watch?v=fnSNPgwXcUc&index=82&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb)

# Extending the Kubernetes API: What the Docs Don't Tell You [I] - James Munnelly, Jetstack

このセッションも何故拡張するのか、どうやって拡張すべきかなどが話されています。また、CRD の go-client や informer のコード作成を行う、generatorの話もあるようです。
[資料](https://schd.ws/hosted_files/kccncna17/42/KubeCon%20Extending%20Kubernetes%20Talk.pdf) [動画](https://www.youtube.com/watch?v=PYLFZVv68lM&index=85&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb)

# Using Custom Resources to Provide Cloud Native API Management - Frank B Greco Jr, Northwestern Mutual

Ingressコントローラの設定に CRD を利用しているようです。
[資料](https://schd.ws/hosted_files/kccncna17/0f/kanali.pdf) [動画](https://www.youtube.com/watch?v=--LSmvCKVSs&index=83&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb)

# Extending Kubernetes: Our Journey & Roadmap [I] - Daniel Smith & Eric Tune, Google

Kubernetes の拡張についてのセッション。CRDの今後なども語られています。
[資料](https://schd.ws/hosted_files/kccncna17/48/Kubernetes%20Extensibility.pdf) [動画](https://www.youtube.com/watch?v=KVEKkr7-IJI&index=84&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb)

# Continuous Integration at Scale on Kubernetes [B] - Karthik Gajjala, eBay

Kubernetes 上で スケールする CI の話のセッションです。Operator パターンを使って CRD とカスタムコントローラを開発し、Kubernetes 上に Jenkins を構築しているようです。
[資料](https://schd.ws/hosted_files/kccncna17/2c/Continuous%20Integration%20at%20Scale%20on%20Kubernetes.pdf) [動画](https://www.youtube.com/watch?v=_5DIDVLGW4U&index=44&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb)

# Scaling to 5000+ Unique K8s Deployments, How We Did It [I] - Nicole Hubbard, WP Engine

CRD をテンプレートにするデプロイの仕組み [lostromos](https://github.com/wpengine/lostromos) の話です。
[資料](https://schd.ws/hosted_files/kccncna17/d9/KubeCon%202017%20-%20Lostro%CC%81mos.pdf) [動画](https://www.youtube.com/watch?v=al9F5r7IkKQ&index=65&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb)

# Kafka Operator: Managing and Operating Kafka Clusters in Kubernetes [A] - Nenad Bogojevic, Amadeus

Kubernetes 上に Kafka を構築する Kafka Operator についてのセッションです。Operator パターンを使って CRD とカスタムコントローラを作成しているようです。
[資料](https://schd.ws/hosted_files/kccncna17/e8/KubeCon-2017-Kafka-Operator.pdf) [動画](https://www.youtube.com/watch?v=jAz8sdO1rgE&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb&index=152)

# Kube-native Postgres [I] - Josh Berkus, RedHat

Kubernetes 上に PostgreSQL を構築した話のセッションです。Operator パターンを使って CRD とカスタムコントローラを作成しているようです。
[動画](https://www.youtube.com/watch?v=Zn1vd7sQ_bc&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb&index=155)

# Running MySQL on Kubernetes [I] - Patrick Galbraith, Consultant

Kubernete 上に MySQL を構築した話のセッションです。Operator パターンを使って CRD とカスタムコントローラを作成しているようです。
[資料](https://schd.ws/hosted_files/kccncna17/4d/MySQL%20on%20Kubernetes.pdf) [動画](https://www.youtube.com/watch?v=J7h0F34iBx0&list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb&index=177)

# まとめ

KubeCon 2017 で CRD が関わるセッションについて紹介しました。多くのセッションで CRD 自体の説明や利用例が紹介されていて、2018年も注目の機能となりそうです。
今回紹介したセッション以外でもしれっと利用されていることもあったりして、既に利用が当たり前になりつつあるようです。昨年 CoreOS が発表した [operator パターン](https://coreos.com/operators/)の事例が多く、特にステートフルなアプリケーションを Kubernetes 上で動作させる際に利用している例が多くありました。
我々は syncloop と呼んでいたCRDをウォッチして処理を行うループは control loop と呼んでいるセッションが多いので今後は control loop を使っていこうと思います。

明日は @inajob による「addon-managerについて」になります。
後4日になりますが、引き続きZ Lab Advent Calendar 2017をお楽しみください。