<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          建設(shè)Kubernetes生產(chǎn)環(huán)境的16條建議

          共 5303字,需瀏覽 11分鐘

           ·

          2021-02-01 21:41

          點(diǎn)擊上方“開(kāi)源Linux”,選擇“設(shè)為星標(biāo)”

          回復(fù)“學(xué)習(xí)”獲取獨(dú)家整理的學(xué)習(xí)資料!


          Kubernetes是用于構(gòu)建高度可擴(kuò)展系統(tǒng)的強(qiáng)大工具。結(jié)果,許多公司已經(jīng)開(kāi)始或正在計(jì)劃使用它來(lái)協(xié)調(diào)生產(chǎn)服務(wù)。不幸的是,像大多數(shù)強(qiáng)大的技術(shù)一樣,Kubernetes也很復(fù)雜。我們整理了以下清單,以幫助你生產(chǎn)環(huán)境最佳實(shí)踐Kubernetes。

          容器最佳實(shí)踐

          Kubernetes提供了一種編排容器化服務(wù)的方法,因此,如果您沒(méi)有按順序?qū)嵺`你的容器,那么集群一開(kāi)始就不會(huì)處于良好狀態(tài)。請(qǐng)按照以下提示開(kāi)始。

          1、使用精簡(jiǎn)基礎(chǔ)鏡像

          what:容器是內(nèi)置在系統(tǒng)鏡像中的應(yīng)用程序堆棧。從業(yè)務(wù)邏輯到內(nèi)核的所有內(nèi)容都打包在一起。最小的鏡像會(huì)占用盡可能多的OS,并迫使您顯式添加所需的任何組件。

          why:僅在您的容器中包括要使用的軟件,同時(shí)具有性能和安全性方面的好處。磁盤上的字節(jié)數(shù)更少,復(fù)制鏡像的網(wǎng)絡(luò)流量更少,并且潛在的攻擊者無(wú)法訪問(wèn)的工具也更少。

          how:Alpine Linux是一個(gè)流行的選擇,并具有廣泛的支持。

          2、使用提供最佳正常運(yùn)行時(shí)間的注冊(cè)表

          what:注冊(cè)表是鏡像的存儲(chǔ)庫(kù),使這些鏡像可供下載和啟動(dòng)。在指定部署配置時(shí),您需要指定從何處獲取路徑為 / 的鏡像:

          why:您的集群需要鏡像去運(yùn)行。

          how:大多數(shù)云提供商都提供私有鏡像注冊(cè)表服務(wù):Google提供Google容器注冊(cè)表,AWS提供Amazon ECR,Microsoft提供Azure容器注冊(cè)表。

          仔細(xì)調(diào)研,并選擇提供最佳正常運(yùn)行時(shí)間的私人注冊(cè)表。由于您的群集將依靠您的注冊(cè)表來(lái)啟動(dòng)軟件的較新版本,因此任何停機(jī)時(shí)間都將阻止對(duì)正在運(yùn)行的服務(wù)進(jìn)行更新。

          3、使用ImagePullSecrets對(duì)您的注冊(cè)表進(jìn)行身份驗(yàn)證

          what:ImagePullSecrets是Kubernetes對(duì)象,可讓您的群集通過(guò)注冊(cè)表進(jìn)行身份驗(yàn)證,因此注冊(cè)表可以選擇誰(shuí)可以下載鏡像。

          why:如果您的注冊(cè)表足夠公開(kāi),可以讓集群從中提取鏡像,則表明注冊(cè)表足夠公開(kāi),需要身份驗(yàn)證。

          how:Kubernetes網(wǎng)站在配置ImagePullSecrets方面有很好的演練,該示例使用Docker作為示例注冊(cè)表。

          管理你的集群

          微服務(wù)本質(zhì)上是一團(tuán)糟。使用微服務(wù)的許多好處來(lái)自在服務(wù)級(jí)別上強(qiáng)制職責(zé)分離,有效地為后端的各個(gè)組件創(chuàng)建了抽象。一些很好的例子是運(yùn)行與業(yè)務(wù)邏輯分離的數(shù)據(jù)庫(kù),運(yùn)行軟件的單獨(dú)開(kāi)發(fā)和生產(chǎn)版本,或分離出水平可伸縮的流程。

          具有不同服務(wù)執(zhí)行不同職責(zé)的陰暗面是,它們不能被平等對(duì)待。值得慶幸的是,Kubernetes為您提供了許多解決此問(wèn)題的工具。

          4使用命名空間隔離環(huán)境

          what:命名空間是Kubernetes中最基本,最強(qiáng)大的分組機(jī)制。它們幾乎像虛擬集群一樣工作。默認(rèn)情況下,Kubernetes中的大多數(shù)對(duì)象僅限于一次影響單個(gè)名稱空間。

          why:大多數(shù)對(duì)象都是在命名空間范圍內(nèi)定義的,因此您必須使用命名空間。鑒于它們提供了強(qiáng)大的隔離性,因此它們非常適合隔離具有不同目的的環(huán)境,例如用戶服務(wù)的生產(chǎn)環(huán)境和嚴(yán)格用于測(cè)試的環(huán)境,或者分離支持單個(gè)應(yīng)用程序的不同服務(wù)堆棧,例如保持安全解決方案的工作負(fù)載與您自己的應(yīng)用程序分開(kāi)。一個(gè)好的經(jīng)驗(yàn)法則是按資源分配劃分名稱空間:如果兩組微服務(wù)將需要不同的資源池,請(qǐng)將它們放在單獨(dú)的名稱空間中。

          how:它是大多數(shù)對(duì)象類型的元數(shù)據(jù)的一部分:

          請(qǐng)注意,您應(yīng)該始終創(chuàng)建自己的名稱空間,而不要依賴“默認(rèn)”名稱空間。Kubernetes的默認(rèn)設(shè)置通常會(huì)為開(kāi)發(fā)人員優(yōu)化以最小的摩擦,這通常意味著甚至放棄最基本的安全措施。

          5通過(guò)Labels 管理您的集群

          what:Labels是組織集群的最基本且可擴(kuò)展的方法。它們?cè)试S您創(chuàng)建用于分隔Kubernetes對(duì)象的任意key:value對(duì)。例如,您可以創(chuàng)建一個(gè)標(biāo)簽密鑰,將處理敏感信息的服務(wù)與不處理敏感信息的服務(wù)區(qū)分開(kāi)。

          why:如前所述,Kubernetes使用標(biāo)簽進(jìn)行組織,但更具體地說(shuō),它們用于選擇。這意味著,當(dāng)您想給Kubernetes對(duì)象引用某個(gè)命名空間中的一組對(duì)象時(shí)(例如告訴網(wǎng)絡(luò)策略允許哪些服務(wù)相互通信),請(qǐng)使用它們的標(biāo)簽。由于它們代表了這種開(kāi)放式組織類型,因此請(qǐng)盡最大努力使事情簡(jiǎn)單化,并且僅在需要選擇權(quán)的地方創(chuàng)建標(biāo)簽。

          how:標(biāo)簽是一個(gè)簡(jiǎn)單的規(guī)范字段,您可以將其添加到Y(jié)AML文件中:

          6使用注釋來(lái)跟蹤重要的系統(tǒng)更改等

          what:注釋是可以附加到pod的任意鍵值元數(shù)據(jù),就像標(biāo)簽一樣。但是,Kubernetes不會(huì)讀取或處理批注,因此圍繞您可以和不能使用批注進(jìn)行注釋的規(guī)則相當(dāng)寬松,并且不能用于選擇。

          why:它們可幫助您跟蹤容器化應(yīng)用程序的某些重要功能,例如版本號(hào)或首次啟動(dòng)的日期和時(shí)間。僅在Kubernetes的上下文中,注釋是一種無(wú)能為力的構(gòu)造,但是當(dāng)用于跟蹤重要的系統(tǒng)更改時(shí),注釋可以成為開(kāi)發(fā)人員和運(yùn)營(yíng)團(tuán)隊(duì)的資產(chǎn)。

          how:注釋是類似于標(biāo)簽的規(guī)格字段。

          讓你的集群更加安全

          好了,您已經(jīng)建立了集群并按所需方式組織了-現(xiàn)在呢?好吧,接下來(lái)是要確保一些安全。您可能會(huì)花費(fèi)一生的時(shí)間來(lái)學(xué)習(xí),但仍未發(fā)現(xiàn)有人可以侵入您系統(tǒng)的所有方式。博客文章的內(nèi)容空間要比一生少得多,因此您必須滿足一些強(qiáng)烈的建議。

          7、使用RBAC實(shí)施訪問(wèn)控制

          what:RBAC(基于角色的訪問(wèn)控制)使您可以控制誰(shuí)可以查看或修改群集的不同方面。

          why:如果要遵循最小特權(quán)原則,則需要設(shè)置RBAC來(lái)限制群集用戶和部署能夠執(zhí)行的操作。

          how:如果要設(shè)置自己的集群(即不使用托管的Kube服務(wù)),請(qǐng)確保使用''--authorization-mode = Node,RBAC“啟動(dòng)您的kube apiserver。如果使用托管的Kubernetes例如,您可以通過(guò)查詢用于啟動(dòng)kube apiserver的命令來(lái)檢查它是否設(shè)置為使用RBAC。唯一通用的檢查方法是在kubectl cluster-info dump的輸出中查找“ --authorization-mode ...”。

          RBAC打開(kāi)后,您需要更改默認(rèn)權(quán)限以適合您的需求。Kubernetes項(xiàng)目站點(diǎn)在此處提供了有關(guān)設(shè)置角色和RoleBindings的演練。托管的Kubernetes服務(wù)需要啟用RBAC的自定義步驟-請(qǐng)參閱Google的GKE指南或Amazon的AKS指南。

          8、使用Pod安全策略防止危險(xiǎn)行為

          what:Pod安全策略是一種資源,非常類似于Deployment或Role,可以通過(guò)kubectl以相同的方式創(chuàng)建和更新。每個(gè)都有一個(gè)標(biāo)志集合,可用來(lái)防止集群中特定的不安全行為。

          why:如果創(chuàng)建Kubernetes的人認(rèn)為限制這些行為足夠重要,可以創(chuàng)建一個(gè)特殊的對(duì)象來(lái)處理它,那么它們很重要。

          how:讓他們工作可能會(huì)令人沮喪。我建議啟動(dòng)并運(yùn)行RBAC,然后在此處查看Kubernetes項(xiàng)目的指南。在我看來(lái),最重要的使用是防止特權(quán)容器和對(duì)主機(jī)文件系統(tǒng)的寫訪問(wèn),因?yàn)樗鼈兇砹巳萜鞒橄笾幸恍┹^泄漏的部分。

          9、使用網(wǎng)絡(luò)策略實(shí)施網(wǎng)絡(luò)控制/防火墻

          what:網(wǎng)絡(luò)策略是允許您明確聲明允許哪些流量的對(duì)象,而Kubernetes將阻止所有其他不符合標(biāo)準(zhǔn)的流量。

          why:限制群集中的網(wǎng)絡(luò)流量是一項(xiàng)基本且重要的安全措施。默認(rèn)情況下,Kubernetes啟用所有服務(wù)之間的開(kāi)放式通信。保留此“默認(rèn)開(kāi)放”配置意味著與Internet連接的服務(wù)與存儲(chǔ)敏感信息的數(shù)據(jù)庫(kù)僅一步之遙。

          how:有一篇文章寫的很好,具體詳情查看這里。

          10、使用Secrets來(lái)存儲(chǔ)和管理必要的敏感信息

          what:Secrets是您如何在Kubernetes中存儲(chǔ)敏感數(shù)據(jù),包括密碼,證書和令牌。

          why:無(wú)論您是實(shí)施TLS還是限制訪問(wèn),您的服務(wù)都可能需要相互認(rèn)證,與其他第三方服務(wù)或您的用戶進(jìn)行認(rèn)證。

          how:Kubernetes項(xiàng)目在此處提供了指南。一個(gè)關(guān)鍵建議:避免將機(jī)密作為環(huán)境變量加載,因?yàn)樵谀沫h(huán)境中擁有機(jī)密數(shù)據(jù)通常是不安全的。相反,將機(jī)密裝入容器中的只讀卷中-您可以在本 Use Secrets中找到一個(gè)示例。

          11、使用鏡像掃描識(shí)別和修復(fù)鏡像漏洞

          what:掃描儀檢查鏡像中安裝的組件。從操作系統(tǒng)到應(yīng)用程序堆棧的所有內(nèi)容。掃描程序?qū)τ谡页鲧R像所包含的軟件版本中存在哪些漏洞非常有用。

          why:漏洞一直在流行的開(kāi)源軟件包中發(fā)現(xiàn)。一些著名的例子是Heartbleed和Shellshock。您將想知道這些漏洞在系統(tǒng)中的什么位置,以便您知道哪些鏡像可能需要更新。

          how:掃描儀是基礎(chǔ)設(shè)施中相當(dāng)常見(jiàn)的部分-大多數(shù)云提供商都提供了產(chǎn)品。如果您想自己托管一些東西,那么開(kāi)源Clair項(xiàng)目是一個(gè)受歡迎的選擇。

          保持集群穩(wěn)定

          Kubernetes代表很高的技術(shù)棧。您擁有在嵌入式內(nèi)核上運(yùn)行的應(yīng)用程序,在VM中運(yùn)行的應(yīng)用程序(在某些情況下甚至在裸機(jī)上),以及Kubernetes自己的服務(wù)共享硬件。考慮到所有這些因素,在物理和虛擬領(lǐng)域中很多事情都會(huì)出錯(cuò),因此盡可能降低開(kāi)發(fā)周期的風(fēng)險(xiǎn)非常重要。Kubernetes周圍的生態(tài)系統(tǒng)已經(jīng)開(kāi)發(fā)了一系列最佳實(shí)踐,以使事情盡可能保持一致。

          12、遵循CI / CD方法

          what:持續(xù)集成/持續(xù)部署是一種過(guò)程哲學(xué)。相信對(duì)代碼庫(kù)進(jìn)行的每次修改都應(yīng)增加增量值,并準(zhǔn)備投入生產(chǎn)。因此,如果代碼庫(kù)中的某些內(nèi)容發(fā)生了更改,則可能要啟動(dòng)服務(wù)的新版本,以運(yùn)行測(cè)試。

          why:遵循CI / CD可以幫助您的工程團(tuán)隊(duì)在日常工作中牢記質(zhì)量。如果出現(xiàn)問(wèn)題,修復(fù)問(wèn)題將成為整個(gè)團(tuán)隊(duì)的當(dāng)務(wù)之急,因?yàn)榇撕笠蕾囉谝逊纸獾奶峤坏乃懈囊矊⒈环纸狻?/span>

          how:由于云部署軟件的興起,CI / CD越來(lái)越流行。因此,您可以從托管或自托管的眾多出色產(chǎn)品中進(jìn)行選擇。如果您的團(tuán)隊(duì)比較小,我建議您采用托管路線,因?yàn)楣?jié)省的時(shí)間和精力絕對(duì)值得您付出額外的費(fèi)用。

          13、使用Canary方法進(jìn)行更新

          what:Canary是一種將服務(wù)更改從代碼庫(kù)中的提交帶給用戶的方法。您啟動(dòng)了一個(gè)運(yùn)行最新版本的新實(shí)例,然后將用戶緩慢遷移到新實(shí)例,從而逐漸獲得了對(duì)更新的信心,而不是一次全部交換。

          why:無(wú)論您的單元測(cè)試和集成測(cè)試有多廣泛,它們都無(wú)法完全模擬生產(chǎn)中的運(yùn)行-總是有可能某些功能無(wú)法按預(yù)期運(yùn)行。使用金絲雀可以限制用戶接觸這些問(wèn)題。

          how:Kubernetes的可擴(kuò)展性提供了許多途徑來(lái)逐步推出服務(wù)更新。最直接的方法是創(chuàng)建一個(gè)單獨(dú)的部署,與當(dāng)前正在運(yùn)行的實(shí)例共享一個(gè)負(fù)載平衡器。這個(gè)想法是您擴(kuò)展新的部署,同時(shí)縮減舊的部署,直到所有正在運(yùn)行的實(shí)例都是新版本。

          14、實(shí)施監(jiān)控并將其與SIEM集成

          what:監(jiān)視意味著跟蹤和記錄您的服務(wù)正在做什么。

          why:讓我們面對(duì)現(xiàn)實(shí)吧-不管您的開(kāi)發(fā)人員多么出色,無(wú)論您的安全專家如何努力地發(fā)揮他們的聰明才智,事情都會(huì)出錯(cuò)。當(dāng)他們這樣做時(shí),您將想知道發(fā)生了什么,以確保您不會(huì)兩次犯相同的錯(cuò)誤。

          how:成功監(jiān)視服務(wù)有兩個(gè)步驟-需要對(duì)代碼進(jìn)行檢測(cè),并且需要將該檢測(cè)的輸出饋送到某個(gè)地方以進(jìn)行存儲(chǔ),檢索和分析。執(zhí)行檢測(cè)的方式在很大程度上取決于您的工具鏈,但是快速的網(wǎng)絡(luò)搜索應(yīng)該可以讓您有所作為。就存儲(chǔ)輸出而言,除非您有專門知識(shí)或需求,否則我建議使用托管SIEM(例如Splunk或Sumo Logic)-根據(jù)我的經(jīng)驗(yàn),DIY始終是與任何存儲(chǔ)相關(guān)的期望時(shí)間和精力的10倍。

          深度建議

          一旦集群達(dá)到一定規(guī)模后,您將發(fā)現(xiàn)手動(dòng)執(zhí)行所有最佳做法將變得不再可行,結(jié)果將給系統(tǒng)的安全性和穩(wěn)定性帶來(lái)挑戰(zhàn)。超過(guò)此閾值后,請(qǐng)考慮以下主題:

          15使用服務(wù)網(wǎng)格管理服務(wù)間通信

          what:服務(wù)網(wǎng)格是管理服務(wù)間通信的一種方法,可以有效地創(chuàng)建在實(shí)施服務(wù)時(shí)使用的虛擬網(wǎng)絡(luò)。

          why:使用服務(wù)網(wǎng)格可以減輕管理群集的一些較繁瑣的方面,例如確保對(duì)通信進(jìn)行正確的加密。

          how:根據(jù)您對(duì)服務(wù)網(wǎng)格的選擇,啟動(dòng)和運(yùn)行的復(fù)雜性可能千差萬(wàn)別。作為最常用的服務(wù)網(wǎng)格,Istio似乎正在蓬勃發(fā)展,并且您的配置過(guò)程將在很大程度上取決于您的工作負(fù)載。

          一個(gè)警告:如果您需要采用一個(gè)服務(wù)網(wǎng)格,請(qǐng)盡早采用它而不是稍后采用它-逐漸改變集群中的通信樣式可能會(huì)非常痛苦。

          16、使用準(zhǔn)入控制器解鎖Kubernetes中的高級(jí)功能

          what:準(zhǔn)入控制器是一種很好的萬(wàn)能工具,可用于管理集群中發(fā)生的一切。它們?cè)试S您設(shè)置Kubernetes在啟動(dòng)時(shí)將參考的Webhook。它們有兩種形式:變異和驗(yàn)證。突變準(zhǔn)入控制器會(huì)在部署啟動(dòng)之前更改其配置。驗(yàn)證準(zhǔn)入控制器會(huì)與您的webhook一致,以允許啟動(dòng)給定的部署。

          why:它們的用例廣泛且數(shù)量眾多–它們提供了一種通過(guò)自行開(kāi)發(fā)的邏輯和限制來(lái)迭代地提高集群穩(wěn)定性的好方法。

          how:查看有關(guān)如何開(kāi)始使用Admission Controllers的指南。


          - End -

          關(guān)注「開(kāi)源Linux」加星標(biāo),提升IT技能

          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91视频大香蕉 | 欧美黄片免费播放 | 国产无码毛片 | 亚洲高清人妻 | 国产77777 |