You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes中Traefik路由异常及TLS证书配置问题求助

Traefik Ingress路由配置异常问题

我无法将Traefik Ingress配置为预期状态:原本期望dev.mywebsite.io的/、/api-server、/hermes路径分别对应theia-svc、api-server-svc、hermes-svc三个服务,但所有路径均返回theia-svc内容或404错误。

初始Ingress配置文件(k8.ingress-traefik.yml)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/force-ssl-redirect: "false"
    ingress.kubernetes.io/ssl-redirect: "true"
    cert-manager.io/cluster-issuer: letsencrypt
    # traefik.ingress.kubernetes.io/rewrite-target: "/"
    # traefik.ingress.kubernetes.io/rule-type: "PathPrefixStrip"
    traefik.ingress.kubernetes.io/app-root: "/"
    # traefik.ingress.kubernetes.io/frontend-entry-points: "http,https"

  name: traefik-ingress
spec:
  ingressClassName: traefik
  rules:
    - host: dev.mywebsite.io
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: theia-svc
                port:
                  number: 80
          - path: /api-server
            pathType: Prefix
            backend:
              service:
                name: api-server-svc
                port:
                  number: 8082
          - path: /hermes
            pathType: Exact
            backend:
              service:
                name: hermes-svc
                port:
                  number: 8000
          - path: /hermes2/
            pathType: Exact
            backend:
              service:
                name: hermes-svc
                port:
                  number: 8000
          - path: /hermes3/
            pathType: Prefix
            backend:
              service:
                name: hermes-svc
                port:
                  number: 8000
  tls:
    - hosts:
        - dev.mywebsite.io
      secretName: tls-secret

集群服务列表(kubectl get service输出)

NAME             TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE     SELECTOR
api-server-svc   LoadBalancer   10.104.36.20    23.29.118.63   8082:32017/TCP   137m    app=api-server-pod
hermes-svc       ClusterIP      10.106.25.215   <none>         8000/TCP         67m     app=hermes-pod
kubernetes       ClusterIP      10.96.0.1       <none>         443/TCP          5h36m   <none>
theia-svc        ClusterIP      10.96.41.226    <none>         80/TCP           5h7m    app=theia-pod

hermes-svc服务连通性测试(curl 10.106.25.215:8000输出)

<!DOCTYPE html><html>...</html>

浏览器访问测试结果

  • https://dev.mywebsite.io/api-server => 404错误
  • https://dev.mywebsite.io/ => 返回theia-svc内容
  • https://dev.mywebsite.io/hermes => 返回theia-svc内容
  • https://dev.mywebsite.io/hermes/ => 返回theia-svc内容
  • https://dev.mywebsite.io/hermes2 => 返回theia-svc内容
  • https://dev.mywebsite.io/hermes2/ => 404错误
  • https://dev.mywebsite.io/hermes3 => 返回theia-svc内容
  • https://dev.mywebsite.io/hermes3/ => 404错误

更新:2023年7月3日

发现此前参考错误文档使用了不正确的Manifest语法,改用Traefik的IngressRoute后修复了路由问题,但原有的TLS(HTTPS)证书无法正常生效。

新配置文件(k8.ingress-traefik.yml)

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-ingressroute
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - match: Host(`dev.mywebsite.io`) && PathPrefix(`/api-server`)
      kind: Rule
      services:
        - name: api-server-svc
          port: 8082
      middlewares:
        - name: stripprefix
    - match: Host(`dev.mywebsite.io`) && PathPrefix(`/hermes`)
      kind: Rule
      services:
        - name: hermes-svc
          port: 8000
      middlewares:
        - name: stripprefix
  tls:
    certResolver: myresolver
    options:
      name: traefik-tls-option
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: stripprefix
spec:
  stripPrefix:
    prefixes:
      - /api-server
      - /hermes
---
apiVersion: traefik.containo.us/v1alpha1
kind: TLSOption
metadata:
  name: traefik-tls-option
spec:
  minVersion: VersionTLS12
  cipherSuites:
    - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
    - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
    - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  curvePreferences:
    - CurveP521
    - CurveP384
  sniStrict: true

内容的提问来源于stack exchange,提问作者passionateLearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:47:02