Traefik2.4.9报错uses a non-existent resolver: inwx求助
Traefik证书解析器不存在问题排查与解决方案
问题描述
遇到证书解析器无法找到的问题,查阅了所有相关主题内容仍未获得解决方案。
环境信息
- kubernetes v1.20.6
- traefik: 2.4.9
配置说明
通过helm chart安装Traefik,使用的values.yaml配置如下:
image: name: traefik globalArguments: # tried with "globalArguments" and "additionalArguments" - "--api.insecure=true" - "--accesslog=false" - "--log.level=DEBUG" - "--certificatesresolvers.inwx.acme.email=*****@example.com" - "--certificatesresolvers.inwx.acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory" - "--certificatesresolvers.inwx.acme.dnschallenge=true" - "--certificatesresolvers.inwx.acme.dnschallenge.provider=inwx" - "--certificatesresolvers.inwx.acme.storage=/data/acme.json" ingressRoute: dashboard: enabled: true insecure: true api: insecure: true persistence: enabled: true accessMode: ReadWriteOnce size: 128Mi path: /data annotations: {} env: - name: INWX_USERNAME valueFrom: secretKeyRef: name: inwx-dns key: INWX_USERNAME - name: INWX_PASSWORD valueFrom: secretKeyRef: name: inwx-dns key: INWX_PASSWORD rbac: enabled: true namespaced: false ports: traefik: port: 9000 expose: true
错误信息
指定路径下生成了空的acme.json文件,但Traefik打印如下错误:
the router flweber-whoami-ingress-flweber-test-foo-example-de-flweber-whoami@kubernetes uses a non-existent resolver: inwx
Ingress定义
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: flweber-whoami-ingress namespace: flweber-test annotations: kubernetes.io/ingress.class: traefik traefik.ingress.kubernetes.io/router.entrypoints: websecure traefik.ingress.kubernetes.io/router.tls: "true" traefik.ingress.kubernetes.io/router.tls.certresolver: "inwx" traefik.ingress.kubernetes.io/router.middlewares: flweber-test-flweber-stripprefix@kubernetescrd spec: rules: - host: foo.example.de http: paths: - path: /flweber-whoami pathType: Prefix backend: service: name: flweber-whoami port: number: 80
修复方案
这是Traefik 2.4.x版本搭配对应Helm Chart的常见配置问题,按以下步骤操作即可解决:
- 修正启动参数配置项:Traefik 2.4.9对应的官方Helm Chart中,全局启动参数配置项已经从
globalArguments更改为additionalArguments,原globalArguments参数在该版本不会被注入到Pod启动参数中,导致证书解析器配置未生效。将values.yaml中的globalArguments字段重命名为additionalArguments即可。 - 补充websecure端口配置:当前values.yaml中未显式声明websecure(默认443)端口的暴露配置,需要补充端口配置确保TLS入口正常启用,示例如下:
ports: traefik: port: 9000 expose: true web: port: 80 expose: true websecure: port: 443 expose: true tls: enabled: true
- 验证acme.json权限:确认PersistentVolume挂载后,/data/acme.json文件的权限为600,权限不符合的话Traefik会拒绝读取写入该文件,也会间接导致解析器加载失败。
- 生效配置:修改values.yaml后执行
helm upgrade更新Traefik发布,删除原有Traefik Pod让新配置生效,之后即可看到inwx解析器已经正常加载。
内容的提问来源于stack exchange,提问作者Florian Weber
相关产品推荐
相关产品推荐

