掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
如果你正在學習或剛開始接觸DevOps和基礎設施自動化,這篇文章將幫助你詳細了解不可變基礎設施(Immutable infrastructure)模型。

創(chuàng)新互聯(lián)是一家企業(yè)級云計算解決方案提供商,超15年IDC數(shù)據(jù)中心運營經驗。主營GPU顯卡服務器,站群服務器,西信服務器托管,海外高防服務器,大帶寬服務器,動態(tài)撥號VPS,海外云手機,海外云服務器,海外服務器租用托管等。
在進入技術解釋之前,首先,你應該對可變和不可變這兩個詞的字面意思有一個清晰的認識。
現(xiàn)在讓我們看一個真實世界的例子,即一所房子。在一所房子里,有一些你可以改變的對象(可變的),也有一些必須被替換的對象(不可變的),如果它們發(fā)生了什么變化。例如,你可以給一扇門涂上不同的顏色,更換門把手,給它一個不同的外觀。在這里門是一個可變的對象。同時,一個洗臉盆是一個不可變的對象。如果你想改變臉盆的顏色,你需要用一個新的臉盆來替換它。這一點也適用于地磚。
在IT界,我們在軟件工程和DevOps中都有可變性和不可變性的概念。在軟件工程中,這一概念被應用于面向對象的編程,而在DevOps中,它被應用于基礎設施自動化。在本指南中,我們將從DevOps的角度重點討論不可變的基礎設施。
要理解不可變的基礎設施,首先,你應該知道服務器的生命周期。
下面是一個帶有應用程序的服務器的簡略的生命周期(僅供參考,各組織的流程有所不同)。
正如你所看到的,上面提到的步驟是一個可變的模型。這是因為我們正在根據(jù)要求對服務器進行修改。因此,當你使用Ansible、Puppet或Chef等配置管理工具來管理服務器時,你遵循的是可變模式。
「不可變」,就像它的字面意思一樣,不可變的基礎設施是一個概念,在你部署服務器之后,你不會對它做任何改變。意思是說,服務器在部署的時候已經預先配置好了配置、安裝好了工具和應用程序。服務器出現(xiàn)的那一刻,應用程序就開始運行。
如果您想進行任何更改,則應銷毀現(xiàn)有服務并用新服務替換。更改可能是打補丁、應用程序升級、服務器配置更改等。
圖片
你可以為大多數(shù)現(xiàn)代應用遵循不可變的基礎設施模型,包括數(shù)據(jù)庫集群。
例如,如果你有應用程序在自動縮放組中運行,而你遵循的是不可變的服務器部署模型。每當你想部署新的代碼時,你需要銷毀現(xiàn)有的虛擬機,這樣由自動縮放啟動的新虛擬機就會下載最新的代碼。另一種方法是,你需要用帶有代碼的最新鏡像來改變啟動模板。
在一個不可變的模型中,在配置方面應遵循標準的最佳實踐。
例如,使用配置存儲或服務發(fā)現(xiàn)工具,將經常改變的配置外部化。一個典型的例子是Nginx的upstream配置。
這樣一來,你就不必為小的變化和配置而重新生成服務器。
如果你知道容器,它是不可變基礎設施的最好例子。除了外部化的配置,對容器的任何改變都會導致重建。
那么,不可變的基礎設施模式如何用在CI/CD過程?
當你在虛擬機環(huán)境的CI管道中遵循不可變的基礎設施模式時,可部署的工件將是一個虛擬機鏡像或一個docker鏡像。
例如,一旦CI完成,利用Docker或packer等工具,你可以把程序代碼塞到容器或虛擬機鏡像(AWS AMI)中,并使用它在相關環(huán)境中進行部署。
當涉及到部署時,你可以遵循藍綠部署或金絲雀部署。讓我們來看看這兩種方法。
在不可改變的基礎設施模型中,虛擬機或容器鏡像的創(chuàng)建和修補起到了關鍵作用。你需要利用CI/CD工具,制定良好的鏡像生命周期管理。
在云和容器環(huán)境中,首先我們需要一個基礎鏡像。之后基于這個基礎鏡像創(chuàng)建應用鏡像。在實際的項目環(huán)境中,這個過程會比較復雜。
下面我們來聊一下這一切在實際項目環(huán)境中是如何發(fā)生的,以及如何根據(jù)公司的安全策略建立應用程序鏡像。
因此,這里列出了在安全的項目環(huán)境中遵循的通用鏡像生命周期管理(虛擬機和容器)步驟。
注意:該列表是為了給你一個關于鏡像生命周期管理的總體情況。它在每個組織中都是不同的。
圖片
我們已經看了不可變的基礎設施的關鍵概念。
作為一名DevOps工程師,你應該在構建和部署不可變鏡像時遵循所有標準的最佳實踐,以減少攻擊面。
如果你正在使用容器或容器編排工具(如Kubernetes),你已經在遵循應用程序部署的不可變模式。
原文:https://devopscube.com/immutable-infrastructure/
譯者:秦曉輝

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流