名詞:
服務發現:
用來確保服務的位置無關性,通過服務名來查詢獲得服務的實際地址。
名字解析:
用來確保服務器位置無關性,通過機器名查詢獲得機器的實際IP地址。
場景一:
特點:
應用少,流量輕,數台機器,DevOps分離,手動基礎設施管理,手動應用程序部署,監控非必要,面向機器,基於IP的配置,服務發現非必要,名字解析非必要。
流程:
DevOps分離。
方法:
各個環境的基礎設施(網路,服務器,IP地址,操作系統,依賴包)事先由Ops人員搭建,完成后將各個環境最終的機器配置信息告知Dev。機器配置信息包括機器名,用途,規格(OS,CPU,內存,硬盤),IP地址,端口,預裝軟件信息等。
Dev開發完一個迭代后,將軟件打包后交由Ops人員部署到QA環境,一旦QA環境測試通過再由Ops人員將軟件包部署到PROD環境。Dev要根據Ops人員提供的各個環境的機器配置信息生成應用在各個環境的具體配置文件,並隨軟件包一起提交給Ops人員。
工具:
手動部署
場景二:
特點:
應用少,流量輕,數台機器,DevOps合作,手動基礎設施管理,自動應用程序部署,監控非必要,面向機器,基於IP的配置,服務發現非必要,名字解析非必要。
流程:
DevOps合作。
方法:
各個環境的基礎設施(網路,服務器,IP地址,操作系統)事先由Ops人員搭建,完成后將各個環境最終的機器配置信息告知Dev。機器配置信息包括機器名,用途,規格(OS,CPU,內存,硬盤),IP地址,端口,預裝軟件信息等。
Dev提交一個Commit到Git Repo后觸發CI/CD執行Pipeline的第一個Stage Build,Build Stage從GitRepo下載代碼(包含部署腳本)並編譯,測試,打包,上傳。
打包完成后自動觸發CI/CD執行Pipeline的第二個Stage QA,QA Stage調用部署程序(Ansible)根據部署腳本(Playbook)將軟件包部署到QA環境(Inventory),部署通常包括下載軟件包,根據Inventory生成配置文件,部署程序,啟動服務等。
一旦QA環境測試通過,需手動觸發CI/CD執行Pipeline的下一個Stage Prod,Prod Stage調用部署程序(Ansible)根據部署腳本(Playbook)將軟件包部署到Prod環境(Inventory)。
工具:CI/CD + Ansible
CI/CD- GoCD Pipeline:
Build
QA
Prod
部署腳本- Ansible:
invetories
qa
[web]
......
[db]
......
prod
[web]
......
[db]
......
playbooks
web.yml
db.yml
templates
Conf.j2
場景三:
特點:
應用少,流量輕,數台機器,DevOps合作,自動基礎設施管理,自動應用程序部署,監控非必要,面向機器,基於IP的配置,服務發現非必要,名字解析非必要。
流程:
DevOps合作。
方法:
各個環境的基礎設施(網絡,服務器,IP地址,操作系統)由基礎設施管理程序(Terraform)根據各個環境的基礎設施配置自動配置,完成后自動生成各個環境最終的機器配置信息(Invetory)。
Dev提交一個Commit到Git Repo后觸發CI/CD執行Pipeline的第一個Stage Build,Build Stage從GitRepo下載代碼(包含部署腳本)並編譯,測試,打包,上傳。
打包完成后自動觸發CI/CD執行Pipeline的第二個Stage QA,QA Stage調用基礎設施管理程序(Terraform)根據基礎設施配置自動完成QA環境基礎設施配置並生成QA環境機器配置信息(Inventory)。再由部署程序(Ansible)根據部署腳本(Playbook)將軟件包部署到QA環境(Inventory),部署通常包括下載軟件包,根據Inventory生成配置文件,部署程序,啟動服務等。
一旦QA環境測試通過,需手動觸發CI/CD執行Pipeline的下一個Stage Prod,Prod Stage調用基礎設施管理程序(Terraform)根據基礎設施配置自動完成Prod環境基礎設施配置並生成Prod環境機器配置信息(Inventory)。再由部署程序(Ansible)根據部署腳本(Playbook)將軟件包部署到Prod環境(Inventory)。
工具:CI/CD + Terraform + Ansible
CI/CD- GoCD Pipeline:
Build
QA
Prod
基礎設施配置- Terraform:
input:
qa:
*.tf
*.tf_state
prod:
*.tf
*.tf_state
output: inventories
qa
prod
部署腳本- Ansible:
invetories
qa - created from terraform
prod - created from terraform
playbooks
web.yml
db.yml
templates
Conf.j2
場景四:
特點:
應用多,流量巨,萬台機器,DevOps合作,自動基礎設施管理,自動應用程序管理,監控,面向容器,服務發現,名字解析,配置管理。
流程:
DevOps合作。
方法:
各個環境的基礎設施(網絡,服務器,IP地址,操作系統)由基礎設施管理系統根據需求信息(由高層提供)自動配置。各個服務的用途也由基礎設施管理系統根據需求信息(由高層提供)自動決策。因基礎設施並非事先設定,故應用的配置不能依賴服務和機器的物理地址,需采用服務發現配合名字解析來實現系統的集成和配置。
工具:
自動基礎設施管理系統(面向機器,伸縮,部署,監控)
自動應用程序管理系統(面向容器,伸縮,部署,監控)
服務發現
名字解析
配置管理
