云计算-代码开发流水线及CCE容器集群使用案例

时间:2024-01-21 12:46:22

总结自己在使用华为云商业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

新建构建-普通方式构建

云计算-代码开发流水线及CCE容器集群使用案例_redis

云计算-代码开发流水线及CCE容器集群使用案例_nginx_02

后端-maven构建

#只打包不执行单元测试
# mvn package -Dmaven.test.skip=true

# 打包:跳过单元测试;每次构建检查更新
mvn clean package -Dmaven.test.skip=true -U -e -X -B

云计算-代码开发流水线及CCE容器集群使用案例_redis_03

前端-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

云计算-代码开发流水线及CCE容器集群使用案例_redis_04

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}

新建保存

云计算-代码开发流水线及CCE容器集群使用案例_nginx_05

新建构建-模板方式构建

填写完基本信息,进入构建模板,选择【自定义模板】,选择模板。

云计算-代码开发流水线及CCE容器集群使用案例_nginx_06

云计算-代码开发流水线及CCE容器集群使用案例_docker_07


部署redis举例

实现实例重启时有初始密码

本地创建2个文件redis.conf、Dockerfile

密码尽量避免感叹号;注释另起一行,不能跟在后面。

#改成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

云计算-代码开发流水线及CCE容器集群使用案例_nginx_08

填写负载基本信息

云计算-代码开发流水线及CCE容器集群使用案例_nginx_09

容器设置

选择测试镜像

test-cce-ismart-service/test-report-service:v1.2202060801

云计算-代码开发流水线及CCE容器集群使用案例_redis_10


云计算-代码开发流水线及CCE容器集群使用案例_docker_11

设置cpu,内存

资源限制中cpu最小单位为m,1core被划分为1000m,因此cpu最小可以设置0.001core即1m。

内存最小单位为MiB,最小可以设置为1MiB。

云计算-代码开发流水线及CCE容器集群使用案例_nginx_12

数据存储

云计算-代码开发流水线及CCE容器集群使用案例_redis_13

云计算-代码开发流水线及CCE容器集群使用案例_redis_14

配置项设置

云容器引擎cce-配置中心-配置项 ConfigMap

云计算-代码开发流水线及CCE容器集群使用案例_redis_15

负载访问设置

添加服务,选择负载均衡,私网,Test-私网-ELB-iSmart-Service

注:现在4个环境的elb都已创建好,如有其他需求,需向sre提新建elb的申请后,才可选择。

云计算-代码开发流水线及CCE容器集群使用案例_nginx_16

注:不允许选择自动创建elb

云计算-代码开发流水线及CCE容器集群使用案例_nginx_17

云计算-代码开发流水线及CCE容器集群使用案例_nginx_18

负载均衡配置,无需变动

端口配置

云计算-代码开发流水线及CCE容器集群使用案例_nginx_19

云计算-代码开发流水线及CCE容器集群使用案例_redis_20

高级设置

无需变动

云计算-代码开发流水线及CCE容器集群使用案例_docker_21


创建完成

云计算-代码开发流水线及CCE容器集群使用案例_redis_22

镜像触发

测试环境,可添加镜像的触发器

进入镜像详情,可通过 更新升级-点击镜像名称 进入;或搜索容器镜像服务swr 进入

注:触发器设置,如应用设置错误,在镜像版本更新时,会将错误项目的原有正确镜像替换,故操作需十分谨慎。创建完后,必须检查一下。

云计算-代码开发流水线及CCE容器集群使用案例_docker_23

云计算-代码开发流水线及CCE容器集群使用案例_nginx_24

一般镜像名称、负载应用名称保持一致,创建完成后,页面搜索一下,确保触发应用选择正确。

云计算-代码开发流水线及CCE容器集群使用案例_docker_25

时间同步

新建负载时,直接选择打开即可

云计算-代码开发流水线及CCE容器集群使用案例_nginx_26