k8s自動化編排工作流
如何在每次推送時自動化Kubernetes版本?
Kubernetes是用于部署,擴展和運行應用程序的基于容器的平臺。Buddy使您可以通過一系列專用的K8s動作使Kubernetes交付工作流程自動化。
每次更改應用程序代碼或Kubernetes配置時,都有兩個選項來更新集群:kubectl apply或kubectl set image。
在這種情況下,您的工作流程通常如下所示:
編輯代碼或配置.YML
將其推送到您的Git存儲庫
構建一個新的Docker映像
推送Docker映像
登錄到您的K8s集群
運行kubectl apply或kubectl set image
使用Buddy,您可以通過簡單地按一下Git來避免大多數這些步驟!:)
本指南中使用的操作:
構建Docker映像
推送Docker映像
運行Kubernetes作業
設置Kubernetes映像
應用Kubernetes部署
如何在每次推送時自動化Kubernetes版本
Buddy是一個持續交付工具,可用于自動執行整個K8s發布工作流程,包括:
管理K8s部署的配置更改
部署代碼更改
管理Dockerfile更新
構建Docker映像并將其推送到Docker注冊表
在您的K8s集群上應用新映像
如果您經常使用kubectl apply或kubectl set image,這是給您的!
配置交付管道
添加新管道,將觸發模式設置為每次按下,然后選擇將觸發管道的分支
添加構建Docker映像操作。將選項卡切換到選項,然后從Docker注冊表下的下拉列表中選擇Docker Hub 。選擇Dockerfile路徑,Docker存儲庫以及您要推送的映像的名稱。
根據您的方案,添加“設置K8s映像”或“應用K8s部署”操作
您可以將標簽的修訂版本號與環境變量一起使用。
方案1:如果您使用kubectl設置圖像,請執行“設置K8s圖像”操作:
選擇應更換的容器以及要使用的圖像。確保輸入上面步驟2中的圖像名稱和標簽。
Buddy將關閉正在運行的節點,并使用新的映像版本將它們重新打開。
如果您使用的標記在每次執行時都保持不變(例如branchName),但與“最新”標記不同,請確保將提取策略設置為“始終”。了解有關更新圖像的更多信息。
方案2:如果您使用kubectl apply,請執行Apply K8s Deployment操作:
隨著YAML配置或應用程序代碼中的每一次更改,Buddy將應用部署,并且Kubernetes將開始將容器轉換為所需狀態。
該操作將等待部署狀態,并檢查其部署狀態。如果發生任何錯誤,則管道將以“失敗”的形式停止。
如何自動運行Kubernetes Pod或作業
如果您經常在容器中運行任務,例如:
新版本部署期間的數據庫遷移
備份
批處理作業,例如 為新版本的應用程序創建目錄結構
您可以使用廣告連播或工作。第一種啟動帶有任務的單個吊艙;第二種啟動任務。第二個將啟動一系列Pod,直到其中指定數量的Pod以成功狀態結束。
用于運行Kubernetes Pod或作業的管道配置
假設您在K8s集群上有一個應用程序,并且存儲庫包含以下內容:
您的應用程序的源代碼
Dockerfile,其中包含有關創建應用程序映像的說明
數據庫遷移腳本
Dockerfile,其中包含有關創建映像的說明,該映像將在部署期間運行遷移(數據庫遷移運行程序)
在這種情況下,您可以配置管道,該管道將:
A.構建應用程序并遷移圖像(第一個動作)
B.將它們推送到Docker Hub(第二步)
C.使用先前構建的映像觸發數據庫遷移(第三步)。您可以使用YAML文件定義映像,命令和部署:
推送后,管道將自動生成映像并將其推送到存儲庫并運行遷移腳本。多么酷???
作業動作將等待,直到命令執行完畢。如果退出狀態不同于0,則該操作將被標記為“失敗”
D.最后一個動作是使用“應用K8s部署”或“設置K8s映像”來更新K8s應用程序中的映像。添加動作后,整個管道將如下所示:
一切就緒后,再次推動,觀察Buddy自動執行整個工作流程。