日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS

發(fā)布時(shí)間:2024/9/3 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 引言

斷斷續(xù)續(xù),感覺這個(gè)系列又要半途而廢了。趁著假期,趕緊再更一篇,介紹下如何將eShopOnContainers部署到K8S上,進(jìn)而實(shí)現(xiàn)大家常說的微服務(wù)上云。

2. 先了解下 Helm

讀過我上篇文章ASP.NET?Core?借助?K8S?玩轉(zhuǎn)容器編排的同學(xué),想必對(duì)K8S有了個(gè)大致了解。K8S引入了Pod、Service、ReplicationSet等概念,來簡(jiǎn)化容器的編排工作。然而,發(fā)布一個(gè)應(yīng)用,依舊很繁瑣,比如要定義Pod,要關(guān)心如何暴露Service,如何自動(dòng)伸縮。更不用說一個(gè)包括多個(gè)模塊(Web、DB)的的復(fù)雜應(yīng)用了,想一想要維護(hù)一堆?yaml文件,就很奔潰。為了解決這一個(gè)問題,Helm橫空出世。Helm?簡(jiǎn)單來說就像NuGet包管理器,通過NuGet包管理器,我們可以很容易的管理依賴,借助它可以很方便的查找、安裝、卸載、升級(jí)、降級(jí)需要的包。只不過Helm管理的包,叫做Helm?Chart。Chart?的包定義結(jié)構(gòu)如下:

$ helm create mongodb

$ tree mongodb

mongodb

├── Chart.yaml #Chart本身的版本和配置信息

├── charts #依賴的chart

├── templates #配置模板目錄

│ ├── NOTES.txt #helm提示信息

│ ├── _helpers.tpl #用于修改kubernetes objcet配置的模板

│ ├── deployment.yaml #kubernetes Deployment object

│ └── service.yaml #kubernetes Serivce

└── values.yaml #kubernetes object configuration

對(duì)于Helm,還有兩個(gè)基本概念:Repository和Release。Repository是Helm?Chart的存儲(chǔ)倉(cāng)庫(kù),Release是指Chart的部署實(shí)例。

另外,Helm包括兩個(gè)部分:Client(客戶端)和Tiller(服務(wù)端)。客戶端用于管理Chart,服務(wù)端用于管理Release。

從上面這張圖中我們可以看到Tiller通過API與Kubernetes進(jìn)行交互,來完成Chart包的部署。

以上就是Helm的簡(jiǎn)單介紹,若需深入了解,請(qǐng)?jiān)L問官網(wǎng)Helm。

3. 使用Helm Chart 部署 eShopOnContainers 到 K8S

下面就直接按照裝官方文檔Deploying-to-Kubernetes-(AKS-and-local)-using-Helm-Charts-using-Helm-Charts) )進(jìn)行實(shí)操。

3.1. 安裝Helm

毫無疑問,我們首先得本地安裝Helm,建議直接使用 Chocolatey安裝,命令如下 choco install kubernetes-helm。在K8S中提供了認(rèn)證機(jī)制,以確保應(yīng)用程序的安全訪問。Tiller要想與K8S建立連接進(jìn)行交互,就必須提前在K8S中創(chuàng)建一個(gè)ServiceAccount并分配給Tiller以完成基于角色的訪問控制(RBAC)。

# 在k8s目錄下執(zhí)行以下命令,完成ServiceAccount的創(chuàng)建

$ kubectl apply -f helm-rbac.yaml # 創(chuàng)建名為tiller的ServiceAccount

# 安裝Tiller(Helm服務(wù)端),并指定使用上面創(chuàng)建的ServiceAccount

$ helm init --service-account tiller

3.2. 安裝 Nginx ingress controller

