華為云服務(wù)器部署初探

最近玩了下華為云,遇到了一些坑,做下記錄。
華為云有很多的服務(wù),文中會(huì)涉及到:
CCE ECS 彈性公網(wǎng)IP DevCloud
創(chuàng)建自己的鏡像
因?yàn)橘徺I的服務(wù)器為鯤鵬服務(wù)器,而開源鏡像中心的鏡像都是 x86 的,所以直接通過鏡像中心的鏡像進(jìn)行安裝是無法正常運(yùn)行的。有兩種方式可以解決:
1、編輯 YAML 文件,將鏡像修改為支持 arm 的鏡像,比如:arm64v8/nginx ;
2、創(chuàng)建自己的鏡像,然后推送到鏡像倉庫中。
第一種方式測(cè)試過,但沒有成功。制作自己的鏡像的步驟如下:
1、ssh 進(jìn)入到 ECS 服務(wù)器;
2、執(zhí)行下面命令進(jìn)行操作:
docker?pull?arm64v8/nginx
##?登陸鏡像倉庫
docker?login?-u?cn-north-4@89VUVGA2PF5XSHSM6YB4?-p?40d6f47154ef844717e9acc4cc3240e2dfeb900b149058e60a3f6fa598fb1?swr.cn-north-5.myhuaweicloud.com
docker?tag?arm64v8/nginx?swr.cn-north-5.myhuaweicloud.com/xxx/s2-nginx:latest
docker?push?swr.cn-north-5.myhuaweicloud.com/xxx/s2-nginx:latest
推送成功后,在我的鏡像中可以看到自制的鏡像,如下圖:


配置文件
運(yùn)行前端 vue 的程序,需要 nginx 配置文件、運(yùn)行 Redis ,需要 Redis 配置文件、運(yùn)行 API 程序,可能也會(huì)有自定義的配置文件,這些配置文件需要進(jìn)行外掛,方便修改。下面以 Redis 的配置文件為例。
在配置中心中創(chuàng)建 redis.conf 的配置項(xiàng):

創(chuàng)建無狀態(tài)工作負(fù)載,鏡像選擇 s2-redis ,在數(shù)據(jù)存儲(chǔ)配置中,選擇本地存儲(chǔ):

存儲(chǔ)類型選擇配置項(xiàng),在下面的配置型可以選擇在配置中心添加的配置項(xiàng); 掛載路徑設(shè)置為 /etc/redis
在啟動(dòng)命令中配置相關(guān)命令可以讓 redis 以配置文件啟動(dòng),如果需要設(shè)置密碼,可以在參數(shù)中進(jìn)行添加,如下:

DevCloud 中的流水線
DevCloud 是一個(gè)開發(fā)平臺(tái),包含了代碼托管、項(xiàng)目任務(wù)管理、構(gòu)建、部署等。下面以一個(gè) vue 的示例來介紹怎樣從代碼提交到部署到 CCE 中。
1、創(chuàng)建一個(gè)空白的 vue 項(xiàng)目 vue-demo ,并上傳到 DevCloud 中;
2、項(xiàng)目的根目錄中添加 Dockerfile 文件,內(nèi)容如下:
FROM?swr.cn-north-4.myhuaweicloud.com/xxx/s2-nginx:latest
COPY?.?/usr/share/nginx/html/
EXPOSE?80
CMD?["nginx",?"-g",?"daemon?off;"]
3、在編譯構(gòu)建中添加一個(gè)任務(wù),任務(wù)中添加兩個(gè)構(gòu)建步驟,如下圖:

在命令的最下面添加 cp Dockerfile ./dist
4、配置“制作鏡像并推送到 SWR 倉庫”:

工作目錄:設(shè)置為 ./dist ,此目錄是執(zhí)行 docker build 的目錄,所以上面的命令中需要將 Dockerfile 復(fù)制到 dist 目錄中;
5、手動(dòng)執(zhí)行配置好的任務(wù),順利的話會(huì)在我的鏡像中可以看到名為 vue-demo 的鏡像;
6、在無工作負(fù)載中創(chuàng)建一個(gè)工作負(fù)載 nginx-test ,鏡像選擇 vue-demo ;
7、在部署中創(chuàng)建一個(gè)任務(wù),添加一個(gè)部署步驟:Kubernates 部署,如下:

8、在流水線中兩個(gè)步驟構(gòu)建和部署,分別選擇上面創(chuàng)建的構(gòu)建任務(wù)和部署任務(wù):

9、設(shè)置流水線中的執(zhí)行計(jì)劃:

代碼提交時(shí)觸發(fā),并且設(shè)置為包含 master ,當(dāng)有代碼推送到 master 分支時(shí)就會(huì)觸發(fā)流水線,進(jìn)行構(gòu)建和部署。
流水線參數(shù)
每次推送代碼進(jìn)行構(gòu)建,然后制作鏡像并推送到 SWR 倉庫,鏡像的版本期望能加 1 ,而且部署時(shí)使用最新的版本進(jìn)行部署,這就需要使用流水線的參數(shù)了:
1、在流水線參數(shù)設(shè)置中進(jìn)行參數(shù)的添加

參數(shù)名:tag 類型:自增長 默認(rèn)值:隨便定義,這里為 1.0.0 運(yùn)行時(shí)設(shè)置:設(shè)置為開啟
2、在構(gòu)建任務(wù)的參數(shù)設(shè)置中添加參數(shù)

參數(shù)名:tag 類型:字符串 運(yùn)行時(shí)設(shè)置:設(shè)置為開啟
3、在部署任務(wù)的參數(shù)設(shè)置中添加參數(shù)

參數(shù)名:tag 類型:字符串 運(yùn)行時(shí)設(shè)置:設(shè)置為開啟
4、構(gòu)建任務(wù)的”制作鏡像并推送到 SWR 倉庫“ 步驟中的鏡像標(biāo)簽設(shè)置修改為 ${tag}

5、部署任務(wù)的 ”Kubernetes 部署“ 中的鏡像版本也修改為 ${tag} ;
6、修改流水線的構(gòu)建任務(wù),tag 修改為 ${tag} ,如下圖:

流水線的 tag 設(shè)置完后,當(dāng)再進(jìn)行代碼推送就會(huì)自動(dòng)構(gòu)建并生成新的鏡像版本,并部署到 CCE 的集群中。
