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
以及事件日志以及状态采集的优化。