成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Nocalhost 與 KubeVela 端云聯調,一鍵完成多集群混合云環境部署

精選
云計算 云原生
使用 KubeVela + Nocalhost,不僅能夠便捷地在開發環境中進行云端的聯調測試,還能在測試完成后一鍵更新部署到生產環境,使整個開發上線過程穩定可靠。

作者 |  霧霧、玉易才(KubeVela、Nocalhost 團隊)

在云原生快速發展的當下,如何讓云的技術賦能業務開發?在上線應用時,如何讓云的開發者在現代化的多集群、混合云環境中便捷地進行應用的開發和調試?在部署過程中,又該如何讓應用部署具備充分的驗證和可靠性?

這些至關重要的問題,都是我們急需解決的。

在本文中,我們將結合 KubeVela 以及 Nocalhost 開源項目,給出一個基于 Kubernetes 和容器生態的端云聯調、一鍵完成多集群混合環境部署的解決方案,來回答上述問題。

當一個新應用需要開發上線時,我們希望本地 IDE 中調試的結果能和云端最終部署的狀態保持一致。這樣一致的姿態,能最大程度上給予我們部署的信心,并且讓我們可以采用類似 GitOps 這種更高效、敏捷的方式迭代應用更新。即:當新代碼被推送至代碼倉庫中后,環境中的應用會自動化地實時更新。同時,基于端云聯調的模式,可以讓這整個過程不僅敏捷高效、同樣更加穩定可靠。

基于 KubeVela 和 Nocalhost,我們可以完成這樣一種部署過程:

如圖:通過 KubeVela 創建應用,將應用部署到測試環境后,暫停部署。使用 Nocalhost 在測試環境中對應用進行云端聯調。調試完畢后,將調試完畢的代碼推送到代碼倉庫,通過 KubeVela 進行 GitOps 部署,在測試環境進行驗證后,再同步更新到生產環境。

在本文中,我們將介紹如何使用 KubeVela 及 Nocalhost 完成上述云端應用開發及上線的全過程。

一、什么是 KubeVela

KubeVela 是一個簡單易用且高度可擴展的應用交付和管理平臺,基于 Kubernetes 與 OAM 技術構建。其核心功能是讓開發人員方便快捷地在 Kubernetes 上定義與交付現代微服務應用,而無需了解任何 Kubernetes 本身相關的細節。

KubeVela 提供了 VelaUX 功能,能夠讓整個應用分發的過程可視化,使應用組裝、分發、交付的流程變得更簡單。在 UX 上,不僅可以便捷地通過頁面及時了解整個交付鏈路狀態,還可以通過配置觸發器,使應用隨著制品倉庫的更新而更新。

而在本文的場景中,KubeVela 提供了以下能力:

1.完整的 GitOps 發布:

  • KubeVela 同時支持了 Pull 模式以及 Push 模式的 GitOps 發布:我們只需要將更新后的代碼推送到代碼倉庫,KubeVela 就能自動基于最新代碼完成部署。在本文中,我們將使用 Push 模式的 GitOps,關于 Pull 模式的 GitOps 支持,可以查看文末文章[1]。

2.強大的工作流能力,實現跨環境(集群)部署、審批以及通知:

  • KubeVela 借助其工作流能力,可以輕松讓應用實現跨環境部署,并且支持用戶在編排工作流的過程中,加入例如人工審批、消息通知等功能,使整個部署過程生產級可用。

3.應用抽象能力,讓開發者都能看懂使用并且自定義基礎設施能力

KubeVela 遵循 OAM 的開放應用模型,提供了一套簡單易用的應用抽象能力,使開發者能夠更加清晰地理解應用的功能,并且可以自定義基礎設施能力。例如,對于一個簡單的應用來說,我們可以將其劃分為組件,運維特征,工作流三大部分。在本文的例子中,我們的組件是一個簡單的業務應用;在運維特征部分,我們為這個組件綁定了一個 Nocalhost 的運維特征,讓這個組件能夠使用 Nocalhost 端云聯調的能力;在工作流部分,通過多環境管理,我們可以先讓這個組件部署在測試環境,部署完成后自動暫停工作流的發布,直至人工驗證審批通過后,再進行生產環境的部署。

二、什么是 Nocalhost

Nocalhost 是一個允許開發者直接在 Kubernetes 集群內開發應用的工具。

Nocalhost 的核心功能是:提供 Nocalhost IDE 插件(包括 VSCode 和 Jetbrains 插件),將遠端的工作負載更改為開發模式。在開發模式下,容器的鏡像將被替換為包含開發工具(例如 JDK、Go、Python 環境等)的開發鏡像。當開發者在本地編寫代碼時,任何修改都會實時被同步到遠端開發容器中,應用程序會立即更新(取決于應用的熱加載機制或重新運行應用),開發容器將繼承原始工作負載所有的聲明式配置(ConfigMap、Secret、Volume、Env 等)。

