|
西虹网
西虹网 概述 西虹网
西虹网 西虹网
西虹网 西虹网
西虹网 DevOps相关文件主要有Dockerfile、Jenkinsfile、deployment.yaml、kustomization.yaml、settings.xml。持续发布一直是行业的佼佼者,在业内好评如潮,备受大众所青睐。 西虹网
西虹网 西虹网
西虹网 这些文件存放在CICD代码库中。 西虹网
西虹网 西虹网
西虹网 地址:https://gitlab.corp.yatsenglobal.com/ops/yatsen-cicd-pipeline.git 西虹网
西虹网 西虹网
西虹网 代码目录结构 西虹网
西虹网 西虹网
西虹网 其作用分别为: 西虹网
西虹网 西虹网
西虹网 文件 作用 详细 西虹网
西虹网 西虹网
西虹网 Dockerfile 用于构建镜像 构建镜像必须,API等不需要部署的项目无需此文件 西虹网
西虹网 西虹网
西虹网 Jenkinsfile 用于使用Jenkins控制整个构建部署过程 此文件必须 西虹网
西虹网 西虹网
西虹网 deployment.yaml 用于在k8s集群部署应用 需要自由控制在k8s中部署的应用时,可以编写此文件 西虹网
西虹网 西虹网
西虹网 kustomization.yaml 文件声明了kustomize程序提供的自定义 提供一种可以重复使用同一套配置的声明式应用管理 西虹网
西虹网 西虹网
西虹网 settings.xml 用于在Java Maven构建过程中的Maven setting设置 Java应用编译时,需要用到 西虹网
西虹网 西虹网
西虹网 基础JAVA镜像 西虹网
西虹网 西虹网
西虹网 基础Java镜像为Java应用的基础应用,是在centos7.6镜像之上构建的,其中步骤主要有: 西虹网
西虹网 西虹网
西虹网 源镜像、环境初始化、添加字体、添加nacos退出脚本、添加ssh免密登录、修改时区、更新系统、添加Java环境。 西虹网
西虹网 西虹网
西虹网 基础Java镜像包含了除可执行Jar包及特殊配置之外的所有设置,使Java应用在下层得到统一,具体脚本如下: 西虹网
西虹网 西虹网
西虹网 FROM centos:7.6.1810 西虹网
西虹网 西虹网
西虹网 LABEL maintainer yatsen@yatsenglobal.com 西虹网
西虹网 西虹网
西虹网 COPY nacos-logout.sh / 西虹网
西虹网 西虹网
西虹网 COPY eureka-logout.sh / 西虹网
西虹网 西虹网
西虹网 COPY simsun.ttf /usr/share/fonts/myfonts/simsun.ttf 西虹网
西虹网 西虹网
西虹网 COPY ip_guard.sh ip_guard.sh 西虹网
西虹网 西虹网
西虹网 COPY id_rsa /root/.ssh/ 西虹网
西虹网 西虹网
西虹网 COPY id_rsa.pub /root/.ssh/ 西虹网
西虹网 西虹网
西虹网 COPY known_hosts /root/.ssh/ 西虹网
西虹网 西虹网
西虹网 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 西虹网
西虹网 西虹网
西虹网 && rm -rf /etc/yum.repos.d/* 西虹网
西虹网 西虹网
西虹网 && curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 西虹网
西虹网 西虹网
西虹网 && curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 西虹网
西虹网 西虹网
西虹网 && sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/* 西虹网
西虹网 西虹网
西虹网 && yum makecache -y 西虹网
西虹网 西虹网
西虹网 && yum upgrade -y 西虹网
西虹网 西虹网
西虹网 && yum install -y java-1.8.0-openjdk-devel.x86_64 iproute kde-l10n-Chinese glibc-common mkfontscale fontconfig openssh openssh-clients rsync less 西虹网
西虹网 西虹网
西虹网 && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 西虹网
西虹网 西虹网
西虹网 && yum clean all 西虹网
西虹网 西虹网
西虹网 && chmod +x ip_guard.sh 西虹网
西虹网 西虹网
西虹网 && chmod 600 /root/.ssh/id_rsa 西虹网
西虹网 西虹网
西虹网 && chmod 777 nacos-logout.sh eureka-logout.sh 西虹网
西虹网 西虹网
西虹网 && cd /usr/share/fonts/myfonts 西虹网
西虹网 西虹网
西虹网 && mkfontscale 西虹网
西虹网 西虹网
西虹网 && mkfontdir 西虹网
西虹网 西虹网
西虹网 && fc-cache -fv 西虹网
西虹网 西虹网
西虹网 ENV LC_ALL=zh_CN.UTF-8 TIMEZONE=GMT+8 JAVA_OPTS=CONTAINER_CORE_LIMIT= 西虹网
西虹网 西虹网
西虹网 所需文件如下 西虹网
西虹网 西虹网
西虹网 基础Nginx镜像 西虹网
西虹网 西虹网
西虹网 目前前端代码编译为静态文件后放在nginx下提供服务,所以编写了基础nginx镜像,针对前端静态代码文件提供统一的基础镜像。 西虹网
西虹网 西虹网
西虹网 基础nginx镜像来源于系统nginx镜像,并修改了时区,添加了自定义nginx.conf。具体脚本如下: 西虹网
西虹网 西虹网
西虹网 【FROM nginx:latest】 表示要制作的镜像的源镜像 西虹网
西虹网 西虹网
西虹网 RUN命令做环境初始化,修改了时区。 西虹网
西虹网 西虹网
西虹网 【COPY base/base-nginx/nginx.conf /etc/nginx/nginx.conf】为添加了自定义nginx.conf 西虹网
西虹网 西虹网
西虹网 FROM nginx:latest 西虹网
西虹网 西虹网
西虹网 LABEL maintainer sheng.zhuang@yatsenglobal.com 西虹网
西虹网 西虹网
西虹网 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone 西虹网
西虹网 西虹网
西虹网 COPY base/base-nginx/nginx.conf /etc/nginx/nginx.conf 西虹网
西虹网 西虹网
西虹网 Java应用镜像: 西虹网
西虹网 西虹网
西虹网 Java应用镜像为最终可执行的镜像,来源于基础Java镜像,包含同事们辛苦编写的Java代码编译的可执行Jar包,并最终运行在k8s容器管理工具中为客户提供服务。 西虹网
西虹网 西虹网
西虹网 Java应用镜像并不是必须来源于基础Java镜像,制作基础Java镜像是为了统一环境,简化开发。 西虹网
西虹网 西虹网
西虹网 Java应用镜像具体脚本如下: 西虹网
西虹网 西虹网
西虹网 ARG BASE_IMAGE=yatsen-registry-vpc.cn-shenzhen.cr.aliyuncs.com/base/base-java:centos7.6-jdk-8 西虹网
西虹网 西虹网
西虹网 FROM ${BASE_IMAGE} 西虹网
西虹网 西虹网
西虹网 LABEL maintainer=dang.wu@yatsenglobal.com 西虹网
西虹网 西虹网
西虹网 ENV spring_profiles_active=dev spring_cloud_nacos_discovery_namespace=${NACOS_NAMESPACE} spring_cloud_nacos_config_namespace=${NACOS_NAMESPACE} NACOS_HOST=${NACOS_HOST} NACOS_PORT=${NACOS_PORT} server_port=${SERVER_PORT} 西虹网
西虹网 西虹网
西虹网 COPY mall-activity-biz/target/mall-activity-biz.jar app.jar 西虹网
西虹网 西虹网
西虹网 ENV server_name mall-activity-biz 西虹网
西虹网 西虹网
西虹网 RUN mkdir -p /releases/releases/cert/ 西虹网
西虹网 西虹网
西虹网 ENTRYPOINT java ${JAVA_OPTS} -Dfile.encoding=utf-8 -Dspring.security.strategy=MODE_INHERITABLETHREADLOCAL -Djava.security.egd=file:/dev/http://www.manongjc.com/detail/urandom -XX:ActiveProcessorCount=${CONTAINER_CORE_LIMIT} -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:MinRAMPercentage=70.0 -jar app.jar --spring.profiles.active=${spring_profiles_active} --NACOS-HOST=${NACOS_HOST} --NACOS-PORT=${NACOS_PORT} 西虹网
西虹网 西虹网
西虹网 前端nginx应用镜像: 西虹网
西虹网 西虹网
西虹网 前端nginx应用镜像为可执行的nginx镜像加上前端代码及配置所构建的镜像。包含前端同事们辛苦编写的前端代码编译的静态文件,并最终运行在k8s容器管理工具中为客户提供服务。 西虹网
西虹网 西虹网
西虹网 前端镜像具体脚本如下(目前前端镜像分两次构建,后期会优化为一次构建): 西虹网
西虹网 西虹网
西虹网 ARG BASE_IMAGE=yatsen-registry-vpc.cn-shenzhen.cr.aliyuncs.com/base/nginx:latest 西虹网
西虹网 西虹网
西虹网 FROM ${BASE_IMAGE} 西虹网
西虹网 西虹网
西虹网 LABEL maintainer sheng.zhuang@yatsenglobal.com 西虹网
西虹网 西虹网
西虹网 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone 西虹网
西虹网 西虹网
西虹网 COPY base/base-admin-nginx/default.conf /etc/nginx/conf.d/default.conf 西虹网
西虹网 西虹网
西虹网 RUN mkdir -p /var/log/nginx/ 西虹网
西虹网 西虹网
西虹网 COPY dist/ /data/www/mall-web-admin 西虹网
西虹网 西虹网
西虹网 Jenkinsfile: 西虹网
西虹网 西虹网
西虹网 Jenkinsfile是Jenkins流水线Pipeline的构建代码脚本。将Jenkins构建任务用代码的形式进行管理和维护。下方构建权限给开发者。 西虹网
西虹网 西虹网
西虹网 Jenkinsfile常用方式将流水线分按照功能分为逻辑上的四段:流水线检查、初始化、拉取代码(Git)、编译构建(Package)、制作镜像(Build) 、部署(Deploy),如下所示: 西虹网
西虹网 西虹网
西虹网 后端: 西虹网
西虹网 西虹网
西虹网 @Library('yatsen-cicd-pipeline') _ 西虹网
西虹网 西虹网
西虹网 pipeline { 西虹网
西虹网 西虹网
西虹网 agent { 西虹网
西虹网 西虹网
西虹网 kubernetes { 西虹网
西虹网 西虹网
西虹网 #在jenkins Configure Clouds中配置的名字 西虹网
西虹网 西虹网
西虹网 cloud 'kubernetes' 西虹网
西虹网 西虹网
西虹网 } 西虹网
西虹网 西虹网
西虹网 前端: 西虹网
西虹网 西虹网
西虹网 普通前端 西虹网
西虹网 西虹网
西虹网 @Library('yatsen-cicd-pipeline') _ 西虹网
西虹网 西虹网
西虹网 pipeline { 西虹网
西虹网 西虹网
西虹网 agent { 西虹网
西虹网 西虹网
西虹网 kubernetes { 西虹网
西虹网 西虹网
西虹网 #在jenkins Configure Clouds中配置的名字 西虹网
西虹网 西虹网
西虹网 cloud 'kubernetes' 西虹网
西虹网 西虹网
西虹网 } 西虹网
西虹网 西虹网
西虹网 共享前端 西虹网
西虹网 西虹网
西虹网 @Library('yatsen-cicd-pipeline') _ 西虹网
西虹网 西虹网
西虹网 pipeline { 西虹网
西虹网 西虹网
西虹网 agent { 西虹网
西虹网 西虹网
西虹网 kubernetes { 西虹网
西虹网 西虹网
西虹网 #在jenkins Configure Clouds中配置的名字 西虹网
西虹网 西虹网
西虹网 cloud 'kubernetes' 西虹网
西虹网 西虹网
西虹网 } 西虹网
西虹网 西虹网
西虹网 } 西虹网
西虹网 西虹网
西虹网 上述Jenkins使用的工具解析: 西虹网
西虹网 西虹网
西虹网 打包镜像并且推送镜像到镜像仓库用的命令是: 西虹网
西虹网 西虹网
西虹网 kaniko 西虹网
西虹网 西虹网
西虹网 参看文档:https://github.com/GoogleContainerTools/kaniko#using-kaniko 西虹网
西虹网 西虹网
西虹网 部署使用的命令是 西虹网
西虹网 西虹网
西虹网 kustomize 西虹网
西虹网 西虹网
西虹网 参考文档: 西虹网
西虹网 西虹网
西虹网 https://www.qikqiak.com/post/kustomize-101/ 西虹网
西虹网 西虹网
西虹网 https://github.com/kubernetes-sigs/kustomize 西虹网
西虹网 西虹网
西虹网 https://kustomize.io/ 西虹网
西虹网 西虹网
西虹网 原文地址:https://www.cnblogs.com/Mr-Axin/p/14744653.html |
|