基于Operator SDK的Helm Operator能否为Freeradius实例CR Status添加NodePort信息
结论
仅通过Helm-Based Operator的原生能力完全可以实现该需求,不需要额外编写自定义业务逻辑。
实现方法
你只需要通过Operator SDK要求的watches.yaml配置文件配置字段映射规则即可:
- Helm Based Operator原生支持跟踪其管理的所有下属Kubernetes资源,你可以在
watches.yaml中对应你的Freeradius CRD的配置条目下,增加status字段的映射规则,指定从关联的NodePort类型Service资源中提取你需要的IP、端口字段,同步写入到CR的Status对应字段中。
配置示例
你可以参考以下watches.yaml配置片段调整你的规则:
- group: 你自定义的Freeradius CRD所属组 version: 你自定义的CRD版本,例如v1alpha1 kind: Freeradius chart: 你的Freeradius Helm Chart的本地路径 # 新增status映射配置 status: resources: - kind: Service apiVersion: v1 # 匹配你Chart中创建的NodePort类型Service的名称,支持Go模板语法 name: "{{ .Release.Name }}-freeradius-nodeport-svc" mappings: # 同步Service的ClusterIP到CR的status.serviceClusterIP字段 - field: spec.clusterIP destination: status.serviceClusterIP # 同步认证端口对应的NodePort到CR的status.authNodePort字段 - field: spec.ports[?(@.name=="auth")].nodePort destination: status.authNodePort # 同步记账端口对应的NodePort到CR的status.acctNodePort字段 - field: spec.ports[?(@.name=="acct")].nodePort destination: status.acctNodePort
补充说明
- 如果你需要展示集群节点的对外访问IP而非Service的ClusterIP,也可以通过相同的规则增加Node资源的字段映射,将Node的对外IP同步到CR Status中。
- 所有映射规则配置完成后重新构建Operator镜像即可生效,Operator会自动监听关联资源的状态变更,实时同步字段到CR Status。
内容的提问来源于stack exchange,提问作者Kostas Tsakos
相关产品推荐
相关产品推荐

