一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探討使用YAML文件定義Kubernetes應(yīng)用程序

馬哥Linux運(yùn)維 ? 來(lái)源:CSDN ? 2023-04-20 10:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Kubernetes已經(jīng)占據(jù)如何管理集容器化應(yīng)用程序的核心位置。因此,存在許多定義Kubernetes應(yīng)用程序的約定文件格式,包括YAML、JSON、INI等。 這使得我們需要考慮應(yīng)用程序的最佳策略是什么。此外,我們還必須考慮如何根據(jù)所選擇的文件結(jié)構(gòu)(特別是安全性)路徑來(lái)驗(yàn)證應(yīng)用程序配置。 本文,我們將探討使用YAML文件定義Kubernetes應(yīng)用程序,以及可以采取的各種步驟來(lái)有效地驗(yàn)證這些配置定義。

Yaml定義K8s配置

與JSON和INI相比,YAML更加緊湊和可讀。例如,如果我們要定義一個(gè)可以在端口80上可達(dá)的pod,那么YAML、JSON和INI中的配置將如下表所示。

17ad738c-df08-11ed-bfe3-dac502259ad0.png

很明顯,YAML簡(jiǎn)化了我們定義Kubernetes應(yīng)用程序的方式,特別是考慮到一個(gè)普通應(yīng)用程序可能涉及幾十個(gè)配置文件。此外,YAML的緊湊特性允許您將對(duì)象分組在一起,從而減少所需的文件數(shù)量。 然而,在定義Kubernetes配置文件時(shí)存在重大挑戰(zhàn),特別是在嵌入manifest文件之間的約束和關(guān)系時(shí)。

例如,我們?nèi)绾未_保按照最佳實(shí)踐配置內(nèi)存限制? 在滿足邊界情況時(shí),缺乏驗(yàn)證不僅會(huì)導(dǎo)致應(yīng)用程序出現(xiàn)意外行為,而且還會(huì)暴露出主要的安全漏洞。因此,我們有必要考慮基于yaml配置文件的驗(yàn)證策略,這就是我們將在下面幾節(jié)中深入研究的內(nèi)容。 驗(yàn)證內(nèi)容 應(yīng)該對(duì)YAML文件執(zhí)行三個(gè)級(jí)別的驗(yàn)證。這些級(jí)別確保根據(jù)YAML文件的實(shí)際有效性執(zhí)行驗(yàn)證,直到是否滿足安全實(shí)踐。

第一級(jí)別是結(jié)構(gòu)驗(yàn)證,這是在Kubernetes配置文件上執(zhí)行的基礎(chǔ)級(jí)別驗(yàn)證。它只需要驗(yàn)證YAML文件,以確保沒(méi)有語(yǔ)法錯(cuò)誤。這一點(diǎn)可以在編寫(xiě)配置文件時(shí)由IDE進(jìn)行驗(yàn)證。

第二層是語(yǔ)義驗(yàn)證。這確保YAML文件的內(nèi)容轉(zhuǎn)換為所需的Kubernetes資源,從而驗(yàn)證Kubernetes應(yīng)用程序本身。

最后,第三層也是最深層的驗(yàn)證是安全驗(yàn)證,以確保所定義的Kubernetes應(yīng)用程序不存在任何漏洞。我們可能已經(jīng)成功地編寫(xiě)了YAML配置,也成功地實(shí)現(xiàn)了所需的Kubernetes資源和連接,但這并不能確保我們的Kubernetes應(yīng)用程序是很安全的,并遵循最佳實(shí)踐。

最后兩個(gè)驗(yàn)證都是Kubernetes配置驗(yàn)證,而且不僅僅是在YAML格式驗(yàn)證方面。因?yàn)楹蛻?yīng)用程序相關(guān),需要特殊驗(yàn)證。執(zhí)行這種驗(yàn)證需要Kubernetes領(lǐng)域的深入和專業(yè)知識(shí),我們將簡(jiǎn)要介紹如何使用Kubernetes領(lǐng)域?qū)<议_(kāi)發(fā)的工具輕松處理它們。