Ingress是用來暴露服務(wù)的,本質(zhì)上和Service類似,但是一個(gè)Service只可以暴露一個(gè)服務(wù),而一個(gè)Ingress可以暴露多個(gè)服務(wù),Ingress可以根據(jù)請(qǐng)求的主機(jī)名和路徑進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)。但創(chuàng)建Ingress的前提是K8S必須已經(jīng)有相應(yīng)的Ingress?Controller運(yùn)行。然而,Dockers-For-Windows中默認(rèn)并未提供Ingress?Controller。我們可以在?/k8s目錄下執(zhí)行以下腳本,以安裝`Nginx?ingress?controller。

$ .\deploy-ingress.ps1

$ .\deploy-ingress-dockerlocal.ps1

3.3. 使用 Helm 部署 eShopOnContainers

在項(xiàng)目 k8s\Helm文件夾下,已經(jīng)分別為eShopOnContainers的各個(gè)部分定義了相應(yīng)的Chart,如下圖所示。

僅需執(zhí)行 .\deploy-all.ps1-imageTag dev-useLocalk8s $true腳本,即可一鍵部署。等腳本執(zhí)行完畢,可以執(zhí)行?helm list來查看所有的release。

$ helm list

NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE

eshop-apigwmm 1 Fri Apr 5 16:55:45 2019 DEPLOYED apigwmm-0.1.0 1.0 default

eshop-apigwms 1 Fri Apr 5 16:55:46 2019 DEPLOYED apigwms-0.1.0 1.0 default

eshop-apigwwm 1 Fri Apr 5 16:55:47 2019 DEPLOYED apigwwm-0.1.0 1.0 default

eshop-apigwws 1 Fri Apr 5 16:55:48 2019 DEPLOYED apigwws-0.1.0 1.0 default

eshop-basket-api 1 Fri Apr 5 16:55:49 2019 DEPLOYED basket-api-0.1.0 1.0 default

eshop-basket-data 1 Fri Apr 5 16:55:44 2019 DEPLOYED basket-data-0.1.0 1.0 default

eshop-catalog-api 1 Fri Apr 5 16:55:50 2019 DEPLOYED catalog-api-0.1.0 1.0 default

eshop-identity-api 1 Fri Apr 5 16:55:51 2019 DEPLOYED identity-api-0.1.0 1.0 default

eshop-keystore-data 1 Fri Apr 5 16:55:43 2019 DEPLOYED keystore-data-0.1.0 1.0 default

eshop-locations-api 1 Fri Apr 5 16:55:52 2019 DEPLOYED locations-api-0.1.0 1.0 default

eshop-marketing-api 1 Fri Apr 5 16:55:53 2019 DEPLOYED marketing-api-0.1.0 1.0 default

eshop-mobileshoppingagg 1 Fri Apr 5 16:55:54 2019 DEPLOYED mobileshoppingagg-0.1.0 1.0 default

eshop-nosql-data 1 Fri Apr 5 16:55:42 2019 DEPLOYED nosql-data-0.1.0 1.0 default

eshop-ordering-api 1 Fri Apr 5 16:55:55 2019 DEPLOYED ordering-api-0.1.0 1.0 default

eshop-ordering-backgroundtasks 1 Fri Apr 5 16:55:56 2019 DEPLOYED ordering-backgroundtasks-0.1.0 1.0 default

eshop-ordering-signalrhub 1 Fri Apr 5 16:55:57 2019 DEPLOYED ordering-signalrhub-0.1.0 1.0 default

eshop-payment-api 1 Fri Apr 5 16:55:58 2019 DEPLOYED payment-api-0.1.0 1.0 default

eshop-rabbitmq 1 Fri Apr 5 16:55:42 2019 DEPLOYED rabbitmq-0.1.0 1.0 default

eshop-sql-data 1 Fri Apr 5 16:55:41 2019 DEPLOYED sql-data-0.1.0 1.0 default

eshop-webhooks-api 1 Fri Apr 5 16:56:03 2019 DEPLOYED webhooks-api-0.1.0 1.0 default

eshop-webhooks-web 1 Fri Apr 5 16:56:04 2019 DEPLOYED webhooks-web-0.1.0 1.0 default

eshop-webmvc 1 Fri Apr 5 16:55:59 2019 DEPLOYED webmvc-0.1.0 1.0 default

eshop-webshoppingagg 1 Fri Apr 5 16:56:00 2019 DEPLOYED webshoppingagg-0.1.0 1.0 default

eshop-webspa 1 Fri Apr 5 16:56:01 2019 DEPLOYED webspa-0.1.0 1.0 default

eshop-webstatus 1 Fri Apr 5 16:56:02 2019 DEPLOYED webstatus-0.1.0 1.0 default

3.4. 驗(yàn)證部署

使用 kubectlgetdeployment可以查看所有的彈性部署,使用 kubectlgetingress可以查看通過ingress暴露的所有服務(wù),使用 kubectlgetpod,可以查看所有運(yùn)行的pod,等所有的pod的STATUS均為Running時(shí),就可以直接通過http://localhost訪問應(yīng)用了,也可以訪問http://localhost/webstatus監(jiān)控應(yīng)用運(yùn)行狀態(tài)。

至此,已成功部署eShopOnContainers到本地K8S集群。

4. 上云

微服務(wù)不上云簡(jiǎn)直就是浪費(fèi)感情。有了本地部署的經(jīng)驗(yàn),那么部署上云也就簡(jiǎn)單了。除了需要額外創(chuàng)建并配置AKS(Azure?Kubernetes?Service)外,其他步驟都如出一轍。下面就來梳理下如何部署應(yīng)用到AKS集群上。

首先你得有Azure賬號(hào),這是第一步,如果沒有請(qǐng)自行前往https://azure.microsoft.com/zh-cn/申請(qǐng)免費(fèi)賬號(hào)把玩。

4.1. 創(chuàng)建AKS

創(chuàng)建AKS有兩種方式一種是基于 AzureCLI,一種是直接通過門戶網(wǎng)站直接創(chuàng)建。這里使用第一種方式。首先確保本地安裝Azure?CLI,可使用?choco install azure-cli安裝。下面直接通過命令演示。

$ az login #登錄Azure,完成客戶端認(rèn)證

$ az group create --name aks-group --location eastasia #在East Asia 創(chuàng)建資源組

$ az aks create `

