CRD
GitHub地址:https://github.com/kubernetes-sigs/kubebuilder
Kubernetes 里资源类型有如下所示:
上述资源类型可以满足大多数分布式系统部署的需求
但是在不同应用业务环境下,对于平台可能有一些特殊的需求,这些需求可以抽象为 Kubernetes 的扩展资源,而 Kubernetes 的 CRD (CustomResourceDefinition)为这样的需求提供了轻量级的机制,保证新的资源的快速注册和使用。
举个栗子:
我希望在 kubernetes 中有 KafkaSource 这个资源, 资源示例 kafka-source.yaml如下:
我们希望在执行 kubectl create -f kafka-source.yaml 之后,在 kubernetes 里会启动一个 pod,这个 pod 会做下面的事情:
- 它会从地址是 my-cluster-kafka-bootstrap.kafka:9092,topic 是 knative- demo-topic 的 kafka 机群里读取消
- 将读到的消息,发送到 kubernetes 的一个 Service 去执行