对于 k3s 中的 Traefik Ingress Controller,禁用 TLS 验证

Posted

技术标签:

【中文标题】对于 k3s 中的 Traefik Ingress Controller,禁用 TLS 验证【英文标题】:For Traefik Ingress Controller in k3s disable TLS Verification 【发布时间】:2020-05-04 23:50:22 【问题描述】:

我正在使用默认安装的 k3s(版本 v1.17.0+k3s.1)并验证它在我的 Raspberry Pi 集群上正常工作。

在使用推荐的说明 (https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/) 安装 kubernetes-dashboard 后,我使用基于 k3s traefik 的负载均衡器将其暴露在集群之外后,我确认这是可行的。

但是,当我尝试使用 traefik 入口控制器公开它时,我无法连接到 kubernetes 仪表板,浏览器显示 HTTP 500 错误,即内部服务器错误。下面是我的入口 yaml 和 kubernetes-dashboard pod 日志,显示 TLS 证书错误。我相信证书错误是由于 traefik 不知道(和信任)kubernetes 仪表板使用的 TLS 证书。

一个。 k8s-dashboard-Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
    - host: k8s-services
      http:
        paths:
          - path: /k8s-dashboard
            backend:
              serviceName: kubernetes-dashboard
              servicePort: 443

注意。域“k8s-services”域是在我的 pi 集群机器和浏览计算机主机文件中定义的。

b. Kubernetes 仪表板 pod 日志

...
2020/01/18 06:04:19 Auto-generating certificates
2020/01/18 06:04:19 Metric client health check failed: the server is currently unable to handle the request (get services dashboard-metrics-scraper). Retrying in 30 seconds.
2020/01/18 06:04:19 Successfully created certificates
2020/01/18 06:04:19 Serving securely on HTTPS port: 8443
2020/01/18 06:04:49 Successful request to sidecar
2020/01/18 06:23:28 http: TLS handshake error from 10.42.0.113:52698: remote error: tls: bad certificate
2020/01/18 06:24:33 http: TLS handshake error from 10.42.0.113:52886: remote error: tls: bad certificate
2020/01/18 06:24:41 http: TLS handshake error from 10.42.0.113:52908: remote error: tls: bad certificate
2020/01/18 06:24:47 http: TLS handshake error from 10.42.0.113:52926: remote error: tls: bad certificate
2020/01/18 06:24:53 http: TLS handshake error from 10.42.0.113:52948: remote error: tls: bad certificate
2020/01/18 06:25:37 http: TLS handshake error from 10.42.0.113:53076: remote error: tls: bad certificate
2020/01/18 06:25:41 http: TLS handshake error from 10.42.0.113:53090: remote error: tls: bad certificate
2020/01/18 06:25:44 http: TLS handshake error from 10.42.0.113:53102: remote error: tls: bad certificate
2020/01/18 06:31:22 http: TLS handshake error from 10.42.0.113:54144: remote error: tls: bad certificate
2020/01/18 06:31:29 http: TLS handshake error from 10.42.0.113:54158: remote error: tls: bad certificate
...

我的问题似乎与以下 Stack Overflow 问题非常相似: Kubernetes dashboard through Ingress

我第一次尝试解决这个问题是在 k3s 的 traefik.toml 文件中添加“ssl.insecureSkipVerify: 'true'”。不幸的是,我找不到全局 traefik.toml 文件(而且 traefik 似乎是使用 Helm Chart 安装的)。

请告诉我更新 traefik 中“ssl.insecureSkipVerify”设置的方法,或其他替代解决方案。

【问题讨论】:

在 k3s github 论坛的帮助下,我设法解决了这个问题 ????请参阅提出的 github 问题中的解决方案:github.com/rancher/k3s/issues/1313 【参考方案1】:

您需要在/var/lib/rancher/k3s/server/manifests/traefik-config.yaml 下创建一个HelmChartConfig 内容:

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
spec:
  valuesContent: |-
    ssl.insecureSkipVerify: true    # <-- Add this line

但我怀疑它能否解决问题。

【讨论】:

以上是关于对于 k3s 中的 Traefik Ingress Controller,禁用 TLS 验证的主要内容,如果未能解决你的问题,请参考以下文章

基础指南:如何在K3s中配置Traefik?

在 k3s 上使用 traefik 入口生成重定向?

在 k3s 上使用 Traefik 时如何获取客户端的真实 IP 地址?

如何在 K3s 中启用 Traefik Dashborad

kubernetes Ingress 之 Traefik

traefik Ingress https配置