Kubernetes 上的 Traefik v2.0 自签名证书
Traefik v2.0 self signed certificate on Kubernetes
我是 运行 Traefik (v2.0) 作为我的 EKS 集群的入口网关。 Traefik 入口工作正常。
现在,我需要使用自签名证书为我的入口添加 https 支持。为此,我有:
- 创建了一个从 http 到 https redirectio 的 IngressRoute -> 这工作正常
- 使用我的自签名证书的密钥和证书创建了一个秘密
kubectl create secret tls tlssecret --key="eks.tls.key" --cert="eks.tls.crt"
- 为我的 IngressRoute 部署添加了 tls 秘密:
- api版本:traefik.containo.us/v1alpha1
种类:IngressRoute
元数据:
名称:pulseingressroutetls
命名空间:脉冲
规格:
入口点:
- 网络安全
tls:
秘密名称:pulsetlssecret
路线:
- 匹配:PathPrefix(/auth
)
...
此部署后,当我浏览入口 url 时,它仍然向我显示 TRAEFIK DEFAULT CERT,而不是我的自签名证书。
请告诉我我做错了什么?还有其他方法吗?
尝试将秘密安装到您的容器上,以便 traefik 服务识别它。此外,使用以下配置配置 IngressRoute。
tls:
certificates:
- certFile: /path/to/domain.cert
keyFile: /path/to/domain.key
希望对您有所帮助。
最终结果如下:
traefik-conf.yml:
apiVersion: v1
kind: ConfigMap
metadata:
name: traefik-conf
namespace: pulse
data:
traefik.yml: |
api:
dashboard: true
insecure: true
global:
checkNewVersion: false
sendAnonymousUsage: false
ping: {}
entryPoints:
websecure:
address: ":443"
web:
address: ":80"
providers:
kubernetesCRD: {}
file:
filename: /etc/traefik/traefik.yml
watch: true
tls:
stores:
default:
defaultCertificate:
certFile: /ssl/tls.pem
keyFile: /ssl/tls.key
options:
default:
minVersion: VersionTLS12
sniStrict: false
certificates:
- certFile: /ssl/tls.pem
keyFile: /ssl/tls.key
我更改了入口控制器如下:
spec:
serviceAccountName: traefik-ingress-controller
containers:
- name: traefik
image: traefik:v2.0
volumeMounts:
- name: config
mountPath: /etc/traefik/traefik.yml
subPath: traefik.yml
- name: ssl
mountPath: /ssl
ports:
- name: web
containerPort: 80
- name: websecure
containerPort: 443
- name: admin
containerPort: 8080
volumes:
- name: ssl
secret:
secretName: traefik-cert
- name: config
configMap:
name: traefik-conf
入口路线:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: pulseingressroutetls
namespace: pulse
spec:
entryPoints:
- websecure
tls:
secretname: traefik-cert
routes:
...
NumeroUno 接受的解决方案确实有效,但我有几点小意见:
certFile: /ssl/tls.pem
应该是 certFile: /ssl/tls.crt
- 根据最初的秘密创建,秘密名称是
tlssecret
,不是 traefik-cert
。
我是 运行 Traefik (v2.0) 作为我的 EKS 集群的入口网关。 Traefik 入口工作正常。
现在,我需要使用自签名证书为我的入口添加 https 支持。为此,我有:
- 创建了一个从 http 到 https redirectio 的 IngressRoute -> 这工作正常
- 使用我的自签名证书的密钥和证书创建了一个秘密
kubectl create secret tls tlssecret --key="eks.tls.key" --cert="eks.tls.crt"
- 为我的 IngressRoute 部署添加了 tls 秘密:
- api版本:traefik.containo.us/v1alpha1
种类:IngressRoute
元数据:
名称:pulseingressroutetls
命名空间:脉冲
规格:
入口点:
- 网络安全
tls:
秘密名称:pulsetlssecret
路线: - 匹配:PathPrefix(/auth
) ...
此部署后,当我浏览入口 url 时,它仍然向我显示 TRAEFIK DEFAULT CERT,而不是我的自签名证书。
请告诉我我做错了什么?还有其他方法吗?
尝试将秘密安装到您的容器上,以便 traefik 服务识别它。此外,使用以下配置配置 IngressRoute。
tls:
certificates:
- certFile: /path/to/domain.cert
keyFile: /path/to/domain.key
希望对您有所帮助。
最终结果如下:
traefik-conf.yml:
apiVersion: v1
kind: ConfigMap
metadata:
name: traefik-conf
namespace: pulse
data:
traefik.yml: |
api:
dashboard: true
insecure: true
global:
checkNewVersion: false
sendAnonymousUsage: false
ping: {}
entryPoints:
websecure:
address: ":443"
web:
address: ":80"
providers:
kubernetesCRD: {}
file:
filename: /etc/traefik/traefik.yml
watch: true
tls:
stores:
default:
defaultCertificate:
certFile: /ssl/tls.pem
keyFile: /ssl/tls.key
options:
default:
minVersion: VersionTLS12
sniStrict: false
certificates:
- certFile: /ssl/tls.pem
keyFile: /ssl/tls.key
我更改了入口控制器如下:
spec:
serviceAccountName: traefik-ingress-controller
containers:
- name: traefik
image: traefik:v2.0
volumeMounts:
- name: config
mountPath: /etc/traefik/traefik.yml
subPath: traefik.yml
- name: ssl
mountPath: /ssl
ports:
- name: web
containerPort: 80
- name: websecure
containerPort: 443
- name: admin
containerPort: 8080
volumes:
- name: ssl
secret:
secretName: traefik-cert
- name: config
configMap:
name: traefik-conf
入口路线:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: pulseingressroutetls
namespace: pulse
spec:
entryPoints:
- websecure
tls:
secretname: traefik-cert
routes:
...
NumeroUno 接受的解决方案确实有效,但我有几点小意见:
certFile: /ssl/tls.pem
应该是certFile: /ssl/tls.crt
- 根据最初的秘密创建,秘密名称是
tlssecret
,不是traefik-cert
。