自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DevOps/SRE 必懂概念:不可變基礎(chǔ)設(shè)施

開(kāi)發(fā) 架構(gòu)
在IT界,我們?cè)谲浖こ毯虳evOps中都有可變性和不可變性的概念。在軟件工程中,這一概念被應(yīng)用于面向?qū)ο蟮木幊?,而在DevOps中,它被應(yīng)用于基礎(chǔ)設(shè)施自動(dòng)化。在本指南中,我們將從DevOps的角度重點(diǎn)討論不可變的基礎(chǔ)設(shè)施。

如果你正在學(xué)習(xí)或剛開(kāi)始接觸DevOps和基礎(chǔ)設(shè)施自動(dòng)化,這篇文章將幫助你詳細(xì)了解不可變基礎(chǔ)設(shè)施(Immutable infrastructure)模型。

在進(jìn)入技術(shù)解釋之前,首先,你應(yīng)該對(duì)可變和不可變這兩個(gè)詞的字面意思有一個(gè)清晰的認(rèn)識(shí)。

  • 可變的(Mutable): 可以被改變的東西。意味著你可以在它被創(chuàng)建后繼續(xù)對(duì)它進(jìn)行修改。
  • 不變的(Immutable): 不能改變的東西。一旦它被創(chuàng)建,你就不能改變其中的任何東西。

現(xiàn)在讓我們看一個(gè)真實(shí)世界的例子,即一所房子。在一所房子里,有一些你可以改變的對(duì)象(可變的),也有一些必須被替換的對(duì)象(不可變的),如果它們發(fā)生了什么變化。例如,你可以給一扇門(mén)涂上不同的顏色,更換門(mén)把手,給它一個(gè)不同的外觀。在這里門(mén)是一個(gè)可變的對(duì)象。同時(shí),一個(gè)洗臉盆是一個(gè)不可變的對(duì)象。如果你想改變臉盆的顏色,你需要用一個(gè)新的臉盆來(lái)替換它。這一點(diǎn)也適用于地磚。

在IT界,我們?cè)谲浖こ毯虳evOps中都有可變性和不可變性的概念。在軟件工程中,這一概念被應(yīng)用于面向?qū)ο蟮木幊蹋贒evOps中,它被應(yīng)用于基礎(chǔ)設(shè)施自動(dòng)化。在本指南中,我們將從DevOps的角度重點(diǎn)討論不可變的基礎(chǔ)設(shè)施。

什么是不可變的基礎(chǔ)設(shè)施?

要理解不可變的基礎(chǔ)設(shè)施,首先,你應(yīng)該知道服務(wù)器的生命周期。

下面是一個(gè)帶有應(yīng)用程序的服務(wù)器的簡(jiǎn)略的生命周期(僅供參考,各組織的流程有所不同)。

  1. 部署一個(gè)服務(wù)器。
  2. SSH進(jìn)入服務(wù)器。
  3. 安裝所需的工具。
  4. 配置安全代理、防火墻和實(shí)用程序以保證安全。(安全加固)
  5. 安裝和配置所需的應(yīng)用程序。
  6. 修改應(yīng)用程序和服務(wù)器配置,以提高應(yīng)用程序的性能。
  7. 使服務(wù)器用于生產(chǎn)工作。
  8. 每個(gè)月登錄服務(wù)器,為服務(wù)器打上安全補(bǔ)?。ǚ?wù)器更新)。
  9. 在應(yīng)用程序可用時(shí)進(jìn)行升級(jí)。

正如你所看到的,上面提到的步驟是一個(gè)可變的模型。這是因?yàn)槲覀冋诟鶕?jù)要求對(duì)服務(wù)器進(jìn)行修改。因此,當(dāng)你使用Ansible、Puppet或Chef等配置管理工具來(lái)管理服務(wù)器時(shí),你遵循的是可變模式。

「不可變」,就像它的字面意思一樣,不可變的基礎(chǔ)設(shè)施是一個(gè)概念,在你部署服務(wù)器之后,你不會(huì)對(duì)它做任何改變。意思是說(shuō),服務(wù)器在部署的時(shí)候已經(jīng)預(yù)先配置好了配置、安裝好了工具和應(yīng)用程序。服務(wù)器出現(xiàn)的那一刻,應(yīng)用程序就開(kāi)始運(yùn)行。

如果您想進(jìn)行任何更改,則應(yīng)銷毀現(xiàn)有服務(wù)并用新服務(wù)替換。更改可能是打補(bǔ)丁、應(yīng)用程序升級(jí)、服務(wù)器配置更改等。

圖片圖片

你可以為大多數(shù)現(xiàn)代應(yīng)用遵循不可變的基礎(chǔ)設(shè)施模型,包括數(shù)據(jù)庫(kù)集群。