Nocalhost 還提供:VSCode 和 Jetbrains IDE 一鍵 Debug 和 HotReload;在 IDE 內直接提供開發容器的終端,獲得和本地開發一致的體驗;提供基于 Namespace 隔離的開發空間和 Mesh 開發空間 。此外,Nocalhost 還提供了 Server 端幫助企業管理 Kubernetes 應用、開發者和開發空間,方便企業統一管理各類開發和測試環境。

在使用 Nocalhost 開發 Kubernetes 的應用過程中,免去了鏡像構建,更新鏡像版本,等待集群調度 Pod 的過程,把編碼/測試/調試反饋循環(code/test/debug cycle)從分鐘級別降低到了秒級別,大幅提升開發效率。

三、調試云端應用

我們以一個簡單的前端應用為例,首先,我們通過 VelaUX 進行多環境部署。

關于如何開啟 KubeVela 的 VelaUX 插件,請查看文末官方文檔[2]。

1.使用 VelaUX 部署云端應用

在 VelaUX 中創建一個環境,每個環境中可以有多個部署目標,我們以一個包含了測試部署目標以及生產部署目標的環境為例。

首先,創建兩個部署目標,一個用于測試部署,一個用于生產部署。這里的部署目標會分別將資源下發到 local 集群的 test 以及 prod namespace 當中。你也可以通過 VelaUX 的集群管理功能,來添加新的集群用于部署。

創建完部署目標后,新建一個環境,環境中包含這兩個部署目標。

創建完環境后,新建應用來進行云端調試。這個前端應用會在 80 端口暴露服務,因此,我們把這個應用的 80 端口打開。

創建完應用后,應用會默認帶一個工作流,自動將應用部署到兩個部署目標當中。但我們并不希望未經過調試的應用直接部署到生產目標中。因此,我們來編輯一下這個默認工作流:在部署到測試目標和生產目標中添加一個暫停步驟。這樣,我們就可以在部署到測試環境中后,暫停部署,等待用戶調試并驗證完成后,再繼續部署到生產環境中。

完成這些配置后,我們來為這個應用添加一個 Nocalhost 的 Trait,用于云端調試。

在這里,詳細介紹一下 Nocalhost Trait 中的幾個參數:

Command 分兩種,Debug 和 Run。開發時在插件右鍵點擊 Remote Debug、Remote Run 會在遠端 Pod 中運行對應的命令,從而達到云端 Debug 的效果。在這里,我們使用的是前端應用,所以將命令設置為 yarn serve。

這里的 Image 指的是調試鏡像,Nocalhost 默認提供了五種語言的鏡像(go/java/python/ruby/node),可以通過填寫語言名來使用內置鏡像,當然,也可以填寫完整鏡像名以使用自定義鏡像。

開啟 HotReload 意味著開啟熱加載功能,能夠在修改代碼后直接看到效果。PortForward 會將云端應用的 80 端口轉發到本地的 8080 端口。

在 Sync 部分,將 Type 設置為 sendReceive (雙向同步),或者設置為 send (單向發送)。完成配置后,部署該應用。可以看到,應用在部署到測試目標之后,將自動暫停。

此時,打開 VSCode 或者 Jetbrains IDE 中的 Nocalhost 插件頁面,可以在 test namespace 下看到我們已部署的應用,點擊應用旁邊的錘子按鈕進入調試模式:

進入 Nocalhost 調試模式后,可以看到,IDE 中的終端已經被替換成了容器的終端。通過 ls 命令,可以看到容器內的所有文件。

此時,右鍵 Nocalhost 中的應用,可以選擇進入 Remote Debug 或者 Remote Run 模式。這兩個按鍵將自動執行我們之前配置的 Debug 和 Run 命令。

進入 Debug 模式后,可以看到,我們的云端應用被轉發到了本地的 8080 端口:

打開本地瀏覽器,可以看到,目前我們部署的前端應用版本為 v1.0.0:

此時,我們可以在本地 IDE 中修改一下代碼,將版本修改為 v2.0.0:

在之前的 Nocalhost 配置中,我們已經開啟了熱加載功能。因此,我們再次刷新一下本地的 8080 端口頁面,可以看到,應用版本已經變成了 v2.0.0:

此時,我們可以終止 Nocalhost 的調試模式。將已通過調試的代碼推送至代碼倉庫中。

四、使用 GitOps 進行多環境發布

在我們結束調試后,環境上的應用依舊是之前 v1.0.0 的版本。那么,該使用什么方式來更新環境中的應用呢?

在整個云端調試的過程中,我們修改的是源代碼。因此,我們可以借助 GitOps 的模式,以代碼作為更新來源,來完成對環境中應用的更新。

查看 VelaUX 中部署的應用,可以看到,每個應用都會擁有一個默認 Trigger:

點擊 Manual Trigger 查看詳情, 可以看到,VelaUX 為每個應用提供了一個 Webhook URL,請求該地址,并帶上需要更新的字段(如:鏡像等),可以方便快捷的完成應用的更新。(注:由于需要對外暴露地址,需要在部署 VelaUX 的時候使用 LoadBalancer 或者使用其他方式暴露 VelaUX 的服務)。

在 Curl Command 里,還提供了手動 Curl 該觸發器的請求示例。我們來詳細解析一下請求體:

