溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

TLS使用指南(一):如何在Rancher 2.x中進行TL

發(fā)布時間:2020-03-14 13:31:09 來源:網(wǎng)絡(luò) 閱讀:1108 作者:RancherLabs 欄目:云計算

引 言

 

這是一個系列文章,我們將在本系列中探索Rancher使用TLS證書的不同方式。TLS,安全傳輸層協(xié)議,是用于保護網(wǎng)絡(luò)通信的加密協(xié)議。它是目前已經(jīng)棄用的安全套接層(SSL)的繼任者。
 

你可以從本系列中了解TLS如何集成到各種Rancher組件中以及如何準(zhǔn)備環(huán)境以正確利用Rancher中的TLS。
 

為什么安全傳輸層協(xié)議(TLS)很重要?

 

Rancher在任何地方都可以使用TLS。因此,在安裝Rancher之前,確定TLS終止選項十分重要。

 
1、 確認你想要執(zhí)行的TLS終止類型,有以下幾種類型:
 

  • 自簽名,由Rancher終止(這是默認的)

  • Let’s Encrypt,由Rancher終止

  • 自帶證書,由Rancher終止

  • 外部TLS終止
     

2、 如果你選擇了自帶證書或外部TLS終止,那么請確保你有用于注冊證書的CA證書的副本(僅需cert,不需要密鑰)。Rancher在執(zhí)行操作時需要這一文件。
 

3、 確保你知道Rancher要使用的主機名。這在安裝之后不可更改。

 

建議你通過閱讀文檔來了解更多的細節(jié):

https://docs.rancher.cn/
 
TLS使用指南(一):如何在Rancher 2.x中進行TL
 

什么組件需要安全傳輸層協(xié)議

 

對于任何企業(yè)軟件來說,你都需要在安裝和使用之前確定特定的要求,包括存儲要求、網(wǎng)絡(luò)、在云端還是本地等等。在進行安裝之前,你必須得明確回答這些問題。

 

對于Rancher來說,考慮因素之一是TLS。必須了解并計劃使用Rancher進行TLS的方法,如此才能獲得能夠充分支持并且擁有良好功能的解決方案。

 

除了HTTPS安全之外,還有其他兩個地方也十分需要TLS:
 

1、 kubectl

2、 節(jié)點和集群agent通信

 

注意,并不止以上兩個地方會使用到TLS,只是上述兩個地方更為常見。
 

理解kubectl TLS

 

首先,我們來看一下示例kubeconfig文件:
 

apiVersion: v1
kind: Config
clusters:
\- name: "sample"
  cluster:
    server: "https://rancher.example.org/k8s/clusters/c-1234"
    certificate-authority-data: "LS0t..."

 
特別注意certificate-authority-data的存在。該字段是CA證書的base64編碼版本,這一CA證書可用于對Kubernetes API服務(wù)器提供的TLS證書進行簽名?;蛘呤荝ancher在代理調(diào)用kube-apiserver時提供的TLS證書。

 

為什么這個如此重要呢?因為kubectl使用certificate-authority-data來確保是你(而不是冒名頂替者)正在連接到正確的集群。如果服務(wù)器提供的證書尚未由certificate-authority-data中的證書簽名,那么kubectl會警告你并且退出?;旧?,你不會遭受MITM(中間人)***。
 

certificate-authority-data中的值來自kube-ca的CA證書(非Rancher集群或使用授權(quán)集群端點的Rancher集群),或者是Rancher CA證書(任意Rancher集群)。

 

請務(wù)必在此字段中輸入正確的值,否則kubectl不會驗證與你的Kubernetes集群的連接。這就是為什么在設(shè)置Rancher時需要正確配置TLS。
 

理解節(jié)點和集群Agent通信

 

在任意Rancher連接的集群(包括導(dǎo)入的或其他方式)中,需要部署兩個工作負載:

 

1、cattle-cluster-agentDeployment

2、cattle-node-agentDeployment

 

每個工作負載執(zhí)行一個特定的功能。總之,這兩個agent連接到Rancher的API并在tcp/443上建立安全的websocket連接。然后,該websocket連接會用于Rancher與托管的節(jié)點或集群之間的雙向通信。

 

集群agent連接到托管集群的Kubernetes API,這使Rancher可以通過websocket隧道執(zhí)行API操作。當(dāng)執(zhí)行集群操作時(如升級、ectd快照等),節(jié)點agent將與RKE集群中的節(jié)點進行交互。
 

