nginx-ingress基于default-ssl-certificate配置泛域名默认证书

举报
可以交个朋友 发表于 2023/12/12 21:51:16 2023/12/12
【摘要】 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证书是否生效


qrcode_for_gh_0412fa5a12f4_344 (5).jpg

订阅本文作者或关注容器魔方

获取更多云原生技术资讯

本文评论区回复“云原生”,即可添加小助手微信k8s2222

领取应季云原生资料一份

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。