我对 Traefik 和 Kubernetes 非常陌生。我通过 helm (repo: https://traefik.github.io/traefik-helm-chart/, helm version 3.5.2, chart traefik-9.19.1) 安装了 Traefik。然后我想从中获取普罗米修斯指标。
这是我的 values.yaml 文件的摘录:
ports:
metrics:
expose: true
port: 3333
exposedPort: 3333
protocol: TCP
additionalArguments:
- "--metrics.prometheus=true"
- "--metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000"
- "--metrics.prometheus.addEntryPointsLabels=true"
- "--metrics.prometheus.addServicesLabels=true"
- "--entrypoints.metrics.address=:3333/tcp"
- "--metrics.prometheus.entryPoint=metrics"
我的问题是:此配置将 TCP 端口 3333 暴露给 Internet。出于安全原因,我宁愿避免这种情况。
有没有办法只向我的集群公开端口 3333?
答案 0 :(得分:2)
尝试删除 expose
和 exposedPort
参数。
答案 1 :(得分:2)
试试这个:
ports:
metrics:
expose: true
port: 3333
exposedPort: 3333
protocol: TCP
env:
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
additionalArguments:
- "--metrics.prometheus=true"
- "--metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000"
- "--metrics.prometheus.addEntryPointsLabels=true"
- "--metrics.prometheus.addServicesLabels=true"
- "--entrypoints.metrics.address=$(POD_IP):3333/tcp"
- "--metrics.prometheus.entryPoint=metrics"
Traefik 将仅在 POD_IP 网络接口上公开指标。
和/或另外,我建议更新您的工作人员的防火墙设置(iptables 等...)