例如,如果你有應(yīng)用程序在自動(dòng)縮放組中運(yùn)行,而你遵循的是不可變的服務(wù)器部署模型。每當(dāng)你想部署新的代碼時(shí),你需要銷毀現(xiàn)有的虛擬機(jī),這樣由自動(dòng)縮放啟動(dòng)的新虛擬機(jī)就會(huì)下載最新的代碼。另一種方法是,你需要用帶有代碼的最新鏡像來(lái)改變啟動(dòng)模板。

在一個(gè)不可變的模型中,在配置方面應(yīng)遵循標(biāo)準(zhǔn)的最佳實(shí)踐。

例如,使用配置存儲(chǔ)或服務(wù)發(fā)現(xiàn)工具,將經(jīng)常改變的配置外部化。一個(gè)典型的例子是Nginx的upstream配置。

這樣一來(lái),你就不必為小的變化和配置而重新生成服務(wù)器。

如果你知道容器,它是不可變基礎(chǔ)設(shè)施的最好例子。除了外部化的配置,對(duì)容器的任何改變都會(huì)導(dǎo)致重建。

用于CI/CD的不可變的基礎(chǔ)設(shè)施模型

那么,不可變的基礎(chǔ)設(shè)施模式如何用在CI/CD過(guò)程?

當(dāng)你在虛擬機(jī)環(huán)境的CI管道中遵循不可變的基礎(chǔ)設(shè)施模式時(shí),可部署的工件將是一個(gè)虛擬機(jī)鏡像或一個(gè)docker鏡像。

例如,一旦CI完成,利用Docker或packer等工具,你可以把程序代碼塞到容器或虛擬機(jī)鏡像(AWS AMI)中,并使用它在相關(guān)環(huán)境中進(jìn)行部署。

當(dāng)涉及到部署時(shí),你可以遵循藍(lán)綠部署或金絲雀部署。讓我們來(lái)看看這兩種方法。

  • 藍(lán)綠模式: 在這種模式下,使用最新的應(yīng)用程序鏡像,你將一組新的服務(wù)器(藍(lán)色)與生產(chǎn)服務(wù)器(綠色)一起部署,但它不會(huì)提供流量。當(dāng)藍(lán)色服務(wù)器被驗(yàn)證OK之后,流量將被重定向到新的(藍(lán)色)服務(wù)器組,舊的(綠色)服務(wù)器將被銷毀。
  • 金絲雀模型: 在這個(gè)模型中,不是將全部流量導(dǎo)到新的服務(wù)器集上,而是只將流量的一個(gè)子集導(dǎo)到新的服務(wù)器上。流量切換是根據(jù)團(tuán)隊(duì)制定的時(shí)間節(jié)奏逐漸發(fā)生的。一旦流量完全切換到新的服務(wù)器集,舊的服務(wù)器就會(huì)被刪除。

鏡像生命周期管理和補(bǔ)丁

在不可改變的基礎(chǔ)設(shè)施模型中,虛擬機(jī)或容器鏡像的創(chuàng)建和修補(bǔ)起到了關(guān)鍵作用。你需要利用CI/CD工具,制定良好的鏡像生命周期管理。

在云和容器環(huán)境中,首先我們需要一個(gè)基礎(chǔ)鏡像。之后基于這個(gè)基礎(chǔ)鏡像創(chuàng)建應(yīng)用鏡像。在實(shí)際的項(xiàng)目環(huán)境中,這個(gè)過(guò)程會(huì)比較復(fù)雜。

下面我們來(lái)聊一下這一切在實(shí)際項(xiàng)目環(huán)境中是如何發(fā)生的,以及如何根據(jù)公司的安全策略建立應(yīng)用程序鏡像。

因此,這里列出了在安全的項(xiàng)目環(huán)境中遵循的通用鏡像生命周期管理(虛擬機(jī)和容器)步驟。

注意:該列表是為了給你一個(gè)關(guān)于鏡像生命周期管理的總體情況。它在每個(gè)組織中都是不同的。