--resource-group aks-group `

--name eshop `

--node-count 1 `

--enable-addons http_application_routing,monitoring ` # 啟用Http Routing(包含Ingress Controller和External-DNS)和監(jiān)控

--generate-ssh-keys # 創(chuàng)建 ask 集群

$ az aks get-credentials --resource-group aks-group --name eshop # 獲取證書以便從本地連接到AKS集群

$ kubectl config current-context # 查看當(dāng)前上下文是不是eshop

$ kubectl get nodes # 獲取aks集群節(jié)點(diǎn)

4.2. AKS 中安裝 Helm

AKS上和本機(jī)一樣需要安裝Helm,不過AKS上主要是要用到服務(wù)端(Tiller)以便進(jìn)行Chart的管理。不過好消息是AKS上Helm?Client默認(rèn)已經(jīng)安裝好了,所以只需要安裝Tiller就Ok了。

  • 首先創(chuàng)建ServiceAccount,用于K8S與Tiller的認(rèn)證 我們可以簡(jiǎn)單使用項(xiàng)目k8s文件夾下現(xiàn)有的?helm-rbac.yaml來創(chuàng)建ServiceAccount。直接執(zhí)行?kubectl apply-f.\helm-rbac.yaml。

  • 創(chuàng)建Tiller?helm init--service-account tiller

  • 4.3. 部署 eShopOnContainers 到 AKS

    k8s/helm文件夾打開Powershell執(zhí)行以下腳本即可一鍵部署:

    $ .\deploy-all.ps1 -externalDns aks -aksName eshop -aksRg aks-group -imageTag dev

    4.4. 驗(yàn)證部署

    執(zhí)行 kubectlgetingress:

    $ kubectl get ingress

    NAME HOSTS ADDRESS PORTS AGE

    eshop-apigwmm eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 45s

    eshop-apigwms eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 44s

    eshop-apigwwm eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 42s

    eshop-apigwws eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 41s

    eshop-identity-api eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 38s

    eshop-webhooks-api eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 24s

    eshop-webhooks-web eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 23s

    eshop-webmvc eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 29s

    eshop-webspa eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 27s

    eshop-webstatus eshop.23a0868cb60a45e18d24.eastasia.aksapp.io 13.70.31.45 80 25s

    等所有的pod都處于Running狀態(tài)時(shí),就可以直接通過Hosts:eshop.23a0868cb60a45e18d24.eastasia.aksapp.io來訪問應(yīng)用了。如果測(cè)試登錄,可能會(huì)遭遇?502BadGateway,這是因?yàn)镮dentity Server 發(fā)送的請(qǐng)求頭數(shù)據(jù)包超過了AKS中Nginx Ingress Controller的默認(rèn)設(shè)置,可以直接 /k8s/helm目錄執(zhí)行 kubectl apply-f aks-httpaddon-cfg.yaml來解決這個(gè)問題。

    玩耍了一段時(shí)間后,別忘了清理資源,畢竟上云是要RMB的啊。執(zhí)行?azgroupdelete-n aks-group,刪除最開始創(chuàng)建的資源組。

    5. 總結(jié)

    That's?all?雖然成功將eShopOnContainers部署到云上,但一點(diǎn)也高興不起來。從開發(fā)到部署再到運(yùn)維,發(fā)現(xiàn)到處都是學(xué)不完的技術(shù)債。哎,誰讓你當(dāng)初非要當(dāng)程序員呢?

    總結(jié)

    以上是生活随笔為你收集整理的k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品18久久久久久久久 | 欧美人在线 | 丰满少妇被猛烈进入 | 男人操女人动漫 | 麻豆网| 国产一区二区三区视频免费在线观看 | 欧美男人天堂 | 奇米影视第四色首页 | 亚洲一卡二卡在线 | www.日韩av.com | www.好了av | 日美女逼逼 | 欧美一区二区在线看 | 日日爱99 | 国产精品无码中文字幕 | 欧美成人不卡视频 | 欧美久久久久 | 国产高清在线一区 | 天天槽| av大全在线观看 | 嫩草影院中文字幕 | 国产污污在线观看 | www.com在线观看 | 五月香蕉网 | 57pao国产成永久免费视频 | 免费观看成人在线视频 | 一区二区三区小说 | 久久久久99精品成人片 | 狠狠cao日日穞夜夜穞av | 国产伦理精品 | 国产成人免费av一区二区午夜 | 6080一级片| www四虎精品视频免费网站 | 一级做a爱片久久毛片 | 国产欧美精品一区二区色综合朱莉 | 中文在线观看视频 | 日韩特级| 果冻传媒18禁免费视频 | 午夜精品福利电影 | 红色假期黑色婚礼2 | 青青草视频在线观看免费 | 中国av一级片 | 午夜精品无码一区二区三区 | 99色影院 | xxxxxxxx黄色片 | 黄在线观看免费 | 婷婷国产在线 | 日日摸夜夜添夜夜 | xxxxxx国产 | 国产视频1区 | 日韩欧美一区二区在线 | 日韩在线视频第一页 | 肉丝美足丝袜一区二区三区四 | 亚洲精品乱码久久久久久蜜桃图片 | 免费视频爱爱太爽 | 91午夜视频在线观看 | 姐姐你真棒插曲快来救救我电影 | 午夜在线视频播放 | 一区二区日韩视频 | 手机av不卡 | 偷看洗澡一二三区美女 | 亚洲视频国产精品 | 日韩在线观看免费高清 | 欧美激情网站 | 精品+无码+在线观看 | 草草视频在线观看 | 黄色网日本 | 91在线一区二区 | 青娱乐在线视频观看 | 无码人妻精品一区二区三区夜夜嗨 | 中文字幕精品一二三四五六七八 | 国产午夜在线观看 | 亚洲精品在线视频免费观看 | 久久久久人妻精品一区二区三区 | 午夜天堂在线 | 久久在线一区二区 | 天天草天天| 巨胸大乳www视频免费观看 | 亚洲精品乱码久久久久久蜜桃动漫 | 青青草国产在线播放 | 亚洲国产精品一区二区尤物区 | 无码精品国产一区二区三区免费 | 色偷偷免费视频 | 日本在线观看中文字幕 | 欧美成人一区二区三区高清 | 日韩一区二区三区精 | 日本免费一级片 | 亚洲免费综合 | 久久久久久久久久国产 | 国产又粗又猛又黄又爽的视频 | 免费人成又黄又爽又色 | 午夜两性网 | 久热精品在线观看视频 | 亚洲专区一区二区三区 | 先锋资源av网 | 波多野结衣一二三区 | 国产成人免费av一区二区午夜 | 国产午夜片 | 日韩av免费在线观看 |