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