Windows COMとの比較で考えるKubernetesのカスタムコントローラとAPI Machinery
- TuvianNavy
- 965
- 0
- 0
- 0
あるリソースの挙動がapi-serverやkubeletの中で実装されてるのか、他のコンテナやコンテナの外で動くプロセスで実装されてるのか、我々は意識する必要がない twitter.com/TuvianNavy/sta…
2019-10-20 10:42:32ここまで一切コンテナとかCNIプラグインについて述べて来なかったのは、それらがk8sのオブジェクトシステムとはなんの関係もないから
2019-10-20 04:31:50訂正:誤解の余地はないでしょうが「podというリソースに属するインスタンスの生成と破棄」の誤りです twitter.com/TuvianNavy/sta…
2019-10-20 05:37:00CNIプラグインの要件にK8sのリソースを操作する、リソース経由で操作できることは含まれてない、ただ例えばCalicoは単にCNIプラグインであるだけではなくK8sのカスタムコントローラとして動作する twitter.com/TuvianNavy/sta…
2019-10-20 14:44:53K8sのリソースにはwatchって操作があるんだけど、これがgolangのchannelを使った仕掛けになってて全然わからない カスタムコントローラの実装と結びつけるためにコールバック関数とかいう野蛮なものが必要なくなりattach/detach自在になっているらしくはある 問題はこれってgolang以外に持ってけない
2019-10-21 00:13:39結局のところ、K8sのwatchの動作ってREST APIのレベルではどう実現されてるんだ?golangというかclient-goは本来K8sが実現している動的オブジェクトシステムを組み込みリソースに限って特殊化したインタフェースしか持ってない、だから動的型のインタフェースとしてkubectlそのものを使いたくなる twitter.com/TuvianNavy/sta…
2019-10-21 11:43:20もうちょっとマシな(事実上JavaとRubyを念頭に置いてる)言語ならkubectl相当のことをやらせるのも、ランタイムにcode-generator相当のことをやらせるのも問題なくできる ただclient-goがwatchの裏側でgoroutineとchannelを使ってやっているのと同じことを独自にやる必要はある
2019-10-21 11:48:08RubyのK8s client libraryではwatchの実験的サポートが始まってるみたい、Rubyでカスタムコントローラ書けるとだいぶ楽にはなるか? twitter.com/TuvianNavy/sta…
2019-10-25 08:05:27watchの動作にはポーリングスレッドを貼り付ける必要があるはずなのでもちろんSwaggerだけでどうにかなる種類の話ではない
2019-10-25 08:07:44