Kubernetes¶
Kubernetes 的 Ingress Controller,自定义资源的方式。
之前 Traefik 只能够通过 [Kubernetes Ingress provider] 来支持 Kubernetes,这是严格意义上的 Kubernetes Ingress 控制器。
但是,由于社区表达了需要从 Traefik 优秀特性中获益而不需要使用大量的 annotations 注解,我们最终编写了一个名为 IngressRoute 的 自定义资源类型,可以提供更好的方式来配置对 Kubernetes 集群的访问。
资源配置¶
可以查看 路由 部分的配置文档。
Provider 配置¶
endpoint
¶
可许,默认为空
[providers.kubernetesCRD]
endpoint = "http://localhost:8080"
# ...
providers:
kubernetesCRD:
endpoint = "http://localhost:8080"
# ...
--providers.kubernetescrd.endpoint="http://localhost:8080"
Kubernetes 服务端点作为 URL,则仅在以下基于环境变量的方式无效的时候才使用。
当部署到 Kubernetes 集群中时,Traefik 会读取环境变量 KUBERNETES_SERVICE_HOST
和 KUBERNETES_SERVICE_PORT
或者 KUBECONFIG
来构造 Kubernetes 的服务端点。
访问的 token 位于容器中/var/run/secrets/kubernetes.io/serviceaccount/token
以及 SSL 的 CA 证书 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
。这两个文件都是 Traefik 部署后自动 mount 到 Pod 里面去的,所以默认就可以获得。
当找不到环境变量时,Traefik 会尝试使用外部集群客户端连接到 Kubernetes APIServer。这种情况下面,endpoint
选项就是必须设置的了。
具体来说,可以将其设置为 kubectl proxy
的 URL 来使用关联的 kubeconfig 授予的身份验证和授权连接到 Kubernetes 集群。
token
¶
可选,默认为空
[providers.kubernetesCRD]
token = "mytoken"
# ...
providers:
kubernetesCRD:
token = "mytoken"
# ...
--providers.kubernetescrd.token="mytoken"
用于 Kubernetes 客户端配置的 Bearer Token。
certAuthFilePath
¶
可选,默认为空
[providers.kubernetesCRD]
certAuthFilePath = "/my/ca.crt"
# ...
providers:
kubernetesCRD:
certAuthFilePath: "/my/ca.crt"
# ...
--providers.kubernetescrd.certauthfilepath="/my/ca.crt"
CA 证书文件路径,用于 Kubernetes 客户端配置。
namespaces
¶
可选, 默认: 所有 namespaces (空数组)
[providers.kubernetesCRD]
namespaces = ["default", "production"]
# ...
providers:
kubernetesCRD:
namespaces:
- "default"
- "production"
# ...
--providers.kubernetescrd.namespaces="default,production"
要 watch 的命名空间数组。
labelselector
¶
可选,默认为空 (处理所有的 Ingresses)
[providers.kubernetesCRD]
labelselector = "A and not B"
# ...
providers:
kubernetesCRD:
labelselector: "A and not B"
# ...
--providers.kubernetescrd.labelselector="A and not B"
默认情况下,Traefik 处理配置的命名空间下面的所有 Ingress 对象,也可以通过指定一个 label seletor 来过滤特定的 Ingress 对象。
点击查看更多 label-selectors 详细信息。
ingressClass
¶
默认为空
[providers.kubernetesCRD]
ingressClass = "traefik-internal"
# ...
providers:
kubernetesCRD:
ingressClass: "traefik-internal"
# ...
--providers.kubernetescrd.ingressclass="traefik-internal"
标记被处理的 Ingress 对象的 annotation kubernetes.io/ingress.class
的值。如果该参数只非空,则只处理包含具有相同值的 annotation 的 Ingress 对象。否则,将处理没有 annotation 注解,或者值为空或者为 traefik
的 Ingress 对象。
throttleDuration
¶
可选,默认为0 (没有限流)
[providers.kubernetesCRD]
throttleDuration = "10s"
# ...
providers:
kubernetesCRD:
throttleDuration: "10s"
# ...
--providers.kubernetescrd.throttleDuration="10s"
未来¶
可以查看使用 Let's Encrypt 的 完整示例。