目前政府和企业网站基于安全考虑,新建网站上线前更多的要求使用https加密网站。同时企业新购的安全设备也会默认加强对非Https网站的校验,进而导致各种系统稳定性问题。另外,第三方接口对接时,第三方平台往往对接口有更严格的安全要求。例如钉钉应用,微信小程序等,无不要求提供https的接口。
网站在k8s Ingress的Https部署主要分为三步:
1、创建或购买证书;
2、创建secret;
3、配置ingress的tls;
一、SSL证书获取
首先,我们需要一个ssl证书。证书来源主要有两类,网站购买或基于openssl等工具生成自签名证书。网站购买证书一般涉及到费用,免费的证书只能给单域名使用,且有效期只有一年,一年后需要重新申请。自签名证书完全免费,但是在访问网站时,浏览器安全机制会提示证书无效,需要手动确认才能进入网站。正式商用网站一般不会使用自签名证书,不过接口可以使用这种方式进行加密传输。下面分别介绍两种证书的生成方式。</p>
1、阿里云DV证书申请(免费)
首先登陆阿里云控制台,在SSL证书菜单下进行购买。

购买完成以后直接申请证书

下一步进行域名解析,域名是自己账号下的话会自动添加域名解析记录。否则需要在域名解析下进行手动配置。
域名解析处添加TXT记录的解析:

申请完成后等待厂商审核。审核完成即可下载证书文件。可以根据自己的部署方式来选择。

在k8s中部署,则选择Nginx类型的证书文件。下载下来为压缩包,解压后为key和pem文件。至此,阿里云免费证书申请完成。

2、自签名证书生成
自签名证书的申请十分简单,在此,以Centos 7.5系统下制作证书为例进行说明。
1)安装openssl
yum install openssl -y
2)创建证书
openssl genrsa -out ued.inc.site.tls.key 2048
openssl req -new -x509 -days 3650 -key ued.inc.site.tls.key -out ued.inc.site.tls.crt -subj "/C=CN/ST=Zhejiang/O=FPI Inc/CN=Fpi Encryption Everywhere TLS CA"
二、创建k8s的secret
对于熟悉k8s的同学来说,创建secret非常简单。命令如下:
#阿里云DV证书
kubectl create secret generic dev-ssl-secret --from-file=tls.key=./4935435_gis-dev.fpi-inc.site.key --from-file=tls.crt=./4935435_dev.inc.site.pem -n dev
#自签名证书
kubectl create secret tls ued-secret --key ued.inc.site.tls.key --certued.inc.site.tls.crt -n ued
三、Ingress部署
只需要在Ingress的spec下面指定tls,然后刷新ingress即可。如图:

最后是配置好以后的效果和区别

