问题描述
每创建一个ingress资源,然后手动创建Certificate比较麻烦,如何实现在创建ingress的时候自动发布证书。
问题分析
cert-manager提供了在ingress资源中添加annotations的方式实现自动发布https证书。
问题解决
1.部署ingress-nginx参考此链接。 2.部署cert-manager参考此链接。 3.创建issuer,此处采用NDS01的方式,参考此链接。 4.创建ingress。
$ cat test-nginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tls-example-ingress-test
namespace: default
annotations:
cert-manager.io/cluster-issuer: <issuers-name> # 改成issuer或clusterissuer名字
spec:
ingressClassName: nginx
tls:
- hosts:
- test.xxx.cn
secretName: tls-example-ingress-test
rules:
- host: test.xxx.cn
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ngx-service
port:
number: 80
$ kubectl apply -f test-nginx-ingress.yaml
4.查看资源对象
$ kubectl get certificate -n default -owide
$ kubectl get certificaterequests.cert-manager.io -n default -owide
$ kubectl get orders.acme.cert-manager.io -n default -owide
$ kubectl get secrets -n default -n default -owide
参考链接
[1] https://cert-manager.io/docs/usage/ingress/ 如果您有其他问题,欢迎您联系火山引擎技术支持服务