ingress-nginx添加自签名证书,支持https,本文章主要做测试用,生产环境还需购买证书。以下是配置步骤:
1、生成自签名证书
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=tomcat.test.com/ST=WuHan/L=WuHan/O=devops/OU=unicorn"
-req是证书请求的子命令
-newkey rsa:2048 -keyout tls.key -newkey是与-key互斥的
-newkey是指在生成证书请求或者自签名证书的时候自动生成密钥,
-nodes 表示私钥不加密
-out 指定生成的证书请求或者自签名证书名称
-days 365 证书有效期
若执行自动输入,可使用-subj选项:
-subj——证书相关的用户信息(subject的缩写)
2、将证书导入k8s的secret中
这里要指定namespace,要不ingress controller找不到证书
kubectl create secret tls tls-secret –key=tls.key –cert tls.crt -n dev
3、再创建个ingress资源文件指定使用https,文件名为tomcat-ingress.yaml
主要就是添加了tls相关,域名还是不变的以及一个注解,并且引用了前面打入的证书
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-http
namespace: dev
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
ingressClassName: nginx
rules: # 一个ingress可以配置多个rules
- host: tomcat.test.com # 域名配置,可以不写,匹配*,此域名就是浏览器里访问的URL
http:
paths: # 相当于nginx的location,同一个host可以配置多个path,此处我们写所有
- path: /
pathType: Prefix
backend:
service:
name: tomcat-service # 代理到哪个svc,与上面创建的测试后端svc对应
port:
number: 8080 # svc暴露出来的端口,与上面创建的测试后端svc对应
tls:
- hosts:
- tomcat.test.com
secretName: tls-secret
4、使用命令创建
kubectl apply -f tomcat-ingress.yaml
5、查看ingress,可以看到多了一个443
6、使用浏览器访问https://tomcat.test.com,可以看见已经支持https访问了。
版权声明:本文为woaiyangmeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。