成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何優(yōu)雅的使用 GitOps 實(shí)現(xiàn)運(yùn)維自動(dòng)化

運(yùn)維 系統(tǒng)運(yùn)維 自動(dòng)化
GitOps 是一種運(yùn)維框架,它采用了 DevOps 在應(yīng)用程序開發(fā)階段的最佳實(shí)踐(例如版本控制、協(xié)作、合規(guī)性和CI/CD工具),并將其應(yīng)用于基礎(chǔ)設(shè)施自動(dòng)化。

[[435907]]

什么是 GitOps 呢?

  1.  GitOps 是一套使用 Git 來管理基礎(chǔ)架構(gòu)和應(yīng)用配置的實(shí)踐,而 Git 指的是一個(gè)開源版控制系統(tǒng)。GitOps 在運(yùn)行過程中以 Git 為聲明性基礎(chǔ)架構(gòu)和應(yīng)用的單一事實(shí)來源。
  2.  GitOps 使用 Git 拉取請(qǐng)求來自動(dòng)管理基礎(chǔ)架構(gòu)的配置和部署。Git 存儲(chǔ)庫(kù)包含系統(tǒng)的全部狀態(tài),因此系統(tǒng)狀態(tài)的修改痕跡既可查看也可審計(jì)。
  3.  GitOps 圍繞開發(fā)者經(jīng)驗(yàn)而構(gòu)建,可幫助團(tuán)隊(duì)使用與軟件開發(fā)相同的工具和流程來管理基礎(chǔ)架構(gòu)。除了 Git 以外,GitOps 還支持您按照自己的需求選擇工具。

1. GitOps 到底是個(gè)什么呢

GitOps = 基礎(chǔ)設(shè)施即代碼(IaC) + 合并請(qǐng)求(MR) + 持續(xù)集成/持續(xù)交付(CI/CD)

GitOps 是一種運(yùn)維框架,它采用了 DevOps 在應(yīng)用程序開發(fā)階段的最佳實(shí)踐(例如版本控制、協(xié)作、合規(guī)性和CI/CD工具),并將其應(yīng)用于基礎(chǔ)設(shè)施自動(dòng)化。

與 GitOps 相比,傳統(tǒng)的 DevOps 盡管在軟件開發(fā)生命周期已實(shí)現(xiàn)自動(dòng)化,但基礎(chǔ)架構(gòu)大體上仍然是一個(gè)需要專業(yè)團(tuán)隊(duì)進(jìn)行手動(dòng)操作的過程。隨著對(duì)基礎(chǔ)架構(gòu)需求的不斷增長(zhǎng),實(shí)現(xiàn)基礎(chǔ)設(shè)施自動(dòng)化變得越來越重要。現(xiàn)代化的基礎(chǔ)設(shè)施需要彈性機(jī)制(速度和規(guī)模),以便能有效地管理持續(xù)部署所需的云資源。

GitOps體系學(xué)習(xí)和理解

GitOps 用于對(duì)基礎(chǔ)設(shè)施置備的過程進(jìn)行自動(dòng)化,采用以 配置文件 存儲(chǔ)為代碼(基礎(chǔ)設(shè)施即代碼),配置文件在每次部署時(shí)都會(huì)生成相同的基礎(chǔ)設(shè)施環(huán)境,來保證環(huán)境的一致性,完成整個(gè)運(yùn)維流程的自動(dòng)化。

  •  三叉戟 - 基礎(chǔ)設(shè)施即代碼(IaC) - Terraform
    •  GitOps 使用 Git 倉(cāng)庫(kù)作為基礎(chǔ)設(shè)施定義的單一可信來源,將所有基礎(chǔ)設(shè)施以配置文件的方式存儲(chǔ)起來,達(dá)到配置和管理應(yīng)用服務(wù)的問題。
  •  三叉戟 - 合并請(qǐng)求(MR)
    •  GitOps 使用合并請(qǐng)求作為所有基礎(chǔ)設(shè)施更新的變更機(jī)制,合并請(qǐng)求是團(tuán)隊(duì)通過評(píng)審和評(píng)論進(jìn)行協(xié)作的地方,合并會(huì)被提交到您的主干分支并可作為審計(jì)日志。
  •  三叉戟 - 持續(xù)集成/持續(xù)交付(CI/CD)
    •   GitOps 使用具有持續(xù)集成和持續(xù)交付的 Git 工作流來自動(dòng)化執(zhí)行基礎(chǔ)架構(gòu)的更新,在新代碼合并后,CI/CD 流水線將執(zhí)行環(huán)境中的更改,從而避免手動(dòng)配置的錯(cuò)誤等問題。

