如何使用Traefik+MetalLB暴露Kubernetes API (apiserver)

How to use Traefik+MetalLB to Expose Kubernetes API (apiserver)

我的 raspberry pi 上有一个 microk8s 运行,我希望使用 traefik ingressroute 将 kubernetes API 公开到我的子域

下面是我的入口路线:


apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: kube-api
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - match: Host(`kubernetes.mydomain.com`)
      kind: Rule
      services:
         - kind: Service
           name: kubernetes
           port: 16443 # have also tried 443
  tls:
    secretName: kubernetes.mydomain.com

这适用于我的其他服务+ingressroute 但不适用于 api。

对于 kubernetes api 我只能看到我的证书已成功生成,但页面只显示 'Internal Server Error'

请让我知道我可以提供哪些额外信息,我很乐意提供!

这个问题是因为 traefik 试图通过 https 连接 kube-apiserver。

我不得不使用 serverTransport 来允许 traefik 和 kube-apiserver 之间的不安全通信。这不是安全问题,因为与 traefik 的通信将验证 ssl。

可以在本页的最底部找到执行此操作的方法。 https://doc.traefik.io/traefik/v2.4/routing/providers/kubernetes-crd/#kind-serverstransport