给Ingress上配置ssl证书

创建secret

1
2
3
4
kubectl create secret tls [secretName]  --cert=[pem文件路径] --key=[key文件路径] --namespace [namespace] -o yaml --dry-run=client > ingress-default-cert.yaml


kubectl apply -f ingress-default-cert.yaml

Ingress添加证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: [ingress-name]
namespace: [namespace] # ingress要和secret在同一个名称空间下
annotations:
kubernetes.io/ingress.class: traefik
traefik.frontend.rule.type: PathPrefixStrip
# http 重定向到 https
ingress.kubernetes.io/ssl-redirect: "True"
spec:
tls:
- hosts:
- xxxx.xxxx # 这里是下面要配置https的域名
- xxxx.xxxx # 这里是下面要配置https的域名
secretName:
[secret-name]:
rules:
- host: xxx.xxx.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: [service-name]
port:
number: 8080

参考资料

  1. 为k8s集群配置SSL证书
  2. k3s配置ingress使用ssl证书