kubebuilder 去 kube-rbac-proxy 体验
安利一波广告,欢迎大家试用目前本人 maintain 的EMQX Kubernete Operator
最近在社区中接到用户反馈Release manifests has broken metrics
描述如下:
使用 release-1.1.5 版本,看到对于目前对于 Operatlr 的 metrics 保护机制是采用的 kube-rbac-proxy,此处相关的内容也可以通过查看 kubebuilder官方文档进行具体的阅读。
根据 Issue 反馈其实很快能定位到应该是 Service 没有匹配的 Container Port,看下 release-1.1.5 中的代码,如下
可以看到 emqx-operator-controller-manager-metrics-service 中的内容如下:
1 | apiVersion: v1 |
而 Operator 相应的 Deployment 中 .spec.containers.ports 内容如下:
1 | ports: |
果不其然,确实这块的配置缺少了,但是考虑到目前在私有化交付或者公有化的交付过程中的保护机制,以及一些镜像维护的成本先暂不对外使用基于 kube-rbac-proxy 的 Pod 内部权限检查的机制,那么我们就得针对于 Metrics 的 EndPoint 提供一套默认的配置,方便使用者能够针对 /Metrics 的 EndPoint 进行 metrics 采集。
基于 kustomize 的 config 维护
关于 kustomize 的基础这里就不阐述了,重点关注下 config/default/kustomization.yaml:
1 | bases: |
此时看关联的 patch.yaml 文件:
1 | # This patch inject a sidecar container which is a HTTP proxy for the |
基于交付场景的考虑,目前在工程中暂不开放 manager_auth_proxy 的配置,但是为了让用户可以对 metrics 进行相关的查看,我们需要提供默认的配置,同时还要让用户对工程项目的配置最小化改动,最终的方案是提供基于 http:8080 的默认配置,追加一套 patch 文件,当有能力维护的用户想要自定义的时候他可以取消对 # - manager_auth_proxy_patch.yaml 的配置,实际上是触发了 patch$delete 动作。
明细的改动可以查看release-1.1.6去了解。
最后还是发版快乐,后续的 RoadMap 已经开始 1.2.x 的计划了,将进行 .spec 以及事件日志以及状态采集的优化。





