argocd是一種更優雅的持續發布k8s服務的一種產品。
argocd是cncf畢業專案,前途不可估量。
前情介紹:
gitops哲學理念
gitops可謂乙個操作模型,提供了一組最佳實踐,對於容器集群和應用的統一部署,管理和監控。所有的變更都應該落地到git倉庫,所有的執行狀態與git倉庫配置一致。
比如你的yaml配置在git repo裡面,但是k8s裡面執行的實際情況,如果有不一致如何發現?
多個devops、sre如何協同工作?
所以gitops的核心思想:
「將應用系統的宣告性基礎架構和應用程式存放在git的版本控制庫中」
安全的雲原生ci/cd管道模型
更快的平均部署時間和平均恢復時間
穩定且可重現的回滾(例如,根據git恢復/回滾/ fork)
與監控和視覺化工具相結合,對已經部署的應用進行全方位的監控
target state:應用程式的期望狀態,由git儲存庫中的檔案表示。
live state:該應用程式的實時狀態。部署了哪些pod等。
sync status:實時狀態是否與目標狀態匹配。部署的應用程式是否與git所說的相同?
sync:使應用程式移至其目標狀態的過程。例如。通過將更改應用於kubernetes集群。
refresh:將git中的最新**與實時狀態進行比較。找出有什麼不同。
health:應用程式的執行狀況是否正常執行?它可以滿足請求嗎?
tool:從檔案目錄建立清單的工具。例如。kustomize或ksonnet。請參閱應用程式源型別。
通過argocd管理ui進行發布服務
kubectl port-forward svc/argocd-server 1800:80 -n argocd
就可以通過進行訪問argocd-ui
使用者名稱admin密碼是argocd-server的pod名稱
如何獲取argocd-server的pod名稱就不需要我說了吧:-)
手工部署好後的乙個服務狀態
檢視服務部署詳情
後面的就只需持續發布更新我們的gitops repo就可以實現gitops了!!!
如何在cicd中無縫整合呢,先拋一段**
#makefile
build:
$你的編譯流程
docker-build: build
docker build -t $img:$(git_version) .
push: docker-build
docker push $img:$(git_version)
gitops:
kustomize edit set $img:$(git_version)
git pull && git commit -am "注釋" && git push
#push完成後,如果你在argo上設定的是自動更新,就會自動發布,如果設定的手功更新就手工操作
k8s灰度更新 k8s實現灰度發布
灰度發布在實際生產部署中是經常被使用的方式,常規的方法是手動從前端lb 負載均衡 上將後端伺服器摘掉,然後,停服務,最後上傳 完成軟連線更新。在使用ci cd工具時,這個過程變得自動化了,我們只需要通過jenkins這個功能強大的開源持續整合和部署工具,就可以聯合gitlab 或 gogs 來實現自...
K8S中的資源
k8s中所有的內容都抽象為資源,資源例項化之後,叫做物件 pod replicaset deployment,statefulset,daemonset,job,cronjob replicationcontroller 在v.11版本被廢棄 service,ingress.volume 儲存卷 c...
k8s中汙點設定
kubectl taint 汙點 taint 的組成 使用 kubectl taint 命令可以給某個 node 節點設定汙點,node 被設定上汙點之後就和 pod 之間存在了一種相 斥的關係,可以讓 node 拒絕 pod 的排程執行,甚至將 node 已經存在的 pod 驅逐出去 每個汙點的組...