Kubernetes 持續(xù)交付工作流管理軟件 - Devtron
Devtron(https://devtron.ai) 是用 go 編寫的用于 Kubernetes 交付工作流管理的開源軟件。它被設(shè)計(jì)為一個自我服務(wù)平臺,以開發(fā)者友好的方式在 Kubernetes 上運(yùn)維和維護(hù)應(yīng)用程序(AppOps)。
特性
零代碼軟件交付工作流
- 了解 kubernetes、測試、CD、SecOps 等領(lǐng)域的工作流,這樣你就不必寫腳本。
 - 可重復(fù)使用和可組合的組件,使工作流易于構(gòu)建使用。
 
多云部署
- 天然支持部署到多個 kubernetes 集群上
 
輕松實(shí)現(xiàn)開發(fā)-安全-運(yùn)維一體化
- 全局、集群、環(huán)境和應(yīng)用的多層次安全策略,實(shí)現(xiàn)高效的分層策略管理
 - 行為驅(qū)動的安全策略
 - kubernetes 資源定義策略和異常情況
 - 定義事件的策略,以便更快地解決問題
 
應(yīng)用程序調(diào)試面板
- 所有歷史的 kubernetes 事件都集中在一個地方
 - 安全地訪問所有清單,如 secret、configmap
 - cpu、ram、http 狀態(tài)碼和延遲等應(yīng)用指標(biāo),并進(jìn)行新舊對比
 - 使用 grep 和 json 搜索日志
 - 事件和日志之間的智能關(guān)聯(lián)性
 
企業(yè)級的安全性和合規(guī)性
- 細(xì)粒度的訪問控制;控制誰可以編輯配置,誰可以部署
 - 審計(jì)日志,了解誰做了什么,什么時候做的
 - 所有 CI 和 CD 事件的歷史記錄
 - 影響應(yīng)用程序的 Kubernetes 事件
 - 相關(guān)的云事件及其對應(yīng)用程序的影響
 - 先進(jìn)的工作流程策略,如分支環(huán)境,確保構(gòu)建和部署管道的安全
 
了解 Gitops
- 通過 API 和 UI 暴露的 Gitops,使你不必與 Git 客戶端交互
 - 由 postgres 支持的 Gitops 更容易分析
 - 實(shí)施比 git 更精細(xì)的訪問控制
 
業(yè)務(wù)洞察
- 部署指標(biāo)來衡量敏捷過程的成功,它可以捕捉到 mttr、變更失敗率、部署頻率、部署規(guī)模等。
 - 審計(jì)日志以了解失敗的原因
 - 監(jiān)測跨部署的變化,并輕松恢復(fù)
 
安裝
默認(rèn)的安裝配置會使用 MinIO 來存儲構(gòu)建日志和緩存,可以直接使用下面的命令進(jìn)行安裝:
- helm repo add devtron https://helm.devtron.ai
 - helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd \
 - --set secrets.POSTGRESQL_PASSWORD=change-me
 
但是官方的安裝方式會從 GitHub 上面去下載很多腳本進(jìn)行初始化,由于某些原因,可能我們沒辦法正常訪問,這里我已經(jīng)將所有的安裝腳本和代碼同步到了 gitee 上面,不用擔(dān)心安裝不上了。
首先 clone 安裝腳本:
- git clone https://gitee.com/cnych/devtron-installation-script.git
 - cd devtron-installation-script
 
這里我們使用 Helm3 來進(jìn)行安裝,我們只需要安裝 devtron-operator 即可幫我們自動安裝 devtron 了,命令如下所示:
- helm upgrade --install devtron ./charts/devtron --create-namespace --namespace devtroncd
 - WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/ych/.kube/config
 - WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/ych/.kube/config
 - W0624 11:00:57.798698 56125 warnings.go:67] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
 - W0624 11:00:59.829583 56125 warnings.go:67] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
 - NAME: devtron
 - LAST DEPLOYED: Thu Jun 24 11:01:00 2021
 - NAMESPACE: devtroncd
 - STATUS: deployed
 - REVISION: 1
 - TEST SUITE: None
 - NOTES:
 - 1. Run the following command to get the default admin password. Default username is admin
 - kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d
 - 2. You can watch the progress of Devtron microservices installation by the following command
 - kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}'
 
上面的命令會幫我們創(chuàng)建一個用于安裝 devtron 的 Pod,該 Pod 會去讀取我們的 installaction-script 腳本進(jìn)行初始化安裝,這個安裝過程需要花一點(diǎn)時間,不過需要注意的是需要提供一個默認(rèn)的 StorageClass,否則 MinIO 對應(yīng)的 PVC 沒辦法綁定,也就安裝不成功了,我這里是在代碼倉庫中明確指定的一個名為 nfs-storage 的 StorageClass,正常安裝后會產(chǎn)生很多 Pod:
devtron pods
為了訪問方便我這里還創(chuàng)建了一個 IngressRoute 對象用來綁定 Dashboard:
- # devtron-ingressroute.yaml
 - apiVersion: traefik.containo.us/v1alpha1
 - kind: IngressRoute
 - metadata:
 - name: devtron
 - namespace: devtroncd
 - spec:
 - entryPoints:
 - - web
 - routes:
 - - kind: Rule
 - match: Host(`devtron.k8s.local`)
 - services:
 - - name: devtron-service
 - port: 80
 
創(chuàng)建完成后我們就可以通過域名(提前做好解析)就可以訪問 devtron 了。
login devtron
登錄的時候使用的默認(rèn)用戶名為 admin,密碼則可以使用上面安裝 Helm Charts 的時候的提示命令獲取:
- kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d
 
登錄后就可以進(jìn)入到 Dashboard 的主頁了:
進(jìn)入 Dashboard 后我們還需要做一些配置才能使用,比如添加 Docker 鏡像倉庫、配置 gitops 等。具體使用方法可以參考官方文檔說明 https://docs.devtron.ai,后續(xù)我們再提供一個詳細(xì)的使用文檔。
倉庫地址:https://github.com/devtron-labs/devtron



















 
 
 


 
 
 
 