色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Devtron在Kubernetes多集群上進行開發

馬哥Linux運維 ? 來源:piotrminkowski.com ? 作者:piotrminkowski.com ? 2022-11-17 09:50 ? 次閱讀

在本文中,您將學習如何在多集群環境中使用 Devtron 在 K8S 上進行應用開發。

Devtron 附帶用于構建、部署和管理微服務的工具。它通過提供直觀的 UI 和 Helm 圖表支持來簡化 K8S 上的部署。今天,我們將使用自定義 Helm 圖表運行一個示例 Spring Boot 應用程序。將它部署在跨多個 K8S 集群的不同命名空間中。示例應用程序連接到數據庫,該數據庫在 K8S 上運行并已使用 Devtron Helm 圖表部署。

在 K8S 上安裝 Devtron

第一步,在 K8S 上安裝 Devtron。有兩種安裝選項:帶 CI/CD 模塊或不帶它。本文不會構建 CI/CD 流程,但是這個模塊中包含了一些重要功能。首先,添加 Devtron Helm 存儲庫:

$helmrepoadddevtronhttps://helm.devtron.ai

然后,執行以下 Helm 命令:

$helminstalldevtrondevtron/devtron-operator
--create-namespace--namespacedevtroncd
--setinstaller.modules={cicd}

有關詳細的安裝說明,請參閱 Devtron 文檔。

https://docs.devtron.ai/getting-started/install/install-devtron-with-cicd

使用 Kind 創建第二個 K8S 集群

為了在本地機器上準備多集群環境,我們將使用 Kind, 通過執行以下命令來創建第二個 K8S 集群 c1 :

https://kind.sigs.k8s.io/

$kindcreatecluster--namec1

第二個集群的上下文是:kind-c1。創建 Kind 集群后,它將成為默認上下文。

bd85cfea-65b7-11ed-8abf-dac502259ad0.png

現在,我們的目標是將新創建的 Kind 集群添加為 Devtron 的托管集群。一個 Devtron 實例可以管理多個 K8S 集群。當然,默認情況下,它只管理一個本地集群。在我們將 Kind 集群添加到 Devtron 儀表板之前,應該首先在該集群上配置權限。以下腳本將生成一個bearer token用于身份驗證,以便 Devtron 能夠與目標集群通信

$curl-Ohttps://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/kubernetes_export_sa.sh&&bashkubernetes_export_sa.shcd-userdevtroncdhttps://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/clusterrole.yaml

bearer token打印在該命令的輸出中,復制它。

bdb186f8-65b7-11ed-8abf-dac502259ad0.png

我們還必須提供目標集群的 master API 的 URL。由于在 Kind 上運行 K8S,我需要獲取包含 Kind 的 Docker 容器的內部地址。為了獲得它,我們需要運行以下命令:

$dockerinspect-f'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'c1-control-plane

這是我的 Kind 集群的 IP 地址:

bdd41f7e-65b7-11ed-8abf-dac502259ad0.png

現在,我們擁有了在 Devtron 儀表板中添加新托管集群所需的所有數據。為此,導航到Global Configuration部分。然后選擇Clusters and Environments項并單擊Add cluster按鈕。需要填寫 Kind 集群 URL 和之前生成的bearer token。

be008ef6-65b7-11ed-8abf-dac502259ad0.png

如果一切正常,您應該會在托管集群列表中看到第二個集群。現在,您還需要根據下面顯示的消息在 Kind 上安裝 Devtron 代理:

be38c1fe-65b7-11ed-8abf-dac502259ad0.png

創建環境

我們將定義三個環境。在 Devtron 環境中分配給集群。我們將在本地集群(local)上創建一個環境,和另外兩個 Kind 集群 ( remote-dev, remote-devqa) 。每個環境都有一個目標命名空間。為了簡化,命名空間的名稱與環境名稱相同。當然,您可以設置任何想要的名稱。

be57dff8-65b7-11ed-8abf-dac502259ad0.png

現在,切換到Clusters視圖。

be817444-65b7-11ed-8abf-dac502259ad0.png

如您所見,現在有兩個集群連接到 Devtron:

beafd3ac-65b7-11ed-8abf-dac502259ad0.png

我們可以看一下每個集群的詳細信息。在這里,您可以看到kind-c1集群的詳細視圖:

bed9470a-65b7-11ed-8abf-dac502259ad0.png

