nginx-ingress基于default-ssl-certificate配置泛域名默认证书
【摘要】 nginx-ingress基于default-ssl-certificate配置泛域名默认证书
一、背景
客户业务场景存在大量的https协议的ingress条目,并且多数访问域名存在相同的存根域,如果按照常规方法每个ingress配置一个tls证书,配置工作将会很繁重。
二、方案介绍
- 创建一个CN为*.xx的泛域名证书,使得所有业务都可以使用该证书
- 通过nginx-ingress --default-ssl-certificate参数配置,为所有业务的ingress资源配置默认证书
配置方法:在inress-nginx启动项添加--default-ssl-certificate=${namespace}/${tls}
三、操作指导
3.1 生成泛域名证书,并用证书创建对应secrets
- 配置泛域名证书,以*.demo.com为例,并创建对应secrets
# 创建证书原始文件
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout privkey.pem -out fullchain.pem -subj /C=CN/ST=Beijing/O=Devops/CN=*.demo.com
# 通过原始文件创建secret密钥 secret-test-full
kubectl create secret tls -n default secret-test-full --key privkey.pem --cert fullchain.pem
- 确认证书CN配置
openssl x509 -in fullchain.pem -text -noout
3.2 修改nginx-ingress启动参数,增加--default-ssl-certificate参数
修改nginx-ingress启动参数,--default-ssl-certificate= {3.1章节创建secrets}
3.3 测试验证
创建不配置TLS证书的ingress资源
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx2
namespace: test
annotations: {}
spec:
rules:
- host: www.test.demo.com
http:
paths:
- path: /
backend:
service:
name: nginx2
port:
number: 80
property:
ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
pathType: ImplementationSpecific
ingressClassName: nginx
tls: []
以https访问未配置证书的Ingress资源对外暴露服务, 观察默认的TLS证书是否生效
订阅本文作者或关注容器魔方
获取更多云原生技术资讯
本文评论区回复“云原生”,即可添加小助手微信k8s2222
领取应季云原生资料一份
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)