华为云服务器部署初探
共 2137字,需浏览 5分钟
·
2022-01-14 10:26
最近玩了下华为云,遇到了一些坑,做下记录。
华为云有很多的服务,文中会涉及到:
CCE ECS 弹性公网IP DevCloud
创建自己的镜像
因为购买的服务器为鲲鹏服务器,而开源镜像中心的镜像都是 x86 的,所以直接通过镜像中心的镜像进行安装是无法正常运行的。有两种方式可以解决:
1、编辑 YAML 文件,将镜像修改为支持 arm 的镜像,比如:arm64v8/nginx ;
2、创建自己的镜像,然后推送到镜像仓库中。
第一种方式测试过,但没有成功。制作自己的镜像的步骤如下:
1、ssh 进入到 ECS 服务器;
2、执行下面命令进行操作:
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 的配置文件为例。
在配置中心中创建 redis.conf 的配置项:
创建无状态工作负载,镜像选择 s2-redis ,在数据存储配置中,选择本地存储:
存储类型选择配置项,在下面的配置型可以选择在配置中心添加的配置项; 挂载路径设置为 /etc/redis
在启动命令中配置相关命令可以让 redis 以配置文件启动,如果需要设置密码,可以在参数中进行添加,如下:
DevCloud 中的流水线
DevCloud 是一个开发平台,包含了代码托管、项目任务管理、构建、部署等。下面以一个 vue 的示例来介绍怎样从代码提交到部署到 CCE 中。
1、创建一个空白的 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 ,此目录是执行 docker build 的目录,所以上面的命令中需要将 Dockerfile 复制到 dist 目录中;
5、手动执行配置好的任务,顺利的话会在我的镜像中可以看到名为 vue-demo 的镜像;
6、在无工作负载中创建一个工作负载 nginx-test ,镜像选择 vue-demo ;
7、在部署中创建一个任务,添加一个部署步骤:Kubernates 部署,如下:
8、在流水线中两个步骤构建和部署,分别选择上面创建的构建任务和部署任务:
9、设置流水线中的执行计划:
代码提交时触发,并且设置为包含 master ,当有代码推送到 master 分支时就会触发流水线,进行构建和部署。
流水线参数
每次推送代码进行构建,然后制作镜像并推送到 SWR 仓库,镜像的版本期望能加 1 ,而且部署时使用最新的版本进行部署,这就需要使用流水线的参数了:
1、在流水线参数设置中进行参数的添加
参数名:tag 类型:自增长 默认值:随便定义,这里为 1.0.0 运行时设置:设置为开启
2、在构建任务的参数设置中添加参数
参数名:tag 类型:字符串 运行时设置:设置为开启
3、在部署任务的参数设置中添加参数
参数名:tag 类型:字符串 运行时设置:设置为开启
4、构建任务的”制作镜像并推送到 SWR 仓库“ 步骤中的镜像标签设置修改为 ${tag}
5、部署任务的 ”Kubernetes 部署“ 中的镜像版本也修改为 ${tag} ;
6、修改流水线的构建任务,tag 修改为 ${tag} ,如下图:
流水线的 tag 设置完后,当再进行代码推送就会自动构建并生成新的镜像版本,并部署到 CCE 的集群中。