天天看點

在容器服務kubernetes上配置https

目前容器服務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。

在容器服務kubernetes上配置https

       第二步,通路tomcat應用,采用SLB位址進行通路。如下圖所示,可以通過IP:Port的方式進行通路。

在容器服務kubernetes上配置https

第三步,檢視service對應的SLB資訊。如下圖所示可以看到,目前SLB開通的是TCP:8080。如果采用https的通路方式,我們需要将協定和端口改為https:443。

在容器服務kubernetes上配置https

第四步,在SLB界面添加https的監聽。

1、        

配置為選擇https協定,端口為443;

2、        

填入ssl證書,證書生成可以參考

生成CA憑證

3、        

後端伺服器端口服務界面找到該服務對應的NodePort;

在容器服務kubernetes上配置https

4、        

點選完成建立,建立完成後如下所示。

在容器服務kubernetes上配置https

       第五步,通路https的tomcat應用,

https://slb_ip

。如果在證書中加入了域名驗證,可以使用域名進行通路。同時我們沒有删除tcp:8080,是以通過slb_ip:8080也可以通路。

在容器服務kubernetes上配置https

方式二 在ingress上配置證書

通過ingress暴露應用的通路方式,并且證書在ingress上進行配置。

無需改動SLB的配置

每一個應用都可以通過Ingress管理自己的證書,互不幹擾

       每個應用都需要單獨的證書進行通路;或者叢集中存在需要證書才能通路的應用。

同樣以tomcat為例進行應用的建立;建立tomcat應用及其服務參考方式一中的步驟。

在這裡以tomcat應用及服務建立好為前提。

方法一 通過控制台進行Ingress及其證書配置

第一步,根據準備好的證書建立secret,指令如下:(在背景master節點)

       kubectl create secret tls foo.bar --key

tls.key --cert tls.crt

注意

:在這裡需要正确配置域名,否則後續通過https通路會有問題。

在容器服務kubernetes上配置https

       第二步,登入控制台,找到【應用】->【路由】,點選【建立】進行路由的建立;建立需要填入的參數如下圖所示:

在容器服務kubernetes上配置https

       第三步,在路由界面找到剛建立的路由test-https,點選詳情檢視具體資訊。

在容器服務kubernetes上配置https

       第四步,在詳情頁面檢視具體資訊,找到域名;

在容器服務kubernetes上配置https

       第五步,使用域名進行通路,由于我們建立了TLS證書通路,說以要用https來進行域名的通路,針對該應用,域名通路如下,其中test123.com為示例,需要自己解析。

在容器服務kubernetes上配置https

方法二 通過yaml檔案進行證書的配置

在容器服務kubernetes上配置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。

在容器服務kubernetes上配置https

總結

       建議通過配置Ingress的方式進行證書的配置。

繼續閱讀