添加自定義 Helm 存儲庫

Devtron 最重要的功能之一是對 Helm 圖表的支持。默認情況下,Devtron 中有幾個可用的 Helm 存儲庫,包括bitnami或elastic,也可以添加自定義存儲庫。這里使用我自己的 Helm 存儲庫,其中包含用于部署 Spring Boot 應用程序的圖表。我已經將它放在 GitHub 上:

https://piomin.github.io/helm-charts/

我們的圖表名稱是spring-boot-api-app,最新版本是0.3.2。

bf18e590-65b7-11ed-8abf-dac502259ad0.png

為了在 Devtron 中添加自定義存儲庫,我們需要再次進入Global Configurations部分。然后轉到Chart repositories菜單項,然后單擊Add repository按鈕。如下所示,我添加了一個新存儲庫piomin。

bf3d916a-65b7-11ed-8abf-dac502259ad0.png

創建存儲庫后,您可以轉到Chart Store部分以驗證新圖表是否可用。

bf57d8c2-65b7-11ed-8abf-dac502259ad0.png

使用 Devtron 部署 Spring Boot 應用程序

現在,我們可以進行實踐中最重要的部分:應用程序部署。我們的示例 Spring Boot 應用程序位于 GitHub 上的以下存儲庫中:

https://github.com/piomin/sample-spring-kotlin-microservice.git

這是一個用 Kotlin 編寫的簡單 REST 應用程序。它公開了一些用于添加和返回人員的 HTTP 端點,并使用內存存儲。這是 Spring @RestController:

@RestController
@RequestMapping("/persons")
classPersonController(valrepository:PersonRepository){

vallog:Logger=LoggerFactory.getLogger(PersonController::class.java)

@GetMapping("/{id}")
funfindById(@PathVariableid:Int):Person?{
log.info("findById({})",id)
returnrepository.findById(id)
}

@GetMapping("/age/{age}")
funfindByAge(@PathVariableage:Int):List{
log.info("findByAge({})",age)
returnrepository.findByAge(age)
}

@GetMapping
funfindAll():List=repository.findAll()

@PostMapping
funadd(@RequestBodyperson:Person):Person=repository.save(person)

@PutMapping
funupdate(@RequestBodyperson:Person):Person=repository.update(person)

@DeleteMapping("/{id}")
funremove(@PathVariableid:Int):Boolean=repository.removeById(id)

}

假設我們正在開發最新版本,想將其部署在 K8S 上以執行一些開發測試。第一步,將在本地構建應用程序并使用 Jib Maven 插件將鏡像推送到容器注冊表。這是所需的配置:


com.google.cloud.tools
jib-maven-plugin
3.3.0


piomin/sample-spring-kotlin-microservice

1.1



999



讓我們使用以下命令構建鏡像并將其推送到容器注冊表:

$mvncleancompilejib:build-Pjib,tomcat

除了 YAML 模板,Helm 存儲庫還包含一個用于values.yaml 驗證的 JSON schema 。多虧了該 schema ,我們將能夠利用 Devtron GUI 從圖表創建應用程序。讓我們看看它是如何工作的。

單擊自定義圖表后,將被重定向到包含詳細信息的頁面。最新版本的圖表是0.3.2. 只需單擊部署按鈕。

在下一頁上,需要提供應用程序的配置。目標環境是存在于主集群上的local。多虧 Devtron 對 Helm values.schema.json 的支持,使得我們使用 GUI 表單定義所有值。例如,可以增加更改鏡像的值到最新的:1.1。

bf7a4ff6-65b7-11ed-8abf-dac502259ad0.png

部署應用程序后,我們可以驗證其狀態:

bfbba99c-65b7-11ed-8abf-dac502259ad0.png

讓我們進行一些測試調用。示例 Spring Boot 公開了 Swagger UI,因此我們可以輕松發送 HTTP 請求。要與運行在 K8S 上的應用程序交互,應該為服務啟用端口轉發kubectl port-forward svc/sample-spring-boot-api 8080:8080。執行該命令后,您可以通過 http://localhost:8080/swagger-ui.html 訪問地址 Swagger UI:

c019b7da-65b7-11ed-8abf-dac502259ad0.png

Devtron 允許我們查看 pod 日志。還可以用 grep。下面展示了與測試調用相關的日志。

c0309414-65b7-11ed-8abf-dac502259ad0.png