對(duì)于任何需要協(xié)作的工作,改變都是很棘手的,GitOps 也不例外。GitOps 需要所有參與者遵守紀(jì)律,它是一種采用全新的方式來工作的承諾。對(duì)于團(tuán)隊(duì)來說,把所有的事情都記錄下來至關(guān)重要。

2. GitOps 的核心在于協(xié)助

可以覆蓋應(yīng)用程序從構(gòu)思到代碼再到部署全流程的協(xié)作

從核心上來說,GitOps 指的是將 Git 存儲(chǔ)庫(kù)作為構(gòu)建基礎(chǔ)設(shè)施和部署應(yīng)用程序所有代碼的唯一可信數(shù)據(jù)源,然后將代碼自動(dòng)化部署到不同的云環(huán)境上面(可以借助Terraform完成資源編排)。

每個(gè)人都能夠在同一個(gè)系統(tǒng)中工作,并了解事情的進(jìn)展情況。無論你是在基礎(chǔ)架構(gòu)中還是在應(yīng)用程序開發(fā)中,所有的更改都遵循同樣的流程,即定義工作主體,將其分配給個(gè)人,團(tuán)隊(duì)協(xié)作,然后部署這些代碼,并將 Git 存儲(chǔ)庫(kù)作為唯一可信數(shù)據(jù)源使用。

  •  GitOps 與代碼和協(xié)作都有緊密聯(lián)系
  1.  使用版本控制系統(tǒng)可以確保一切都被記錄且可見,審計(jì)跟蹤使團(tuán)隊(duì)保持合規(guī)性。
  2.  針對(duì)于不同的項(xiàng)目和團(tuán)隊(duì),新建 issue 來描述添加的目標(biāo)和任務(wù)(多云平臺(tái))。
  3.  在 issue 中,記錄列出的任務(wù)列表的執(zhí)行程度和進(jìn)展(通過ME合并請(qǐng)求)。

GitOps體系學(xué)習(xí)和理解

3. GitOps 的使用優(yōu)秀實(shí)踐

良好的運(yùn)維體系擁有一個(gè)無縫鏈接且完美的體驗(yàn),能夠增進(jìn)基礎(chǔ)設(shè)施、運(yùn)營(yíng)和開發(fā)團(tuán)隊(duì)之間的協(xié)作,在提高軟件環(huán)境的穩(wěn)定性、可靠性和安全性的同時(shí),實(shí)現(xiàn)更快速部署,這能夠增強(qiáng)團(tuán)隊(duì)的信心。比如:

GitOps體系學(xué)習(xí)和理解

  •  [1] 版本控制
    •  核心 - 配置文件 - 聲明式系統(tǒng)
    •  Git 倉(cāng)庫(kù)作為所有基礎(chǔ)設(shè)施和應(yīng)用部署代碼的單一事實(shí)來源
    •  通過受保護(hù)分支的獨(dú)特權(quán)限,限制可以部署到生產(chǎn)的用戶和團(tuán)隊(duì)
  •  [2] 代碼審查
    •  團(tuán)隊(duì) - 方便后續(xù)追溯問題原因
    •  提高代碼質(zhì)量,傳播最佳實(shí)踐,防止問題的出現(xiàn)
  •  [3] 持續(xù)集成/持續(xù)交付
    •  部署 - 無縫體驗(yàn) - 與 Terraform 緊密集成
    •  將其與敏捷管理和源代碼管理建立在同一個(gè)應(yīng)用程序中
    •  支持從物理機(jī)、虛擬機(jī)、容器到云原生平臺(tái)的多種基礎(chǔ)環(huán)境的部署

4. GitOps 的大致運(yùn)行流程  

伴隨著 DevOps 在近些年的火爆,圍繞 xOps 產(chǎn)生了很多概念,諸如 DevSecOps,AIOps,MLOps,ChatOps 等等,當(dāng)然還有的主角 GitOps。而GitOps 這個(gè)詞出現(xiàn)于 2017 年,是由 Weaveworks 公司根據(jù)多年云計(jì)算基礎(chǔ)設(shè)施和應(yīng)用程序管理經(jīng)驗(yàn)而提出的一個(gè)概念。

GitOps體系學(xué)習(xí)和理解 - 亂七八糟的xOps造詞運(yùn)動(dòng)

