• Post author:
  • Post category:运维
  • Post comments:2评论
  • Reading time:2 mins read

服务器用的pve做虚拟机平台,然后pve的web面板是强制https的,我想用traefik-ingress去代理作为外部tls的pve,查了总计快20个小时,尝试了三次,终于得出解决方案,这里简单记录一下。

首先是用traefik的CRD定义一个ServersTransport

apiVersion: traefik.containo.us/v1alpha1
kind: ServersTransport
metadata:
  name: isv-st
  namespace: lan-service

spec:
  serverName: pve
  insecureSkipVerify: true 

主要就是insecureSkipVerify这个配置,用于禁用 SSL 证书验证,不配的话就会报500异常。

然后就是其他的资源:

apiVersion: v1
kind: Endpoints
metadata:
  name: pve
  namespace: lan-service
subsets:
  - addresses:
      - ip: 192.168.66.10
    ports:
      - name: web
        port: 8006
---
apiVersion: v1
kind: Service
metadata:
  name: pve
  namespace: lan-service
spec:
  ports:
    - name: web
      port: 8006
      targetPort: 8006
---

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: pve
  namespace: lan-service
spec:
  entryPoints:
    - inwebsecure
  routes:
    - kind: Rule
      match: >-
        Host(`test.internal.hafuhafu.cn`)
      services:
        - name: pve
          port: 8006
          scheme: https
          serversTransport: isv-st

需要注意的是要在services里引用前面的ServersTransport,同时配置scheme,不配的话会502异常。

按以上配置后应该就可以正常访问pve的web面板了。

吐槽一下:大部分时间都走了弯路,还尝试了导出pve的pem和key做secret然后加到IngressRoute的Tls配置里,屌用没有,这部分资料真的太少了。

参考:

https://doc.traefik.io/traefik/routing/overview/#insecureskipverify

https://doc.traefik.io/traefik/master/routing/providers/kubernetes-crd/#kind-ingressroute

https://doc.traefik.io/traefik/master/routing/providers/kubernetes-crd/#kind-serverstransport

葫芦

葫芦,诞生于1992年8月11日,游戏宅,胶佬,爱好摸鱼,一个干过超市收银,工地里搬过砖,当过广告印刷狗,做过电焊铁艺的现役.Net程序员。

这篇文章有 2 个评论

  1. 第 21568页

    traefik的文档写的真的挺烂的,看的我头昏

    1. 葫芦

      确实,这问题要是换nginx的ingress分分钟就解决了,traefik的文档查了半天都不知所以然

发表回复