將應用部署到遠程集群

現在,我們將示例 Spring Boot 應用程序部署到遠程集群。為了做到這一點,請轉到與以前相同的頁面,但不要選擇本地環境,而是選擇remote-dev,它與kind-c1集群相關聯。

c098464a-65b7-11ed-8abf-dac502259ad0.png

現在,有兩個相同的應用程序在兩個不同的集群上運行。我們可以對在 Kind 集群上運行的應用程序和本地集群執行相同的操作,例如驗證其狀態或檢查日志。

c0d23bfc-65b7-11ed-8abf-dac502259ad0.png

部署應用組

假設我們要部署連接到數據庫的應用程序。我們可以使用名為Chart Group的 Devtron 功能一步完成。使用該功能,我們可以將 Spring Boot 的 Helm 圖表和 Postgres 的圖表放在同一個邏輯組中。然后,我們可以將整個組部署到目標環境中。要創建圖表組,請轉到 Chart Store 菜單,然后單擊Create Group按鈕。您應該設置組的名稱并選擇將包含的圖表。對我來說,就是bitnami/postgresql圖表和我的自定義 Helm 圖表。

c1096c44-65b7-11ed-8abf-dac502259ad0.png

創建組后,您將在Chart Store主頁面上看到它。現在,只需單擊它即可部署應用程序。

c1327986-65b7-11ed-8abf-dac502259ad0.png

單擊帶有圖表組的磁貼后,您將被預測到部署頁面。

c151de52-65b7-11ed-8abf-dac502259ad0.png

單擊Deploy to…按鈕后,Devtron 會將您重定向到下一頁。您可以為該組的所有成員圖表設置目標項目和環境。我們會將它們從集群部署到kind-c1集群的remote-devqa命名空間中。其中的鏡像,可以填寫我的 Docker 帳戶中的:piomin/person:1.1。

默認情況下,它會嘗試連接到postgres主機上的數據庫。唯一需要注入應用容器的是 postgresql Secret(由 Bitnami Helm 圖表生成)中postgres用戶密碼。要注入該Secret中的環境變量,請在自定義 Spring Boot 圖表中使用extraEnvVarsSecret參數。最后,讓我們通過單擊Deploy按鈕在remove-devqa命名空間中部署 Spring Boot 和 Postgres 。

c1834b7c-65b7-11ed-8abf-dac502259ad0.png

這是本次實踐中已部署應用程序的最終列表:

c1bf1f30-65b7-11ed-8abf-dac502259ad0.png

總結

借助 Devtron,可以使用 Helm 圖表輕松地支持跨多個 K8S 集群部署應用程序。

Devtron 簡化了 K8S 的開發,可以通過圖表組功能部署所有需要的應用程序。

可以使用 GUI 儀表板管理和監控應用程序。

可以在儀表板中執行所有操作,而無需自己傳遞任何 YAML 清單或執行kubectl命令。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 集群
    +關注

    關注

    0

    文章

    86

    瀏覽量

    17173
  • kubernetes
    +關注

    關注

    0

    文章

    224

    瀏覽量

    8712

