1、创建Secret 存放根证书
在 Kubernetes 集群的 kube-system 命名空间中创建一个名为 cfca-root-cert 的 Secret。
kubectl create secret generic cfca-root-cert \
--from-file=cfca_ev_root.cer=/home/ssl/CFCA_EV_ROOT.cer \
-n kube-system
2、在traefik-deploy.yaml中添加并挂载根证书
volumeMounts:
1. 容器内挂载配置:将 Secret 中的证书文件挂载到容器内指定路径
- name: cfca-root-cert-volume # 挂载卷名称(自定义,需与下方一致)
mountPath: /etc/ssl/certs/cfca/cfca_ev_root.cer # 容器内最终路径(文件级挂载)
readOnly: true # 只读权限,防止修改
subPath: cfca_ev_root.cer # 明确指定挂载 Secret 中的 key(必填,避免目录覆盖)
volumes:
2. 挂载卷配置:关联 bigdata 命名空间的 cfca-root-cert Secret
- name: cfca-root-cert-volume # 与上方 volumeMounts.name 一致
secret:
secretName: cfca-root-cert # 你的 Secret 名称(不变)
items: # 映射 Secret 的 key 到容器内文件(确保名称一致)
- key: cfca_ev_root.cer # 第一步查询到的 Secret key
path: cfca_ev_root.cer # 容器内的文件名(与 mountPath 后缀一致)
3、在traefik-config.yaml 挂载根证书
traefik.yaml: |-
根证书核心配置:替换原有 insecureSkipVerify: true,启用证书验证并指定根证书
serversTransport:
insecureSkipVerify: false ## 关闭"忽略证书验证",启用严格的 TLS 证书校验
rootCAs:
挂载的 CFCA 根证书路径(与 Traefik Deployment 挂载路径一致)
- /etc/ssl/certs/cfca/cfca_ev_root.cer # 仅能写容器内的挂载路径,不能写宿主机路径
#serversTransport:
insecureSkipVerify: true ## Traefik 忽略验证代理服务的 TLS 证书
4、执行traefik配置更新
kubectl apply -f traefik-config.yaml
5、执行deployment 会自动重启traefik的pod
kubectl apply -f traefik-deploy.yaml
6、验证根证书是否挂载到了traefik 容器
kubectl exec -it -n kube-system traefik-v2-5954475db6-llblb -- cat /etc/ssl/certs/cfca/cfca_ev_root.cer

7、查看配置
kubectl exec -it -n kube-system traefik-v2-5954475db6-hbkgf -- cat /config/traefik.yaml

8、从外部访问业务域名(即使外层证书过期,也会触发 Traefik 与 Kong 的连接):
-k 忽略外层证书过期
curl -v https://www.bac.com --resolve www.bac.com:443:你的节点IP -k