俯瞰云原生,这便是供应层
來源 | K8sMeetup社區(qū)
作者 |?Catherine Paganini,Jason Morgan
頭圖?|?下載于視覺中國
在都在說云原生,它的技術(shù)圖譜你真的了解嗎?中,我們對 CNCF 的云原生技術(shù)生態(tài)做了整體的介紹。從本篇開始,將詳細(xì)介紹云原生全景圖的每一層。
云原生全景圖的最底層是供應(yīng)層(provisioning)。這一層包含構(gòu)建云原生基礎(chǔ)設(shè)施的工具,如基礎(chǔ)設(shè)施的創(chuàng)建、管理、配置流程的自動化,以及容器鏡像的掃描、簽名和存儲等。供應(yīng)層也跟安全相關(guān),該層中的一些工具可用于設(shè)置和實(shí)施策略,將身份驗(yàn)證和授權(quán)內(nèi)置到應(yīng)用程序和平臺中,以及處理 secret 分發(fā)等。
接下來讓我們看一下供應(yīng)層的每個類別,它所扮演的角色以及這些技術(shù)如何幫助應(yīng)用程序適應(yīng)新的云原生環(huán)境。
自動化和配置
是什么
自動化和配置工具可加快計(jì)算資源(虛擬機(jī)、網(wǎng)絡(luò)、防火墻規(guī)則、負(fù)載均衡器等)的創(chuàng)建和配置過程。這些工具可以處理基礎(chǔ)設(shè)施構(gòu)建過程中不同部分的內(nèi)容,大多數(shù)工具都可與該空間中其他項(xiàng)目和產(chǎn)品集成。
解決的問題
傳統(tǒng)上,IT 流程依賴高強(qiáng)度的手動發(fā)布過程,周期冗長,通常可達(dá) 3-6 個月。這些周期伴隨著許多人工流程和管控,讓生產(chǎn)環(huán)境的變更非常緩慢。這種緩慢的發(fā)布周期和靜態(tài)的環(huán)境與云原生開發(fā)不匹配。為了縮短開發(fā)周期,必須動態(tài)配置基礎(chǔ)設(shè)施且無需人工干預(yù)。
如何解決問題
供應(yīng)層的這些工具使工程師無需人工干預(yù)即可構(gòu)建計(jì)算環(huán)境。通過代碼化環(huán)境設(shè)置,只需點(diǎn)擊按鈕即可實(shí)現(xiàn)環(huán)境配置。手動設(shè)置容易出錯,但是一旦進(jìn)行了編碼,環(huán)境創(chuàng)建就會與所需的確切狀態(tài)相匹配,這是一個巨大的優(yōu)勢。
盡管不同工具實(shí)現(xiàn)的方法不同,但它們都是通過自動化來簡化配置資源過程中的人工操作。
對應(yīng)工具
當(dāng)我們從老式的人工驅(qū)動構(gòu)建方式過渡到云環(huán)境所需的按需擴(kuò)展模式時,會發(fā)現(xiàn)以前的模式和工具已經(jīng)無法滿足需求,組織也無法維持一個需要創(chuàng)建、配置和管理服務(wù)器的 7×24 員工隊(duì)伍。Terraform 之類的自動化工具減少了擴(kuò)展數(shù)服務(wù)器和相關(guān)網(wǎng)絡(luò)以及防火墻規(guī)則所需的工作量。Puppet,Chef 和 Ansible 之類的工具可以在服務(wù)器和應(yīng)用程序啟動時以編程方式配置它們,并允許開發(fā)人員使用它們。
一些工具直接與 AWS 或 vSphere 等平臺提供的基礎(chǔ)設(shè)施 API 進(jìn)行交互,還有一些工具則側(cè)重于配置單個計(jì)算機(jī)以使其成為 Kubernetes 集群的一部分。Chef 和 Terraform 這類的工具可以進(jìn)行互操作以配置環(huán)境。OpenStack 這類工具可提供 IaaS 環(huán)境讓其他工具使用。
從根本上講,在這一層,你需要一個或多個工具來為 Kubernetes 集群搭建計(jì)算環(huán)境、CPU、內(nèi)存、存儲和網(wǎng)絡(luò)。此外,你還需要其中的一些工具來創(chuàng)建和管理 Kubernetes 集群本身。
在撰寫本文時,該領(lǐng)域中有三個 CNCF 項(xiàng)目:KubeEdge(一個沙盒項(xiàng)目)以及 Kubespray 和 Kops(后兩個是 Kubernetes 子項(xiàng)目,雖然未在全景圖中列出,但它們也屬于 CNCF)。此類別中的大多數(shù)工具都提供開源和付費(fèi)版本。
Container Registry
是什么
在定義 Container Registry 之前,我們首先討論三個緊密相關(guān)的概念:
容器是執(zhí)行流程的一組技術(shù)約束。容器內(nèi)啟動的進(jìn)程會相信它們正在自己的專用計(jì)算機(jī)上運(yùn)行,而不是在與其他進(jìn)程(類似于虛擬機(jī))共享的計(jì)算機(jī)上運(yùn)行。簡而言之,容器可以使你在任何環(huán)境中都能控制自己的代碼運(yùn)行。
鏡像是運(yùn)行容器及其過程所需的一組存檔文件。你可以將其視為模板的一種形式,可以在其上創(chuàng)建無限數(shù)量的容器。
倉庫是存儲鏡像的空間。
回到 Container Registry,這是分類和存儲倉庫的專用 Web 應(yīng)用程序。
鏡像包含執(zhí)行程序(在容器內(nèi))所需的信息,并存儲在倉庫中,倉庫被分類和分組。構(gòu)建、運(yùn)行和管理容器的工具需要訪問(通過引用倉庫)這些鏡像。
解決的問題
云原生應(yīng)用程序被打包后以容器的方式運(yùn)行。Container Registry 負(fù)責(zé)存儲和提供這些容器鏡像。
如何解決
通過在一個地方集中存儲所有容器鏡像,這些容器鏡像可以很容易地被應(yīng)用程序的開發(fā)者訪問。
對應(yīng)工具
Container Registry 要么存儲和分發(fā)鏡像,要么以某種方式增強(qiáng)現(xiàn)有倉庫。本質(zhì)上,它是一種 Web API,允許容器引擎存儲和檢索鏡像。許多 Container Registry 提供接口,使容器掃描/簽名工具來增強(qiáng)所存儲鏡像的安全性。有些 Container Registry 能以特別有效的方式分發(fā)或復(fù)制圖像。任何使用容器的環(huán)境都需要使用一個或多個倉庫。
該空間中的工具可以提供集成功能,以掃描,簽名和檢查它們存儲的鏡像。在撰寫本文時,Dragonfly 和 Harbor 是該領(lǐng)域中的 CNCF 項(xiàng)目,而 Harbor 最近成為了第一個遵循 OCI 的倉庫。主要的云提供商都提供自己的托管倉庫,其他倉庫可以獨(dú)立部署,也可以通過 Helm 之類的工具直接部署到 Kubernetes 集群中。
安全和合規(guī)
是什么
云原生應(yīng)用程序的目標(biāo)是快速迭代。為了定期發(fā)布代碼,必須確保代碼和操作環(huán)境是安全的,并且只能由獲得授權(quán)的工程師訪問。這一部分的工具和項(xiàng)目可以用安全的方式創(chuàng)建和運(yùn)行現(xiàn)代應(yīng)用程序。
解決什么問題
這些工具和項(xiàng)目可為平臺和應(yīng)用程序加強(qiáng)、監(jiān)控和實(shí)施安全性。它們使你能在容器和 Kubernetes 環(huán)境中設(shè)置策略(用于合規(guī)性),深入了解存在的漏洞,捕獲錯誤配置,并加固容器和集群。
如何解決
為了安全地運(yùn)行容器,必須對其進(jìn)行掃描以查找已知漏洞,并對其進(jìn)行簽名以確保它們未被篡改。Kubernetes 默認(rèn)的訪問控制比較寬松,對于想攻擊系統(tǒng)的人來說, Kubernetes 集群很容易成為目標(biāo)。該空間中的工具和項(xiàng)目有助于增強(qiáng)群集,并在系統(tǒng)運(yùn)行異常時提供工具來檢測。
對應(yīng)工具
為了在動態(tài)、快速發(fā)展的環(huán)境中安全運(yùn)行,我們必須將安全性視為平臺和應(yīng)用程序開發(fā)生命周期的一部分。這部分的工具種類繁多,可解決安全領(lǐng)域不同方面的問題。大多數(shù)工具屬于以下類別:
審計(jì)和合規(guī);
生產(chǎn)環(huán)境強(qiáng)化工具的路徑:
代碼掃描
漏洞掃描
鏡像簽名
策略制定和執(zhí)行
網(wǎng)絡(luò)層安全
其中的一些工具和項(xiàng)目很少會被直接使用。例如 Trivy、Claire 和 Notary,它們會被 Registry 或其他掃描工具所利用。還有一些工具是現(xiàn)代應(yīng)用程序平臺的關(guān)鍵強(qiáng)化組件,例如 Falco 或 Open Policy Agent(OPA)。
該領(lǐng)域有許多成熟的供應(yīng)商提供解決方案,也有很多創(chuàng)業(yè)公司的業(yè)務(wù)是把 Kubernetes 原生框架推向市場。在撰寫本文時,Falco、Notary/TUF 和 OPA 是該領(lǐng)域中僅有的 CNCF 項(xiàng)目。
密鑰和身份管理
是什么
在進(jìn)入到密鑰管理之前,我們首先定義一下密鑰。密鑰是用于加密或簽名數(shù)據(jù)的字符串。和現(xiàn)實(shí)中的鑰匙一樣,密鑰鎖定(加密)數(shù)據(jù),只有擁有正確密鑰的人才能解鎖(解密)數(shù)據(jù)。
隨著應(yīng)用程序和操作開始適應(yīng)新的云原生環(huán)境,安全工具也在不斷發(fā)展以滿足新的需求。此類別中的工具和項(xiàng)目可用于安全地存儲密碼和其他 secrets(例如 API 密鑰,加密密鑰等敏感數(shù)據(jù))、從微服務(wù)環(huán)境中安全刪除密碼和 secret 等。
解決的問題
云原生環(huán)境是高度動態(tài)的,需要完全編程(無人參與)和自動化的按需 secret 分發(fā)。應(yīng)用程序還必須知道給定的請求是否來自有效來源(身份驗(yàn)證),以及該請求是否有權(quán)執(zhí)行操作(授權(quán))。通常將其稱為 AuthN 和 AuthZ。
如何解決
每個工具或項(xiàng)目實(shí)施的方法不同,但他們都提供:
安全分發(fā) secret 或密鑰的方法。
身份認(rèn)證或(和)授權(quán)的服務(wù)或規(guī)范。
對應(yīng)的工具
此類別中的工具可以分為兩組:
一些工具專注于密鑰生成、存儲、管理和輪轉(zhuǎn)。
另一些專注于單點(diǎn)登錄和身份管理。
拿 Vault 來說,它是一個通用的密鑰管理工具,可管理不同類型的密鑰。而 Keycloak 則是一個身份代理工具,可用于管理不同服務(wù)的訪問密鑰。
在撰寫本文時,SPIFFE/SPIRE 是該領(lǐng)域中唯一的 CNCF 項(xiàng)目。
供應(yīng)層專注于構(gòu)建云原生平臺和應(yīng)用程序的基礎(chǔ),其中的工具涉及基礎(chǔ)設(shè)施供應(yīng)、容器注冊表以及安全性。本文是詳細(xì)介紹了云原生全景圖的最底層。在下一篇文章中,我們將重點(diǎn)介紹運(yùn)行時層,探索云原生存儲、容器運(yùn)行時和網(wǎng)絡(luò)的相關(guān)內(nèi)容。
原文鏈接:https://thenewstack.io/the-cloud-native-landscape-the-provisioning-layer-explained/
更多閱讀推薦
都在說云原生,它的技術(shù)圖譜你真的了解嗎?
SRE 是如何保障穩(wěn)定性的
如何寫出讓 CPU 跑得更快的代碼?
Serverless 在 SaaS 領(lǐng)域的最佳實(shí)踐
云原生人物志|Pulsar翟佳:社區(qū)的信任最重要
一目了然的 Docker 環(huán)境配置指南
總結(jié)
以上是生活随笔為你收集整理的俯瞰云原生,这便是供应层的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乱中有变,云原生从“大爆发”说起 | C
- 下一篇: 抢先看!Kubernetes v1.21