圖片圖片

  1. 在一個(gè)安全、合規(guī)的環(huán)境中,你不允許使用云提供商提供的基礎(chǔ)鏡像或docker hub等公共容器注冊(cè)處提供的docker基礎(chǔ)鏡像。
  2. 每個(gè)組織都會(huì)用標(biāo)準(zhǔn)的安全工具(各種agent)、DNS/Proxy、LDAP配置等創(chuàng)建虛擬機(jī)/容器基礎(chǔ)鏡像(它根據(jù)每個(gè)組織的安全政策而改變)。通常,這種鏡像是由中央平臺(tái)團(tuán)隊(duì)或安全團(tuán)隊(duì)創(chuàng)建和維護(hù)的。你可以叫它黃金鏡像。
  3. 經(jīng)過(guò)批準(zhǔn)和認(rèn)證的基本鏡像將與組織中的所有團(tuán)隊(duì)共享。它可以是一個(gè)單一的云賬戶或與組織內(nèi)的多個(gè)子賬戶共享。
  4. 然后,每個(gè)團(tuán)隊(duì)可以在批準(zhǔn)的基礎(chǔ)鏡像上創(chuàng)建自己的應(yīng)用鏡像。(這里使用像Docker和Packer這樣的工具)。
  5. 團(tuán)隊(duì)創(chuàng)建的新鏡像將被測(cè)試并部署到生產(chǎn)中。
  6. 現(xiàn)在,當(dāng)基礎(chǔ)鏡像得到新的更新或補(bǔ)丁時(shí),平臺(tái)或企業(yè)安全團(tuán)隊(duì)會(huì)發(fā)布新版本的基礎(chǔ)鏡像并通知所有項(xiàng)目團(tuán)隊(duì)。
  7. 每個(gè)組織都有一個(gè)打補(bǔ)丁的生命周期。意思是說(shuō),安全團(tuán)隊(duì)對(duì)VMS的更新和補(bǔ)丁的應(yīng)用有一定的準(zhǔn)則。例如,它可能是一個(gè)月或三個(gè)月一次。
  8. 對(duì)于虛擬機(jī),補(bǔ)丁可以是 “就地” 的,也就是對(duì)現(xiàn)有實(shí)例進(jìn)行補(bǔ)丁,也可以是不可更改的,也就是用新的鏡像替換現(xiàn)有的鏡像。容器在本質(zhì)上是不可變的。
  9. 基于補(bǔ)丁的生命周期,每個(gè)團(tuán)隊(duì)都會(huì)用新的基礎(chǔ)鏡像更新現(xiàn)有的應(yīng)用鏡像,并將其部署到生產(chǎn)中,而不管應(yīng)用的代碼是否有變化。這同時(shí)適用于虛擬機(jī)和容器。

結(jié)論

我們已經(jīng)看了不可變的基礎(chǔ)設(shè)施的關(guān)鍵概念。

作為一名DevOps工程師,你應(yīng)該在構(gòu)建和部署不可變鏡像時(shí)遵循所有標(biāo)準(zhǔn)的最佳實(shí)踐,以減少攻擊面。

如果你正在使用容器或容器編排工具(如Kubernetes),你已經(jīng)在遵循應(yīng)用程序部署的不可變模式。

原文:https://devopscube.com/immutable-infrastructure/ 

譯者:秦曉輝

責(zé)任編輯:武曉燕 來(lái)源: SRETalk
相關(guān)推薦

2022-06-28 09:10:32

K8S容器鏡像滾動(dòng)升級(jí)

2023-02-18 13:47:04

CoreOS容器操作系統(tǒng)云原生

2023-06-16 15:53:55

DevOps基礎(chǔ)設(shè)施

2022-07-05 09:31:46

基礎(chǔ)設(shè)施容器Docker

2020-12-25 07:28:13

GitOpsDevOps云基礎(chǔ)架構(gòu)

2022-02-10 11:54:34

即時(shí)基礎(chǔ)設(shè)施基礎(chǔ)設(shè)施數(shù)字化轉(zhuǎn)型

2022-04-23 17:49:05

區(qū)塊鏈元宇宙MetaCon

2009-12-18 17:14:25

惠普基礎(chǔ)架構(gòu)

2009-12-22 13:59:59

惠普基礎(chǔ)設(shè)施運(yùn)營(yíng)

2023-07-17 18:43:26

測(cè)試基礎(chǔ)設(shè)施開(kāi)發(fā)

2018-12-05 09:00:46

DevOps持續(xù)交付持續(xù)集成

2018-04-04 08:47:16

數(shù)據(jù)中心基礎(chǔ)設(shè)施

2020-04-09 10:57:12

超融合基礎(chǔ)設(shè)施服務(wù)器超融合

2017-09-16 17:28:55

基礎(chǔ)設(shè)施代碼持續(xù)交付

2023-08-04 16:32:18

2021-05-08 13:13:55

智能設(shè)施漏洞攻擊

2020-02-24 11:08:27

云計(jì)算網(wǎng)絡(luò)攻擊數(shù)據(jù)

2020-04-28 10:21:58

基礎(chǔ)設(shè)施硬件遠(yuǎn)程工作

2015-12-07 09:39:53

光纖數(shù)據(jù)中心

2017-06-09 15:25:23

IT設(shè)施數(shù)據(jù)中心融合
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)