一般情況下,可以使用下面的持續(xù)交付系統(tǒng)(示意圖),來完成云原生應(yīng)用程序的部署與交付。這種 從左到右走到底 的 Push 模式,雖然很容易實(shí)現(xiàn)一鍵式部署,但也存在一些問題。

GitOps體系學(xué)習(xí)和理解 - 完成云原生應(yīng)用程序的部署與交付

簡(jiǎn)而言之,就是沒有辦法保證兩側(cè)的服務(wù)是一致的,這可能會(huì)導(dǎo)致 配置漂移 的發(fā)生和安全合規(guī)問題的出現(xiàn),而使用聲明式是解決這個(gè)問題的關(guān)鍵點(diǎn)。

  •  [1] 很難保證
    •   倉(cāng)庫(kù)里清單文件的內(nèi)容是否和 k8s 集群的實(shí)際情況是否一致
  •  [2] 不夠靈活
    •   鏡像有更新時(shí)不能夠自動(dòng)同步至集群,除非每次從頭到尾走一遍部署流程
  •  [3] 安全合規(guī)
    •   有可能需要操作人員通過 kubectl 命令做一些集群操作

聲明式系統(tǒng)有個(gè)特點(diǎn),其能夠幫我們自動(dòng)完成應(yīng)用程序或基礎(chǔ)設(shè)施系統(tǒng)的描述狀態(tài)和實(shí)際狀態(tài)的自動(dòng)同步,保證兩者能保持一致。比如,應(yīng)用部署清單里面應(yīng)用程序是一個(gè)副本(replicas=1),那么集群側(cè)應(yīng)用程序就會(huì)是一個(gè) pod。

GitOps體系學(xué)習(xí)和理解 - 關(guān)于聲明式的理解以及解題思路

而 GitOps 以聲明式系統(tǒng)為基座,以 Git 為單一可信源,即一切皆代碼,從而我們可以將上述構(gòu)建流程改為下面這樣的 pull 模式。pull 模式的關(guān)鍵就是,單一可信源與 k8s 集群的集成,當(dāng)可信源側(cè)的文件清單發(fā)生變更的時(shí)候,集群側(cè)能夠及時(shí)捕捉到此變更,從而完成變更清單的部署。

  •  這就需要使用的 Git 工具支持與 k8s 打交道的能力。
  •  可以將 Git 工具與 Terraform 集成,來完成云基礎(chǔ)設(shè)施的自動(dòng)化管理。

GitOps體系學(xué)習(xí)和理解 - 關(guān)于聲明式的理解以及解題思路。

GitOps體系學(xué)習(xí)和理解 - 關(guān)于聲明式的理解以及解題思路 

  1. # ------- 0.0 -------  
  2. # GitOps的倉(cāng)庫(kù)代碼結(jié)構(gòu)  
  3. # -------------------  
  4. # 多云環(huán)境  
  5. ➜ tree -a GitOps  
  6. GitOps  
  7. └── gitops  
  8.     ├── .gitlab-ci.yaml             # CI/CD  
  9.     └── environments  
  10.         ├── aliyun  
  11.         │   ├── kubeconfig.yaml     # k8s集群配置  
  12.         │   ├── main.tf             # 基礎(chǔ)設(shè)置配置  
  13.         │   └── yaml  
  14.         │       └── app.yaml        # 集群服務(wù)配置  
  15.         └── k3s  
  16.             └── yaml  
  17.                 ├── app.yaml        # 集群服務(wù)配置  
  18.                 └── kubeconfig.yaml # k8s集群配置 

以 Git 為單一可信源,所有與軟件開發(fā)相關(guān)流程中的代碼(包括基礎(chǔ)設(shè)施代碼、應(yīng)用程序源碼、配置等)都會(huì)存儲(chǔ)在 Git 倉(cāng)庫(kù)中。所有管理過程都是通過合并請(qǐng)求(MR)來完成的,當(dāng)需要對(duì)基礎(chǔ)設(shè)施作某些變更時(shí),只需要修改代碼,并提交 MR,在所有的修改都被審查和批準(zhǔn)后,代碼可以被合并到主分支上。一旦代碼變化被合并,所有的變化將被部署到生產(chǎn)中。

  •  GitOps 的優(yōu)點(diǎn)
    •  快速進(jìn)行變更 - 更新和回滾
    •  人員工作體驗(yàn)的提升 - 部署流程完美
    •  安全性提高 - 倉(cāng)庫(kù)進(jìn)行權(quán)限分配
    •  合規(guī)審計(jì)容易做 - 所見即所得
  •  GitOps 的缺點(diǎn)
    •  協(xié)作文化的建立 - 逐步培養(yǎng)
    •   Git Workflow的建立 - 混合云保證服務(wù)可用
    •   敏感信息的處理 - 敏感信息(與Vault結(jié)合解決) - GitSecOps

