華為云服務器部署初探

最近玩了下華為云,遇到了一些坑,做下記錄。
華為云有很多的服務,文中會涉及到:
CCE ECS 彈性公網IP DevCloud
創(chuàng)建自己的鏡像
因為購買的服務器為鯤鵬服務器,而開源鏡像中心的鏡像都是 x86 的,所以直接通過鏡像中心的鏡像進行安裝是無法正常運行的。有兩種方式可以解決:
1、編輯 YAML 文件,將鏡像修改為支持 arm 的鏡像,比如:arm64v8/nginx ;
2、創(chuàng)建自己的鏡像,然后推送到鏡像倉庫中。
第一種方式測試過,但沒有成功。制作自己的鏡像的步驟如下:
1、ssh 進入到 ECS 服務器;
2、執(zhí)行下面命令進行操作:
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
推送成功后,在我的鏡像中可以看到自制的鏡像,如下圖:


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

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

存儲類型選擇配置項,在下面的配置型可以選擇在配置中心添加的配置項; 掛載路徑設置為 /etc/redis
在啟動命令中配置相關命令可以讓 redis 以配置文件啟動,如果需要設置密碼,可以在參數中進行添加,如下:

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

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

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

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

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

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

參數名:tag 類型:自增長 默認值:隨便定義,這里為 1.0.0 運行時設置:設置為開啟
2、在構建任務的參數設置中添加參數

參數名:tag 類型:字符串 運行時設置:設置為開啟
3、在部署任務的參數設置中添加參數

參數名:tag 類型:字符串 運行時設置:設置為開啟
4、構建任務的”制作鏡像并推送到 SWR 倉庫“ 步驟中的鏡像標簽設置修改為 ${tag}

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

流水線的 tag 設置完后,當再進行代碼推送就會自動構建并生成新的鏡像版本,并部署到 CCE 的集群中。