原文標題:使用 Devtron 在 Kubernetes 多集群上進行開發

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    阿里云上Kubernetes集群聯邦

    規模的上限等等。Federation集群聯邦可以一定程度上解決這些問題。Federation是可以將分布多個Region或者多個云廠商的Kubernetes集群整合成一個大的
    發表于 03-12 17:10

    Kubernetes Ingress 高可靠部署最佳實踐

    摘要: Kubernetes集群中,Ingress作為集群流量接入層,Ingress的高可靠性顯得尤為重要,今天我們主要探討如何部署一套高性能高可靠的Ingress接入層。簡介
    發表于 04-17 14:35

    kubernetes集群配置

    基于v1104版本手動搭建高可用kubernetes 集群
    發表于 08-19 08:07

    kubernetes v112二進制方式集群部署

    kubernetes v112 二進制方式集群部署
    發表于 05-05 16:30

    請問鴻蒙系統上可以部署kubernetes集群嗎?

    鴻蒙系統上可以部署kubernetes集群
    發表于 06-08 11:16

    如何部署基于Mesos的Kubernetes集群

    Kubernetes官方提供的部署基于Mesos的Kubernetes集群的文檔相對簡單,對于不熟悉Mesos的Kubernetes開發者或
    發表于 10-09 18:04 ?0次下載
    如何部署基于Mesos的<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    淺談Kubernetes集群的高可用方案

    Kubernetes作為容器應用的管理中心,通過對Pod的數量進行監控,并且根據主機或容器失效的狀態將新的Pod調度到其他Node上,實現了應用層的高可用性。針對Kubernetes集群
    發表于 10-11 10:04 ?1次下載
    淺談<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的高可用方案

    Kubernetes集群發生網絡異常時如何排查

    本文將引入一個思路:“ Kubernetes 集群發生網絡異常時如何排查”。文章將引入 Kubernetes 集群中網絡排查的思路,包含網
    的頭像 發表于 09-02 09:45 ?4782次閱讀

    Kubernetes 集群的功能

    Telepresence 是一個開源工具,可讓您在本地運行單個服務,同時將該服務連接到遠程 Kubernetes 集群
    的頭像 發表于 09-05 10:58 ?1088次閱讀

    Kubernetes集群的關閉與重啟

    日常對 Kubernetes 集群運行維護的過程中,您可能需要臨時的關閉或者是重啟 Kubernetes 集群
    的頭像 發表于 11-07 09:50 ?9922次閱讀

    樹莓派上搭建Kubernetes智能邊緣集群

    電子發燒友網站提供《樹莓派上搭建Kubernetes智能邊緣集群.zip》資料免費下載
    發表于 12-09 09:20 ?2次下載
    <b class='flag-5'>在</b>樹莓派上搭建<b class='flag-5'>Kubernetes</b>智能邊緣<b class='flag-5'>集群</b>

    Kubernetes集群部署

    Kubeadm是一種Kubernetes集群部署工具,通過kubeadm init命令創建master節點,通過 kubeadm join命令把node節點加入到集群
    的頭像 發表于 02-15 10:35 ?1721次閱讀

    Kubernetes租戶集群的概念和常見的應用模式

    KaaS 租戶方案通常與云服務提供商有關。在這種場景下,業務平臺的服務通過 Kubernetes 控制平面直接暴露給不同租戶的用戶。最終用戶可以使用服務提供商提供的 Kubernetes API 或其他擴展 API。
    的頭像 發表于 05-15 16:13 ?1200次閱讀
    <b class='flag-5'>Kubernetes</b><b class='flag-5'>多</b>租戶<b class='flag-5'>集群</b>的概念和常見的應用模式

    Kubernetes集群中如何選擇工作節點

    簡要概述: 本文討論了Kubernetes集群中選擇較少數量的較大節點和選擇較多數量的較小節點之間的利弊。
    的頭像 發表于 08-28 15:46 ?624次閱讀
    <b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>中如何選擇工作節點

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團隊(被 VMWare 收購)開源的 Kubernetes 集群備份、遷移工具。
    的頭像 發表于 08-05 15:43 ?349次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>
    主站蜘蛛池模板: 国产内射AV徐夜夜| 在线日本高清日本免费| 欧美午夜不卡在线观看| 久久视频在线视频| 好看的电影网站亚洲一区| 国产AV精品白浆一区二| 成人麻豆日韩在无码视频| blacked黑人战小美女| 99久久全国免费久久爱| 男人的天堂黄色片| 理论片在线观看片免费| 国产精品成人A蜜柚在线观看| 正在播放国产精品| 一区二区三区内射美女毛片| 亚洲精品视频免费| 亚洲欧洲日产国产 最新| 亚洲黄色三级视频| 亚洲色tu| 在线播放真实国产乱子伦| 在线高清视频不卡无码| 最近中文字幕2019免费版日本| 中文字幕 日韩 无码 在线| 18禁无遮挡羞羞污污污污免费| 亚洲 天堂 欧美 日韩 国产| 午夜男女爽爽羞羞影院在线观看| 天天影视香色欲综合网| 亚洲 欧美 日韩 国产 视频| 亚洲国产精品无码中文字幕| 亚洲熟妇AV乱码在线观看| 甜宠溺H宝贝嗯撞PLAY啊 | JAVASCRIPTJAVA水多多| WWW色视频片内射| 国产成人精品123区免费视频| 国产露脸A片国语露对白| 成人永久免费视频网站在线观看| 穿着丝袜被男生强行啪啪| a视频在线观看免费| 大香伊人中文字幕精品| 国产三级在线精品男人的天堂| 国内精自品线一区91| 狼与美女谐音歌词|