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

Traefik 2 Kubernetes环境配置LetsEncrypt不修改原部署方案咨询

Traefik v2 对接 LetsEncrypt 免修改原有部署方案

核心疑问解答

    1. 是否可以通过ConfigMap、Secret完成LetsEncrypt的相关配置?
      仅当你所使用的预装Traefik 2默认开启了ACME证书解析器的动态配置加载能力时可以实现,否则无法仅通过ConfigMap、Secret完成配置,不需要修改Traefik部署的优先方案是使用Cert-Manager。
    1. 该场景是否需要使用Cert-Manager?Cert-Manager是不是该场景的必备依赖?
      Cert-Manager不是该场景的必备依赖。Traefik原生自带ACME证书签发能力可直接对接LetsEncrypt,但原生能力默认将证书存储在Traefik Pod本地,且需要修改Traefik启动参数配置ACME规则,不符合你不修改原有部署的要求。使用Cert-Manager的方案完全不需要触碰Traefik的原有部署配置,所有资源均为独立声明,更适配后续GitOps管理需求。
    1. 如果上述方案不可行,是否必须自行通过GitOps重新部署整套Traefik Chart?
      不需要重新部署Traefik Chart,使用Cert-Manager的方案可完全实现需求,全程不需要修改原有Traefik的任何配置。只有当你必须使用Traefik原生ACME的特殊能力时,才需要重新部署Traefik。
    1. 生成的证书是否需要存储在volume中以避免丢失?
      如果你使用Traefik原生ACME能力,必须挂载持久化Volume存储acme.json文件,否则Pod重建后证书会丢失,频繁重签容易触发LetsEncrypt的限流规则。如果你使用Cert-Manager方案,证书默认存储在Kubernetes etcd的Secret资源中,不需要额外挂载持久化Volume。

免修改原有Traefik部署实操方案

该方案全程不需要调整原有Traefik的部署、Chart配置,所有资源均可通过GitOps做声明式管理,操作步骤如下:

  1. 部署Cert-Manager组件,所有资源均独立部署在专属命名空间下,不与原有Traefik组件产生耦合。
  2. 创建LetsEncrypt集群级签发者,配置示例如下:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: your-email@domain.com # 替换为你的邮箱,证书到期会收到提醒
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: traefik
  1. 调整你现有的IngressRoute配置,增加HTTPS入口、TLS配置和HTTP跳转HTTPS中间件,调整后的配置如下:
# 新增HTTP跳转HTTPS中间件
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: redirect-https
  namespace: default
spec:
  redirectScheme:
    scheme: https
    permanent: true
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
    cert-manager.io/cluster-issuer: letsencrypt-prod # 自动触发证书签发
  name: demo-ingress-route-http
  namespace: default
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`demo.mydomain.at`)
      priority: 0
      middlewares:
        - name: redirect-https
      services:
        - name: frontend-app
          port: 80
    - kind: Rule
      match: Host(`demo.mydomain.at`) && PathPrefix(`/backend/`)
      middlewares:
        - name: demo-middleware-backend
        - name: redirect-https
      priority: 0
      services:
        - name: backend-api
          port: 80
---
# HTTPS入口配置
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
  name: demo-ingress-route-https
  namespace: default
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`demo.mydomain.at`)
      priority: 0
      services:
        - name: frontend-app
          port: 80
    - kind: Rule
      match: Host(`demo.mydomain.at`) && PathPrefix(`/backend/`)
      middlewares:
        - name: demo-middleware-backend
      priority: 0
      services:
        - name: backend-api
          port: 80
  tls:
    certResolver: letsencrypt-prod
    domains:
      - main: demo.mydomain.at
    secretName: demo-mydomain-at-tls # Cert-Manager会自动将签发的证书存入该Secret
---
# 原有路径剥离中间件保留
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: demo-middleware-backend
  namespace: default
spec:
  stripPrefix:
    prefixes:
      - /backend

配置提交后,Cert-Manager会自动完成域名校验、证书签发、证书续期全流程,Traefik会自动读取Secret中的证书完成HTTPS卸载,全程不需要调整原有Traefik的任何配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:45:07