Windows COMとの比較で考えるKubernetesのカスタムコントローラとAPI Machinery

アプリ開発者視点から一歩離れた視点でKubernetesのカスタムコントローラ開発について考えてみました
0
(change of )*state @TuvianNavy

あるリソースの挙動がapi-serverやkubeletの中で実装されてるのか、他のコンテナやコンテナの外で動くプロセスで実装されてるのか、我々は意識する必要がない twitter.com/TuvianNavy/sta…

2019-10-20 10:42:32
(change of )*state @TuvianNavy

ここまで一切コンテナとかCNIプラグインについて述べて来なかったのは、それらがk8sのオブジェクトシステムとはなんの関係もないから

2019-10-20 04:31:50
(change of )*state @TuvianNavy

単にpodというリソースの生成と破棄の実装がこれらの実体を操作しているにすぎない

2019-10-20 04:35:21
(change of )*state @TuvianNavy

訂正:誤解の余地はないでしょうが「podというリソースに属するインスタンスの生成と破棄」の誤りです twitter.com/TuvianNavy/sta…

2019-10-20 05:37:00
(change of )*state @TuvianNavy

CNIプラグインの要件にK8sのリソースを操作する、リソース経由で操作できることは含まれてない、ただ例えばCalicoは単にCNIプラグインであるだけではなくK8sのカスタムコントローラとして動作する twitter.com/TuvianNavy/sta…

2019-10-20 14:44:53
(change of )*state @TuvianNavy

K8sのリソースにはwatchって操作があるんだけど、これがgolangのchannelを使った仕掛けになってて全然わからない カスタムコントローラの実装と結びつけるためにコールバック関数とかいう野蛮なものが必要なくなりattach/detach自在になっているらしくはある 問題はこれってgolang以外に持ってけない

2019-10-21 00:13:39
(change of )*state @TuvianNavy

結局のところ、K8sのwatchの動作ってREST APIのレベルではどう実現されてるんだ?golangというかclient-goは本来K8sが実現している動的オブジェクトシステムを組み込みリソースに限って特殊化したインタフェースしか持ってない、だから動的型のインタフェースとしてkubectlそのものを使いたくなる twitter.com/TuvianNavy/sta…

2019-10-21 11:43:20
(change of )*state @TuvianNavy

もうちょっとマシな(事実上JavaとRubyを念頭に置いてる)言語ならkubectl相当のことをやらせるのも、ランタイムにcode-generator相当のことをやらせるのも問題なくできる ただclient-goがwatchの裏側でgoroutineとchannelを使ってやっているのと同じことを独自にやる必要はある

2019-10-21 11:48:08
(change of )*state @TuvianNavy

RubyのK8s client libraryではwatchの実験的サポートが始まってるみたい、Rubyでカスタムコントローラ書けるとだいぶ楽にはなるか? twitter.com/TuvianNavy/sta…

2019-10-25 08:05:27
(change of )*state @TuvianNavy

watchの動作にはポーリングスレッドを貼り付ける必要があるはずなのでもちろんSwaggerだけでどうにかなる種類の話ではない

2019-10-25 08:07:44
(change of )*state @TuvianNavy

Swagger勉強しないといけないかなー、つらい

2019-10-24 17:36:21
(change of )*state @TuvianNavy

Rubyはやっぱり高階の処理が入ってくると強いね。。

2019-10-24 17:36:57
(change of )*state @TuvianNavy

誰かここら辺の詳細を日本語で書いた本とか知りませんか?

2019-10-20 11:22:15
(change of )*state @TuvianNavy

訂正と補足が多いので整理してqiitaに出します

2019-10-20 16:42:51