Kubernetes 持續(xù)交付工作流管理軟件 - Devtron
Devtron(https://devtron.ai) 是用 go 編寫的用于 Kubernetes 交付工作流管理的開源軟件。它被設計為一個自我服務平臺,以開發(fā)者友好的方式在 Kubernetes 上運維和維護應用程序(AppOps)。
特性
零代碼軟件交付工作流
- 了解 kubernetes、測試、CD、SecOps 等領(lǐng)域的工作流,這樣你就不必寫腳本。
- 可重復使用和可組合的組件,使工作流易于構(gòu)建使用。
多云部署
- 天然支持部署到多個 kubernetes 集群上
輕松實現(xiàn)開發(fā)-安全-運維一體化
- 全局、集群、環(huán)境和應用的多層次安全策略,實現(xiàn)高效的分層策略管理
- 行為驅(qū)動的安全策略
- kubernetes 資源定義策略和異常情況
- 定義事件的策略,以便更快地解決問題
應用程序調(diào)試面板
- 所有歷史的 kubernetes 事件都集中在一個地方
- 安全地訪問所有清單,如 secret、configmap
- cpu、ram、http 狀態(tài)碼和延遲等應用指標,并進行新舊對比
- 使用 grep 和 json 搜索日志
- 事件和日志之間的智能關(guān)聯(lián)性
企業(yè)級的安全性和合規(guī)性
- 細粒度的訪問控制;控制誰可以編輯配置,誰可以部署
- 審計日志,了解誰做了什么,什么時候做的
- 所有 CI 和 CD 事件的歷史記錄
- 影響應用程序的 Kubernetes 事件
- 相關(guān)的云事件及其對應用程序的影響
- 先進的工作流程策略,如分支環(huán)境,確保構(gòu)建和部署管道的安全
了解 Gitops
- 通過 API 和 UI 暴露的 Gitops,使你不必與 Git 客戶端交互
- 由 postgres 支持的 Gitops 更容易分析
- 實施比 git 更精細的訪問控制
業(yè)務洞察
- 部署指標來衡量敏捷過程的成功,它可以捕捉到 mttr、變更失敗率、部署頻率、部署規(guī)模等。
- 審計日志以了解失敗的原因
- 監(jiān)測跨部署的變化,并輕松恢復
安裝
默認的安裝配置會使用 MinIO 來存儲構(gòu)建日志和緩存,可以直接使用下面的命令進行安裝:
- 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īng)將所有的安裝腳本和代碼同步到了 gitee 上面,不用擔心安裝不上了。
首先 clone 安裝腳本:
- git clone https://gitee.com/cnych/devtron-installation-script.git
- cd devtron-installation-script
這里我們使用 Helm3 來進行安裝,我們只需要安裝 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 腳本進行初始化安裝,這個安裝過程需要花一點時間,不過需要注意的是需要提供一個默認的 StorageClass,否則 MinIO 對應的 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
登錄的時候使用的默認用戶名為 admin,密碼則可以使用上面安裝 Helm Charts 的時候的提示命令獲取:
- kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d
登錄后就可以進入到 Dashboard 的主頁了:
進入 Dashboard 后我們還需要做一些配置才能使用,比如添加 Docker 鏡像倉庫、配置 gitops 等。具體使用方法可以參考官方文檔說明 https://docs.devtron.ai,后續(xù)我們再提供一個詳細的使用文檔。
倉庫地址:https://github.com/devtron-labs/devtron