当前容器服务kubernetes支持多种应用访问的形式,最常见的如SLB:Port,NodeIP:NodePort,域名访问等;但是如果用户希望能够通过https进行应用的访问,容器服务kubernetes默认是不支持的,本文旨在通过实际案例演示https的访问配置,帮助用户在容器服务kubernetes中配置自己的证书。
根据访问的方式不同,当前可以分为两种配置证书的方式,分别为在前端SLB上配置证书和在ingress中配置证书。下面我们对两种方式进行详细介绍。
方式一 在前端SLB上配置证书
前提
应用采用LoadBalancer类型的service进行访问暴露。
优点
证书配置在SLB上,为应用外部访问的入口,在集群内部进行应用的访问依然用的是http访问方式。
缺点
需要维护较多的域名与IP地址的对应关系。
适用场景
应用不使用Ingress暴露访问方式,通过LoadBalancer类型的service进行应用访问的暴露。
示例
我们以tomcat为例进行演示。
第一步,创建一个tomcat应用及服务,在这里我们使用控制台进行应用的创建。如下图所示创建的tomcat应用名称为tomcat-https-test,服务名称为tomcat-https-test-svc。其中,service为LoadBalancer类型,暴露的服务端口为8080。
第二步,访问tomcat应用,采用SLB地址进行访问。如下图所示,可以通过IP:Port的方式进行访问。
第三步,查看service对应的SLB信息。如下图所示可以看到,当前SLB开通的是TCP:8080。如果采用https的访问方式,我们需要将协议和端口改为https:443。
第四步,在SLB界面添加https的监听。
1、 配置为选择https协议,端口为443;
2、 填入ssl证书,证书生成可以参考生成CA证书;
3、 后端服务器端口服务界面找到该服务对应的NodePort;
4、 点击完成创建,创建完成后如下所示。
第五步,访问https的tomcat应用,https://slb_ip。如果在证书中加入了域名验证,可以使用域名进行访问。同时我们没有删除tcp:8080,所以通过slb_ip:8080也可以访问。
方式二 在ingress上配置证书
前提
通过ingress暴露应用的访问方式,并且证书在ingress上进行配置。
优点
1、 无需改动SLB的配置
2、 每一个应用都可以通过Ingress管理自己的证书,互不干扰
适用场景
每个应用都需要单独的证书进行访问;或者集群中存在需要证书才能访问的应用。
示例
同样以tomcat为例进行应用的创建;创建tomcat应用及其服务参考方式一中的步骤。
在这里以tomcat应用及服务创建好为前提。
方法一 通过控制台进行Ingress及其证书配置
第一步,根据准备好的证书创建secret,命令如下:(在后台master节点)
kubectl create secret tls foo.bar --key tls.key --cert tls.crt
注意:在这里需要正确配置域名,否则后续通过https访问会有问题。
第二步,登录控制台,找到【应用】->【路由】,点击【创建】进行路由的创建;创建需要填入的参数如下图所示:
第三步,在路由界面找到刚创建的路由test-https,点击详情查看具体信息。
第四步,在详情页面查看具体信息,找到域名;
第五步,使用域名进行访问,由于我们创建了TLS证书访问,说以要用https来进行域名的访问,针对该应用,域名访问如下,其中test123.com为示例,需要自己解析。
方法二 通过yaml文件进行证书的配置
第一步,根据准备好的证书创建secret,命令如下:(在后台master节点)
kubectl create secret tls foo.bar --key tls.key --cert tls.crt
注意:在这里需要正确配置域名,否则后续通过https访问会有问题。
第二步,使用以下yaml文件进行ingress的创建,注意tls的引用;创建命令为kubectl create -f ingress-https.yaml;
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-https
spec:
tls:
- hosts:
- test-https.test123.com
secretName: test-https
rules:
- host: test-https.test123.com
http:
paths:
- path: /
backend:
serviceName: tomcat-https-test-svc
servicePort: 8080
第三步,在浏览器中访问test-https.test123.com。
总结
建议通过配置Ingress的方式进行证书的配置。