API Resource API kubectl APIService リソースの操作 リソースの操作 独自リソースと API エンドポイントの登録 • Extension API Server との連携は kube-apiserver の内部に実装された Aggregatgion Layer で処理される。これにより外部 API が提供する独自リ ソースを Kubernetes のリソースとして扱えるようになる • kube-apiserver が API Proxy のように振る舞うと考えると分かりやすい • 外部 API の情報は APIService と呼ばれるリソースを使用して登録する
+genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ReservedNode is an example type with a spec and a status. type ReservedNode struct { metav1.TypeMeta metav1.ObjectMeta Spec corev1.NodeSpec Status corev1.NodeStatus } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ReservedNodeList is a list of ReservedNode objects. type ReservedNodeList struct { metav1.TypeMeta metav1.ListMeta Items []ReservedNode }
+genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ReservedNode is an example type with a spec and a status. type ReservedNode struct { metav1.TypeMeta metav1.ObjectMeta Spec corev1.NodeSpec Status corev1.NodeStatus } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ReservedNodeList is a list of ReservedNode objects. type ReservedNodeList struct { metav1.TypeMeta metav1.ListMeta Items []ReservedNode } リソースの型定義
+genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ReservedNode is an example type with a spec and a status. type ReservedNode struct { metav1.TypeMeta metav1.ObjectMeta Spec corev1.NodeSpec Status corev1.NodeStatus } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ReservedNodeList is a list of ReservedNode objects. type ReservedNodeList struct { metav1.TypeMeta metav1.ListMeta Items []ReservedNode } コード生成用タグ
の機能部分を実装する • k8s.io/apiserver パッケージで提供されている構造体を使用すると便利 • パッケージに含まれるよく使う構造体として GenericAPIServer や Store などがある Extension API Server GenericAPIServer Store リソースの操作要求や ユーザー情報の連携 データストアの操作
• Extension API Server は Kubernetes の Aggregation Layer に API を登 録して使用する • Extension API Server は k8s.io/apiserver で提供されている構造体を使 うと簡単に実装できる • Extension API Server を利用すると様々なデータを Kubernetes のリソー スとして柔軟に扱えるようになって便利