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