例如,鎖定hostPath掛載權(quán)限可以確保具有可寫(xiě)hostPath卷的集群中的容器不會(huì)被攻擊者訪問(wèn),因?yàn)樗麄兛赡軙?huì)獲得底層主機(jī)上的持久性。這不符合安全最佳實(shí)踐,為了避免這個(gè)問(wèn)題,我們應(yīng)該始終確保hostPath屬性下的readOnly部分設(shè)置為true。 另一個(gè)例子是只在必要時(shí)才授予pods 主機(jī)網(wǎng)絡(luò)訪問(wèn)權(quán)。所有有權(quán)限的pod應(yīng)該被列入白名單。對(duì)主機(jī)網(wǎng)絡(luò)的不必要訪問(wèn)增加了潛在的攻擊范圍。

因此,從上面的兩個(gè)例子可以看出,即使我們的配置文件通過(guò)了結(jié)構(gòu)和語(yǔ)義驗(yàn)證,導(dǎo)致我們的Kubernetes資源被成功編排,安全和功能漏洞可能仍然存在。因此,我們必須考慮如何最好地捕獲這些漏洞,然后在生產(chǎn)環(huán)境中提醒存在對(duì)后果。安全驗(yàn)證是實(shí)現(xiàn)此目的的方法。

校驗(yàn)Yaml的最佳實(shí)踐