{
// 必填,此次觸發的更新信息
"upgrade": {
// Key 為應用的名稱
"<application-name>": {
// 需要更新的值,這里的內容會被 Patch 更新到應用上
"image": "<image-name>"
}
},
// 可選,此次觸發攜帶的代碼信息
"codeInfo": {
"commit": "<commit-id>",
"branch": "<branch>",
"user": "<user>",
}
}

upgrade 下是本次觸發要攜帶的更新信息,在應用名下,是需要被 Patch 更新的值。默認推薦的是更新鏡像 image,也可以擴展這里的字段來更新應用的其他屬性。

codeInfo 中是代碼信息,可以選擇性地攜帶,比如提交 ID、分支、提交者等,一般這些值可以通過在 CI 系統中使用變量替換來指定。

當我們經過更新后的代碼被合入代碼倉庫后,我們可以通過代碼倉庫中的 CI 配置來完成和 VelaUX Trigger 的對接。以 GitLab CI 為例,可以增加如下步驟:

webhook-request:
stage: request
before_script:
- apk add --update curl && rm -rf /var/cache/apk/*
script:
- |
curl -X POST -H "Content-Type: application/json" -d '{"upgrade":{"'"$APP_NAME"'":{"image":"'"$BUILD_IMAGE"'"}},"codeInfo":{"user":"'"$CI_COMMIT_AUTHOR"'","commit":"'"$CI_COMMIT_SHA"'","branch":"'"$CI_COMMIT_BRANCH"'"}}' $WEBHOOK_URL

配置完成后,當代碼被更新時,將自動觸發該 CI,并且更新對應 VelaUX 中的應用。

當鏡像被更新后,再次查看應用的頁面,可以看到,測試環境中的應用已經變成了 v2.0.0 版本。

在測試部署目標中驗證完畢后,我們可以點擊應用工作流中的 Continue ,使最新版本的應用部署到生產部署目標中。

部署完畢后,查看生產環境中的應用,可以看到,生產環境中已經是最新的 v2.0.0 版本:

至此,我們就通過 KubeVela 首先在測試環境中使用 Nocalhost 進行端云聯調,驗證通過后,再通過更新代碼,使用 GitOps 來完成部署更新,并且繼續更新生產環境中的應用,從而完成了一次應用從開發到上線的完整部署流程。

五、總結

使用 KubeVela + Nocalhost,不僅能夠便捷地在開發環境中進行云端的聯調測試,還能在測試完成后一鍵更新部署到生產環境,使整個開發上線過程穩定可靠。

參考鏈接:

[1] Using GitOps + KubeVela for Application Continuous Delivery

https://kubevela.io/blog/2021/10/10/kubevela-gitops

[2] 官方文檔地址:https://kubevela.io/docs/install#4-install-velaux

責任編輯:武曉燕 來源: 阿里巴巴中間件
相關推薦

2012-04-20 14:33:10

海爾一體機

2023-06-15 10:00:00

Jenkins任務操作

2023-04-06 17:17:29

混合云Kubernetes多集群

2016-10-13 15:03:27

混合云多云環境微服務

2015-09-08 16:07:36

2018-08-10 15:08:14

云計算混合云數據中心

2021-05-20 14:17:05

云計算混合云架構

2024-02-21 07:48:37

KubeSlice云原生Kubernetes

2013-06-25 16:36:43

惠普世界之旅惠普云計算惠普混合云

2013-11-14 10:24:02

混合云混合云部署公有云

2018-01-09 16:45:31

離線網絡網絡安全一鍵式部署

2017-03-15 18:49:08

云計算

2021-06-08 09:54:18

云計算混合云Region架構

2019-08-28 12:02:04

Helm云原生一鍵部署

2024-07-10 08:17:14

2011-07-05 09:35:36

云計算云聯云IDC

2021-04-01 14:20:41

混合云私有云云計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久一级免费视频 | 亚洲欧美成人 | 精品国偷自产在线 | 精品在线播放 | 中文字幕观看 | 91在线精品一区二区 | 黑人巨大精品欧美一区二区免费 | 在线综合视频 | 国产电影一区 | 99久久国产免费 | 在线观看成人精品 | 国产成人精品网站 | 国产精品3区 | 白浆在线| 99精品在线 | 视频一二区 | 国产1区| 久久视频一区 | 国产精品亚洲一区二区三区在线 | 久久专区| 精产国产伦理一二三区 | 丝袜 亚洲 欧美 日韩 综合 | 日韩一区不卡 | 亚洲一区二区网站 | 国产精品中文在线 | 亚洲视频免费在线看 | 国产精品99久久久久久大便 | 中国大陆高清aⅴ毛片 | 欧美精品一区二区三区蜜桃视频 | 欧美成人精品激情在线观看 | 蜜桃视频一区二区三区 | 久久99精品国产 | 在线播放亚洲 | 欧美精品区 | 久久99精品久久 | 色婷婷在线视频 | 日韩综合网 | 日韩成人一区二区 | 亚洲影音 | 一级片免费视频 | 国产清纯白嫩初高生在线播放视频 |