5. GitOps 集成 ArgoCD 實(shí)踐

ArgoCD 只是一個(gè)持續(xù)交付工具,但其實(shí)核心功能點(diǎn)!

ArgoCD 是一款開源且主要針對(duì) Kubernetes 來做 GitOps 的持續(xù)交付工具。現(xiàn)在是 CNCF 的孵化項(xiàng)目。其整體架構(gòu)圖如下:

GitOps體系學(xué)習(xí)和理解 - 集成ArgoCD實(shí)踐

ArgoCD 是以 Kubernetes Controller 的形式來實(shí)現(xiàn)的,它會(huì)對(duì)運(yùn)行在 Kubernetes 集群上的應(yīng)用程序進(jìn)行監(jiān)聽,并將實(shí)際運(yùn)行狀態(tài)和期望狀態(tài)(在部署清單文件中指定,且存儲(chǔ)在版本控制系統(tǒng)中)進(jìn)行對(duì)比,當(dāng)兩者狀態(tài)不一致的時(shí)候,則提示 OutOfSync,此時(shí)可以通過自動(dòng)或者手動(dòng)的方式來完成同步操作,以讓兩者狀態(tài)再次保持一致。存儲(chǔ)在 Git 倉(cāng)庫(kù)中的任何變更都會(huì)被自動(dòng)同步至集群側(cè)。

這其實(shí)就是實(shí)現(xiàn) GitOps 的核心原理。所有對(duì)于應(yīng)用程序或者基礎(chǔ)設(shè)施的變更僅僅需對(duì) Git 倉(cāng)庫(kù)做一些 MR 或者 Push 操作即可實(shí)現(xiàn),變更會(huì)自動(dòng)部署。所以,雖然 GitOps 的核心不是 Git,但是卻與 Git 息息相關(guān)。

Git 將作為存儲(chǔ)部署清單文件的版本控制系統(tǒng),與 ArgoCD 做集成,實(shí)現(xiàn) GitOps workflow。整體示意圖如下所示:

  •  一個(gè) Git 實(shí)例
  •  一個(gè) ArgoCD 運(yùn)行實(shí)例

GitOps體系學(xué)習(xí)和理解 - 集成ArgoCD實(shí)踐

  •  [1] 安裝和啟動(dòng) ArgoCD 服務(wù) 
  1. # 安裝ArgoCD服務(wù)(官方)  
  2. # 使用Kustomize來完成對(duì)部署清單文件的編排  
  3. # 同時(shí)用sops來處理敏感信息在Git上的存儲(chǔ)問題  
  4. $ kubectl create namespace argocd  
  5. $ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml  
  6. # 暴露argocd的服務(wù)端口  
  7. $ kubectl -n argocd port-forward pods/argocd-server-6db46c865b-qqnbl 8080:8080  
  8. # 獲取登陸密碼  
  9. $ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d  
  10. RDMpJRKRfsmkcgbP  
  11. # 訪問ArgoCD服務(wù)  
  12. http://localhost:8080  
  13. admin/RDMpJRKRfsmkcgbP 
  •  [2] 介紹 sops 的使用 
  1. # 這sops是一款開源的加密文件的編輯器(以GPG為例演示)  
  2. # 支持YAML、JSON、ENV、INI和BINARY格式,且支持多種加密方式  
  3. # 安裝  
  4. $ brew install gnupg  
  5. $ brew install sops  
  6. # 生成一對(duì)key  
  7. $ gpg --full-generate-key  
  8. # sops和gpg的結(jié)合 - 創(chuàng)建sops配置文件  
  9. # encrypted_regex: 加密規(guī)則;規(guī)定需要對(duì)哪些字段的值進(jìn)行加密  
  10. # gpg: 加密所需要的fingerprint值  
  11. $ cat >> .sops.yaml << EOF  
  12. creation_rules:  
  13.   - encrypted_regex: '^(username|title|)$'  
  14.     pgp: 'ED2A6947C44F9228B39E65B705A11CD02E66FF4B'  
  15. EOF  
  16. # sops和gpg的結(jié)合 - 創(chuàng)建敏感信息的文件  
  17. $ cat >> secret.yaml << EOF  
  18. apiVersion: v1  
  19. data:  
  20.     username: eGlhb21hZ2UK 
  21.     companySmlIdShHaXRMYWIp 
  22. kind: Secret  
  23. metadata:  
  24.     labels:  
  25.         app: demo  
  26.     name: sops-demo  
  27.     namespace: jihu-gitlab  
  28. type: Opaque  
  29. EOF  
  30. # sops和gpg的結(jié)合 - 敏感信息的文件加密  
  31. $ sops -e secret.yaml 
  •  [3] 配置 ArgoCD 的服務(wù)

