总结自己在使用华为云商业CI/CD代码流水和CCE容器集群部署案例
学无止尽啊
新项目构建镜像
使用华为codearts代码流水线,详细见官方文档
https://support.huaweicloud.com/productdesc-devcloud/devcloud_pdtd_00000.html
以部署report-service构建测试镜像为例
dockerfile文件
前端
FROM swr.cn-north-4.myhuaweicloud.com/ismart-common-service/share-elastic-filebeat:7.15.1
COPY filebeat_test.yml /usr/share/filebeat/filebeat.yml
COPY run.sh /usr/share/filebeat/
# 第2阶段
FROM swr.cn-north-4.myhuaweicloud.com/ismart-common-service/nginx:latest
COPY --from=build-filebeat /usr/share/filebeat /usr/share/filebeat
ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /app && mkdir -p /config && chmod -R 777 /app
# 将当前文件夹的dist文件复制到容器的/usr/share/nginx/html目录
COPY ./dist /app/dist
COPY ./test/nginx.conf /etc/nginx/nginx.conf
COPY ./test /app/dist
VOLUME ["/var/log/nginx"]
WORKDIR /app
EXPOSE 8090
# 同时运行nginx和filebeat服务
WORKDIR /usr/share/filebeat/
RUN chmod -R 777 run.sh
ENTRYPOINT ["/usr/share/filebeat/run.sh"]
# 华为云启动的时候挂载地址 容器外为/var/log/nginx/ismart-test/saasOperationPortal 容器内部地址/var/log/nginx
新建构建-普通方式构建
后端-maven构建
#只打包不执行单元测试
# mvn package -Dmaven.test.skip=true
# 打包:跳过单元测试;每次构建检查更新
mvn clean package -Dmaven.test.skip=true -U -e -X -B
前端-npm构建
最后一步,npm run build:test,会有环境的区分
export PATH=$PATH:/root/.npm-global/bin
#设置Devcloud镜像仓加速构建
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
npm config set prefix '~/.npm-global'
#如需安装node-sass
#npm config set sass_binary_site https://repo.huaweicloud.com/node-sass/
#npm install node-sass
#加载依赖
npm install
#默认构建
npm run build:test
Docker命令
前后端所有项目统一3个步骤:login + build + push
Login
是统一的
build
镜像组织
测试:test-cce-ismart-service
生产:prod-cce-ismart-service
镜像名称
自定义,命名规则:环境-项目名称 如 test-report-service
版本:v1.${BuildNumber}
指定dockerfile文件:./docker/Dockerfile_test . (注意:最后的点,不能忽略)
-t swr.cn-north-4.myhuaweicloud.com/test-cce-ismart-service/test-report-service:v1.${BuildNumber} -f ./docker/Dockerfile_test .
push
swr.cn-north-4.myhuaweicloud.com/test-cce-ismart-service/test-report-service:v1.${BuildNumber}
新建保存
新建构建-模板方式构建
填写完基本信息,进入构建模板,选择【自定义模板】,选择模板。
部署redis举例
实现实例重启时有初始密码
密码尽量避免感叹号;注释另起一行,不能跟在后面。
#改成0.0.0.0,使redis可以外部访问
bind 0.0.0.0
#关闭保护模式;其他主机的客户端连接到Redis
protected-mode no
#用守护线程的方式启动
daemonize no
#数据库个数(可选)
databases 6
#给redis设置密码
requirepass 123456abc
#redis持久化默认是no
appendonly yes
#dockerfile
FROM redis:7.0
LABEL key="xxxxx"
# 复制本地的配置文件到容器内部
COPY redis.conf /etc/redis.conf
WORKDIR /etc/
RUN ls
RUN cat redis.conf
ENTRYPOINT redis-server /etc/redis.conf
linux本地构建镜像
# 构建镜像
docker build -t test-redis:v20220705.1 -f ./Dockerfile .
上传到华为云
# 临时秘钥登录,联系SRE获取
docker login -u cn-north-1@1L4GO5C61BID9AT9LR1S -p ca82d247ec61664b1f30a20754b7ec4fdc5d78794d0f57644bf5d12bcb55a848 swr.cn-north-1.myhuaweicloud.com
# 打标
docker tag test-redis:v20220705.1 swr.cn-north-1.myhuaweicloud.com/test-cce-ismart-service/test-redis-fdd-7:v20220705.1
# 推送
docker push swr.cn-north-1.myhuaweicloud.com/test-cce-ismart-service/test-redis-fdd-7:v20220705.1
CCE集群部署负载
使用华为容器云cce集群,部署工作负载,详细参考官方文档
https://support.huaweicloud.com/function-cce/index.html
以report-service项目测试环境部署为例
创建无状态工作负载
云容器引擎cce-工作负载-无状态工作负载
选择集群 test-cce-ismart-service,选择命名空间 test
填写负载基本信息
容器设置
选择测试镜像
test-cce-ismart-service/test-report-service:v1.2202060801
设置cpu,内存
资源限制中cpu最小单位为m,1core被划分为1000m,因此cpu最小可以设置0.001core即1m。
内存最小单位为MiB,最小可以设置为1MiB。
数据存储
配置项设置
云容器引擎cce-配置中心-配置项 ConfigMap
负载访问设置
添加服务,选择负载均衡,私网,Test-私网-ELB-iSmart-Service
注:现在4个环境的elb都已创建好,如有其他需求,需向sre提新建elb的申请后,才可选择。
注:不允许选择自动创建elb
负载均衡配置,无需变动
端口配置
高级设置
无需变动
创建完成
镜像触发
测试环境,可添加镜像的触发器
进入镜像详情,可通过 更新升级-点击镜像名称 进入;或搜索容器镜像服务swr 进入
注:触发器设置,如应用设置错误,在镜像版本更新时,会将错误项目的原有正确镜像替换,故操作需十分谨慎。创建完后,必须检查一下。
一般镜像名称、负载应用名称保持一致,创建完成后,页面搜索一下,确保触发应用选择正确。
时间同步
新建负载时,直接选择打开即可