Operator
TPR(Third Party Resource) 在k8s 1.7 被集成,并命名为CRD(Custom Resource Definition).
通过CRD,K8S可以动态的添加和管理资源,controller跟踪这些资源。
CRD+custom Controller = decalartive API(声明式API),一般分为通用性controller和operator.
通用型controller一般用于平台需求,operator一般用于部署特定应用.
用于开发operator的工具有kubebuilder和operator-sdk, 他们都是基于controller-runtime开发.
https://github.com/operator-framework/awesome-operators
https://access.redhat.com/documentation/zh-cn/openshift_container_platform/4.2/html/operators/index
开发示例:
https://github.com/kubernetes/sample-controller
operator的build三种模式:
- go
- ansible
- helm
operator的run三种模式:
- 在集群外部本地运行(开发测试).
- 作为deployment在集群内部运行.
- 通过OLM部署.
operator-sdk
redhat的operator-sdk可以方便的开发opeartor.
https://github.com/operator-framework/operator-sdk https://sdk.operatorframework.io/docs/installation/
kubebuilder
sig维护的kubebuilder也能方便的开发operator.