目前容器服務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上進行配置。
無需改動SLB的配置
每一個應用都可以通過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檔案進行證書的配置
第二步,使用以下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的方式進行證書的配置。