如何不将 Traefik 端口暴露给互联网?

时间:2021-04-23 12:54:39

标签: kubernetes kubernetes-helm traefik

我对 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?

2 个答案:

答案 0 :(得分:2)

尝试删除 exposeexposedPort 参数。

答案 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 等...)