這兩個agent都使用稱為“CA checksum”的配置值,該配置值將作為環(huán)境變量以CATTLE\_CA\_CHECKSUM的形式傳遞給Pod。該值需要與kubectl相同——確保連接到正確的端點并方式MITM的發(fā)生。但是,校驗和的工作原理略有不同。

 
cattle agent的CA checksum可以厭憎agent是否連接到Rancher API的正確實例。由于Rancher使用TLS保護其HTTPS API端點,因此agent容器可以使用此校驗和來驗證API端點提供的TLS證書是否正確。
 

其次,CATTLE\_CA\_CHECKSUM未配置為CA證書的base64編碼副本。相反,Rancher會生成CA證書的sha256校驗和,該證書用于簽署Rancher TLS證書,并將該值放入CATTLE\_CA\_CHECKSUM字段中。結(jié)果如下:
 

CATTLE\_CA\_CHECKSUM=b0af09b35ef086fcfc21e990fbd750720abe5c811dbea3ae40fe050a67f0bdb0e

 
當(dāng)一個Rancher集群或節(jié)點agent調(diào)用Rancher API,它會將CA證書與其在Deployment和DaemonSet中配置的那一個進行比較。如果它們匹配,通信則會建立起來。
 

安全傳輸層協(xié)議(TLS)終止(termination)

 

當(dāng)安裝Rancher時有以下4種主要方式來終止TLS:

 

  • 使用Rancher的自簽名證書

  • 使用Let’s Encrypt

  • 自帶證書

  • 外部TLS終止

 
每種方法都有特定的要求,需要在具體操作中進行權(quán)衡。
 

使用Rancher的自簽名證書

 

在終止TLS的四個選項中,這個可能是最簡單的。在HA和單節(jié)點安裝方案中,這也是Rancher的默認選項。也就是說,通過不將任何TLS特定的參數(shù)傳遞給helm installdocker run,來進行安裝。
 
安裝后,Rancher會生成一個CA證書(CN=cattle-ca),并且使用該證書為其自身證書簽名。根據(jù)你執(zhí)行的安裝類型,自簽名證書的工作方式會有所不同。
 

單節(jié)點安裝

 

容器啟動后,設(shè)置前,Rancher在443端口上響應(yīng)任意HTTPS請求,無論其目標(biāo)Host值如何。這是如何成為可能的呢?

 

在這一狀態(tài)下,Rancher會為你到達的任何主機名自動生成一個證書。如果是一個IP(如10.11.12.13),那么Rancher會為該IP生成一個自簽名(使用cattle-ca)證書。如果是以一個主機名(如my-rancher.example.org)到達此新的Rancher安裝目錄,同樣也會以相同的方式生成一個自簽名證書。

 
在Rancher使用單個證書之前,你需要完成設(shè)置步驟(設(shè)置管理員密碼并確認Rancher主機名)。該證書對于在Rancher初始設(shè)置期間配置的主機名有效。
 

HA安裝

 
在HA安裝場景下,自簽名證書需要你安裝一個名為cert-manager的應(yīng)用程序。與單節(jié)點Rancher管理CA證書本身不同,HA rancher使用cert-manager來處理證書的生命周期。你可以根據(jù)以下指引將cert-manager安裝到你準(zhǔn)備好的Kubernetes集群中:

https://rancher.com/docs/rancher/v2.x/en/installation/k8s-install/helm-rancher/

 
一旦你完成cert-manager的安裝,下一步是安裝rancher。使用自簽名證書是Rancher的默認設(shè)置,所以執(zhí)行helm install時實際上只有一個強制性參數(shù):
 

--set hostname=<YOUR.DNS.NAME>

 
該參數(shù)是強制性的,因為Rancher HA安裝不具有與單節(jié)點安裝相同的即時證書生成功能。因此,一旦你設(shè)置了主機名,該主機名將用于Rancher安裝的整個生命周期。所以你必須確保你的設(shè)置是正確的。

 
然后cert-manager將會生成一個證書,該證書作為一個secret存儲在cattle-system命名空間中,名為tls-rancher-ingress

 
本文就到此結(jié)束啦,本系列的第二篇文章將會為大家介紹其他類型的TLS終止選項。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI