Windows COMとの比較で考えるKubernetesのカスタムコントローラとAPI Machinery
- TuvianNavy
- 964
- 0
- 0
- 0
K8sのカスタムリソース話、どれくらいの人が関心を持つ話なんだろう ここらへんに詳しい同僚も居ないし、zLabさんみたいな会社がそこいらにゴロゴロしてる訳もないけど
2019-10-20 10:17:28動的束縛できるオブジェクト部品の開発については使って天国作って地獄、とよく言うけどk8sのカスタムコントローラの開発もその例に漏れない
2019-10-20 10:22:24apimachinery github.com/kubernetes/api… 本当に理解すべきなのはこれなのだが、、
2019-10-20 11:11:07K8s code-generator github.com/kubernetes/cod… まずはここから理解する必要がある
2019-10-20 11:08:04以後はどうでもいい個人的な感想です
わけあってK8sの機能を拡張する方法を調べてたんだけど、K8sはオブジェクトブローカだし、client-goはWin32 APIでcode-generatorはATL
2019-10-20 01:36:55Oracleが好きな人ならetcdを使ってストアードプロシージャを実現するのかk8sで、golangはPL/SQL
2019-10-20 02:07:52この対応はもちろん正確ではないけどCOMとK8s両方を知ってる人に的はずれかどうか聞いてみたい、golangでは本来力及ばないことをやらされる感はある
2019-10-20 01:42:49golangでメタプログラミングができないのでATL相当の機能をライブラリとして提供することができないが、幾分かは構造体アノテーションによってその必要性を減じている
2019-10-20 04:57:52k8sリソースとCOMオブジェクトに違いがあるとすれば、前者はkindとversionという意味のある識別子で一意に特定でき、COMやOpenStackで我々を苦しめたOSF DCE由来のUUIDもしくはGUIDは少なくともこの用途では不要なこと
2019-10-20 04:43:54インスタンスについてはUUID的なものは相変わらず必要だが少なくともCLSID相当についてはそうなっているし、REST APIのパスにも現れない
2019-10-20 04:47:23まあ、さっきも述べたようにgRPCではないので効率の為にRPC上でvtblみたいなものを作る必要がない
2019-10-20 05:06:06代償は、遅いことと、k8sのAPI machineryについての理解が難しいこと Inside COMやInside OLE、Perlのillgutsに相当するK8sのガイド本があればいいと思う
2019-10-20 05:21:42vtblみたいなもの、というのは動的な動作による非効率性を避けるためRPCの呼出規約でC++のリンカが要求するような固定長のアドレス指定子のリストを要求することを指している twitter.com/TuvianNavy/sta…
2019-10-20 10:59:59code-generatorの使い方を見ればわかることだが、k8sのオブジェクトシステムのIDLは独立した言語として存在していない、これはさっきのUUID不使用やgolangの(意図して貧弱な)言語仕様やYAML/JSONの表現力などの要因が影響しているとは思う
2019-10-20 04:53:58kubectlがカスタムリソースをk8s組み込みのリソースと区別できないのは、実際リソースにそんな区別はなく単に遅延束縛機構の恩恵に等しく浴してるから
2019-10-20 04:28:56