GitOps體系學(xué)習(xí)和理解 - 配置ArgoCD的服務(wù)

  •  [4] 使用 ArgoCD 的服務(wù) 
  1. # 在ArgoCD的Project下面添加application來讓GitOps飛起來  
  2. # 至此ArgoCD配置完成,且此ArgoCD實(shí)例已經(jīng)在監(jiān)聽配置的Git的倉(cāng)庫(kù)  
  3. # 如果該倉(cāng)庫(kù)的配置文件發(fā)生了變化,則變化會(huì)被自動(dòng)同步至Kubernetes集群側(cè)  
  4. # 查看運(yùn)行的應(yīng)用程序  
  5. $ kubectl -n gitops-argocd get pods  
  6. NAME                      READY   STATUS    RESTARTS   AGE  
  7. deploy-766c4cbbfc-m8dz6   1/1     Running   0          53m  
  8. # 查看此應(yīng)用程序的輸出 - 映射端口出來  
  9. $ kubectl -n gitops-argocd port-forward pods/deploy-766c4cbbfc-m8dz6 9999:9999  
  10. $ curl localhost:9999/jihu  
  11. Hello JiHu GitLab,this is xiaomage,version is v6.1.0  

 

責(zé)任編輯:龐桂玉 來源: 奇妙的Linux世界
相關(guān)推薦

2024-06-11 10:41:14

2018-06-23 07:31:05

2012-10-22 14:54:48

2014-08-04 10:10:35

IT運(yùn)維自動(dòng)化運(yùn)維

2016-05-18 17:35:44

2017-10-13 13:14:35

互聯(lián)網(wǎng)

2018-07-26 13:50:37

IT架構(gòu)運(yùn)維

2014-09-22 11:24:18

運(yùn)維

2013-04-16 14:55:21

自動(dòng)化運(yùn)維Puppet實(shí)戰(zhàn)

2012-11-20 17:22:57

2015-10-08 10:55:23

云服務(wù)自動(dòng)化運(yùn)維 ANSIBLE

2014-05-16 14:31:55

運(yùn)維自動(dòng)化Cobbler

2017-07-25 10:53:27

2015-06-24 10:42:19

云計(jì)算運(yùn)維自動(dòng)化運(yùn)維ANSIBLE

2014-08-04 17:30:57

自動(dòng)化運(yùn)維puppet

2015-08-05 09:53:34

運(yùn)維自動(dòng)化

2010-09-06 09:31:56

開源工具運(yùn)維自動(dòng)化

2012-05-05 21:28:44

2014-07-26 15:11:20

WOT2014自動(dòng)化運(yùn)維

2013-04-11 17:31:28

運(yùn)維自動(dòng)化Cobbler
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美精品一区二区三区在线播放 | 久久综合av | 国产精品久久久久久久久久久久久 | av一二三区 | 午夜网 | 韩国av电影网 | 国产精品久久7777777 | 婷婷免费在线 | 久久香焦 | 亚洲精品久久久久久久久久久 | 日本大香伊一区二区三区 | 亚洲一区二区三区四区av | 成人h电影在线观看 | 中文字幕高清 | 日韩在线视频网址 | 国产91视频免费 | 亚洲人成网站777色婷婷 | 91在线网| 热99精品视频 | 欧美成人高清视频 | 伦理午夜电影免费观看 | 国产成人jvid在线播放 | 美日韩免费视频 | 亚洲色片网站 | 99精品一区 | 9色网站| 精品人伦一区二区三区蜜桃网站 | 在线国产一区 | 国产精品入口麻豆www | 亚洲五码在线 | 精品视频在线观看 | 欧美久久久 | 色综合一区二区三区 | 国产午夜精品一区二区三区 | 成人国产精品视频 | 国产亚洲www | 亚洲综合色视频在线观看 | www.天天操 | 国产资源一区二区三区 | 欧美一极视频 | 欧美在线一二三 |