考慮到結(jié)構(gòu)驗(yàn)證相當(dāng)簡(jiǎn)單,通常編程使用的IDE就集成了該功能。Kubernetes語(yǔ)義和安全驗(yàn)證需要特殊處理,特別是在策略和工具方面。 我們考慮一些最佳實(shí)踐和策略,以實(shí)現(xiàn)YAML文件的全面驗(yàn)證。 您可以執(zhí)行一個(gè)試運(yùn)行(kubectl apply -f - -dry-run='server ")來(lái)驗(yàn)證語(yǔ)義結(jié)構(gòu),但這仍然是一個(gè)額外的步驟,可能會(huì)降低總體速度。

但是,試運(yùn)行要求您能夠訪問(wèn)Kubernetes集群。 這種方法的另一種選擇是Kubeval,這是一個(gè)實(shí)用工具,可以用來(lái)驗(yàn)證配置文件語(yǔ)義,以確保它們滿足Kubernetes的對(duì)象定義需求。它可以是CI過(guò)程的一部分,并在本地執(zhí)行掃描,從而確保在投入生產(chǎn)環(huán)境之前從語(yǔ)義上驗(yàn)證配置文件。 還可以使用kuscape在CI中實(shí)現(xiàn)安全驗(yàn)證。這是一個(gè)開(kāi)源工具,確保您的Kubernetes應(yīng)用程序定義遵循多種安全框架,如NSA-CISA或MITRE ATT&CK。通過(guò)使用kuscape CLI,您可以掃描所有YAML文件的安全漏洞,甚至獲得風(fēng)險(xiǎn)評(píng)分和風(fēng)險(xiǎn)趨勢(shì)。它充當(dāng)YAML驗(yàn)證器,其主要價(jià)值是安全驗(yàn)證。

從DevOps到DevSecOps

你可以運(yùn)行CI流水線中已經(jīng)討論過(guò)的工具的組合,以實(shí)現(xiàn)結(jié)構(gòu)、語(yǔ)義和安全驗(yàn)證。然而,僅僅利用這些工具及其預(yù)定義的檢查是不夠的。 我們從DevOps中學(xué)到的一件事是,總是有一個(gè)可以采用的改進(jìn)循環(huán)。這就是為什么隨著應(yīng)用程序的發(fā)展和安全性需求的變化,你應(yīng)該不斷地檢查安全性控制。 新的安全控件應(yīng)該合并到安全驗(yàn)證步驟中。kuscape是AMRO開(kāi)發(fā)的開(kāi)源平臺(tái),它允許你定義自己的控件框架。盡管開(kāi)箱即用的框架很健壯,但需要根據(jù)業(yè)務(wù)和Kubernetes資源的具體需求形成策略控制。

只有將安全檢驗(yàn)嵌入到構(gòu)建應(yīng)用程序中,才能實(shí)現(xiàn)這種最佳實(shí)踐。多虧了像Kubeval和kuscape這樣的開(kāi)源工具,開(kāi)發(fā)團(tuán)隊(duì)不斷考慮驗(yàn)證,特別是安全驗(yàn)證的障礙已經(jīng)降低了。

總結(jié)

YAML配置文件使得構(gòu)建Kubernetes應(yīng)用程序非常簡(jiǎn)單。然而,YAML在驗(yàn)證方面確實(shí)有其局限性。因此,我們有必要了解所有驗(yàn)證策略,以確保構(gòu)建的Kubernetes應(yīng)用程序是健康和安全的。 在任何IDE中使用YAML測(cè)試驗(yàn)證YAML文件的結(jié)構(gòu)都是相當(dāng)簡(jiǎn)單的,但是驗(yàn)證Kubernetes資源對(duì)象定義的正確性以及圍繞它們的安全措施是很困難的。幸運(yùn)的是,像kuscape這樣的工具彌補(bǔ)了這一差距,在整個(gè)應(yīng)用程序生命周期中不斷考慮安全性。 由于安全性是構(gòu)建容器應(yīng)用程序的主要關(guān)注點(diǎn)之一,這里討論的驗(yàn)證策略是朝著正確方向邁出的一步。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    7397
  • YAML
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    2476

原文標(biāo)題:如何校驗(yàn)K8S Yaml文件

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Kubernetes Helm入門(mén)指南

    Helm 是 Kubernetes 的包管理工具,它允許開(kāi)發(fā)者和系統(tǒng)管理員通過(guò)定義、打包和部署應(yīng)用程序來(lái)簡(jiǎn)化 Kubernetes 應(yīng)用的管理工作。Helm 的出現(xiàn)是為了解決在
    的頭像 發(fā)表于 04-30 13:42 ?2278次閱讀
    <b class='flag-5'>Kubernetes</b> Helm入門(mén)指南

    如何使用Kubernetes實(shí)現(xiàn)零停機(jī)應(yīng)用程序

    費(fèi)力(實(shí)現(xiàn) VRRP 解決方案、使用 monit 之類的應(yīng)用程序監(jiān)控重啟、負(fù)載均衡 haproxy 之類的)!
    的頭像 發(fā)表于 09-01 10:04 ?982次閱讀
    如何使用<b class='flag-5'>Kubernetes</b>實(shí)現(xiàn)零停機(jī)<b class='flag-5'>應(yīng)用程序</b>

    如何將udev規(guī)則和/或netplan config.yaml文件添加到Ubuntu devel rfs?

    ,或者我們是否需要按照“如何在 Flexbuid 中添加新的應(yīng)用程序組件”來(lái)將文件復(fù)制到適當(dāng)?shù)奈恢?,例?/etc/netplan ?
    發(fā)表于 03-24 07:15

    xml和YAML文件的寫(xiě)入_OpenCV3編程入門(mén)

    《OpenCV3編程入門(mén)》書(shū)本配套源代碼:xml和YAML文件的寫(xiě)入
    發(fā)表于 06-06 15:20 ?6次下載

    xml和YAML文件的讀取_源代碼

    《OpenCV3編程入門(mén)》書(shū)本配套源代碼:xml和YAML文件的讀取
    發(fā)表于 06-06 15:20 ?6次下載

    MIDI文件解析應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是MIDI文件解析應(yīng)用程序免費(fèi)下載,解析單音軌的MIDI二進(jìn)制文件,獲取每個(gè)音符。
    發(fā)表于 05-24 08:00 ?9次下載
    MIDI<b class='flag-5'>文件</b>解析<b class='flag-5'>應(yīng)用程序</b>免費(fèi)下載

    首次部署 Kubernetes 應(yīng)用程序需注意的“陷阱”

    根據(jù)我的個(gè)人經(jīng)驗(yàn),大多數(shù)人似乎傾向于通過(guò) Helm 或者手動(dòng)方式將應(yīng)用程序甩給 Kubernetes,之后就坐等每天輕松調(diào)用的美好生活。但在 GumGum 公司的實(shí)踐當(dāng)中,我們體會(huì)到
    的頭像 發(fā)表于 10-08 14:43 ?1968次閱讀
    首次部署 <b class='flag-5'>Kubernetes</b> <b class='flag-5'>應(yīng)用程序</b>需注意的“陷阱”

    新版本Portworx PX-Backup助力Kubernetes有狀態(tài)應(yīng)用程序實(shí)現(xiàn)跨云數(shù)據(jù)保護(hù)與遷移

    最新Portworx調(diào)查顯示數(shù)據(jù)流動(dòng)性和數(shù)據(jù)保護(hù)為Kubernetes有狀態(tài)應(yīng)用程序管理的最大挑戰(zhàn)。
    的頭像 發(fā)表于 11-10 15:06 ?3900次閱讀
    新版本Portworx PX-Backup助力<b class='flag-5'>Kubernetes</b>有狀態(tài)<b class='flag-5'>應(yīng)用程序</b>實(shí)現(xiàn)跨云數(shù)據(jù)保護(hù)與遷移

    KUBERNETES開(kāi)源平臺(tái)的定義、工作原理及重要意義

    Kubernetes 是一個(gè)開(kāi)源平臺(tái),用于自動(dòng)進(jìn)行容器編排,即容器化應(yīng)用程序的部署、擴(kuò)展和管理。
    的頭像 發(fā)表于 06-10 12:00 ?2005次閱讀

    Kubernetes網(wǎng)絡(luò)模型的基礎(chǔ)知識(shí)

    Kubernetes 是為運(yùn)行分布式集群而建立的,分布式系統(tǒng)的本質(zhì)使得網(wǎng)絡(luò)成為 Kubernetes 的核心和必要組成部分,了解 Kubernetes 網(wǎng)絡(luò)模型可以使你能夠正確運(yùn)行、監(jiān)控和排查
    的頭像 發(fā)表于 07-20 09:46 ?1499次閱讀

    邊緣計(jì)算如何重新定義 IIoT 應(yīng)用程序

    邊緣計(jì)算如何重新定義 IIoT 應(yīng)用程序
    的頭像 發(fā)表于 01-03 09:45 ?1003次閱讀
    邊緣計(jì)算如何重新<b class='flag-5'>定義</b> IIoT <b class='flag-5'>應(yīng)用程序</b>

    springboot的核心配置文件有哪些

    的工作量。 Spring Boot的核心配置文件主要有以下幾個(gè): application.properties:Spring Boot應(yīng)用程序的主要配置文件。它使用Java的鍵值對(duì)格式來(lái)定義
    的頭像 發(fā)表于 12-03 15:30 ?1543次閱讀

    使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件

    YAML模板文件(.tpl)來(lái)部署多個(gè)類似的Kubernetes組件,而不需要為每個(gè)組件提供單獨(dú)的模板文件。
    的頭像 發(fā)表于 01-02 11:40 ?1096次閱讀
    使用Jenkins和單個(gè)模板部署多個(gè)<b class='flag-5'>Kubernetes</b>組件

    Kubernetes:構(gòu)建高效的容器化應(yīng)用平臺(tái)

    個(gè)或多個(gè)緊密相關(guān)的容器。使用 YAML 文件定義 Pod,例如: 收起 yaml ? apiVersion: v1kind: Podmetadata: name: nginx - po
    的頭像 發(fā)表于 01-23 15:22 ?321次閱讀

    Kubernetes包管理工具Helm的安裝和使用

    Helm 可以幫助我們管理 Kubernetes 應(yīng)用程序 - Helm Charts 可以定義、安裝和升級(jí)復(fù)雜的 Kubernetes 應(yīng)用程序
    的頭像 發(fā)表于 03-13 16:06 ?925次閱讀