云效流水线+k8s半自动部署java(保姆级)
记录云效流水线的镜像创建,并存储到镜像仓库阿里自己有自己的镜像仓库,我们默认采用docker镜像进行部署,因此首先需要拥有一个镜像仓库,有了镜像仓库,没有镜像仓库,我们就无法使用k8s或者原始的docker拉取镜像,所以,首先要讲解一下如何使用阿里的镜像仓库,如果已经使用了其他的镜像仓库,可跳过这一章节。
#云效流水线镜像创建(保姆级)
前言
记录云效流水线的镜像创建,并存储到镜像仓库
一、创建镜像仓库
前言
阿里自己有自己的镜像仓库,我们默认采用docker镜像进行部署,因此首先需要拥有一个镜像仓库,有了镜像仓库,没有镜像仓库,我们就无法使用k8s或者原始的docker拉取镜像,所以,首先要讲解一下如何使用阿里的镜像仓库,如果已经使用了其他的镜像仓库,可跳过这一章节。
创建
阿里的镜像仓库地址
https://cr.console.aliyun.com/cn-hangzhou/instances
初次进入,个人版应该是未被使用的,点击个人版,会要求进行阿里的授权操作,全部授权即可,授权完成之后即可进入到个人的实力里面
点击左侧的镜像仓库进行镜像仓库的创建
默认进入是空白的并且会默认选择一个节点,上图所示,默认进入会显示华东1节点,可以点击进行切换节点
此处的节点是非共用的,例如在华东1节点创建的镜像,如果选择华北1节点是无法看到对应的镜像仓库的,此处可以根据自己的具体情况选择镜像仓库节点
选择好镜像仓库节点之后点击创建镜像仓库即可
此处的仓库名称最好取一个有标志性的名称否则,如果存在多个项目的话,无法进行镜像仓库的区分
注意:以一个微服务项目为例,可能会同时打多个jar包,多个jar包即对应多个镜像仓库,每个jar上传到对应的镜像仓库即可。
二、流水线
1.创建
进入云效控制台之后,可以看到左侧的流水线
进入之后,点击右上角的新建流水线
因为没有一个符合的模板,因此随便选择一个进入即可,下图我选择了一个java的基础模板
添加流水线源
此处以码云为例,第一次使用的话,是没有服务连接的
点击添加服务器连接创建一个新的服务连接
采用默认的服务连接即可,创建完成之后,选择自己的服务连接即可,
选择下面自己要打包成镜像的仓库以及要打包的分支,点击添加后,数据源即可添加完成
java构建上传
选择java构建上传节点
需要关注的步骤主要是java构建以及镜像上传
需要修改的点为jdk的版本和maven的版本,默认为jdk8和maven3.5,如果不符合自己的项目,可以选择切换成对应的版本
因为此处我们是要构建镜像上传,因此下一步不能采用构建物上传
镜像构建并推送至阿里云镜像仓库个人版
点击后面的减号可以剔除不需要的步骤,此处剔除构建物步骤,而后点击添加步骤,选择构建阿里镜像到个人版里即可
此处默认服务器连接会带出第一步创建的阿里镜像连接(如果非阿里,则选择的其他步骤,此处只讲阿里的镜像推送)
因为镜像是根据DockerFile进行构建的,所以在微服务,多个jar包的情况下,需要选择指定的jar对应的镜像仓库
以一个多模块的微服务项目为例
读取的目录是从项目的根目录开始一直找到对应的dockerfile文件
对目录结构不确定的,在idea中可以右键Dockerfile文件
复制下图的路径
将文件路径填写即可
具体的配置,可以参考下图进行配置
注:1.标签的话,更多标签一定要填写latest,这样每次都会生成一个最新版本的镜像,在k8s使用的时候就可以只填写名称,不用填写版本号,他自己会找最新的版本,如果写错,或者不写,每一次k8s添加容器都需要去填写版本号
2.版本号最好可以区分开,默认的time就可以
标签和buildkit版本可以根据自己的情况进行填写
如果是多模块的话,就参考上面的步骤创建多个镜像的即可,参考下图
创建完成之后
需要剔除后面的主机阶段,点击删除即可
而后点击右上角的保存并运行即可使用,点击运行即可
点击自己刚才创建的流水线
点击日志,查看
不报错,及说明已经讲镜像上传到镜像仓库了
Dockerfile编写
具体的编写可以参考下面的进行编写
# 基础镜像,当前新镜像是基于哪个镜像
FROM openjdk:8-oracle
# RUN:容器构建时需要运行的命令
ENV TZ = "Asia/Shanghai"
# ADD:将宿主机目录下的文件拷贝到镜像且 ADD 命令会自动处理 URL 和解压 tar 压缩包
WORKDIR /
ADD ./target/donger-mom-mes-3.0-executor.jar mes.jar
# 利用 chmod 可以藉以控制文件如何被他人所调用。
RUN chmod +x mes.jar
# EXPOSE:当前容器对外暴露的端口
EXPOSE 8060
# CMD:指定一个容器启动时要运行的命令。Dockerfile 中可以有多个 CMD 命令,
# 但只有最后一个生效,CMD 会被 docker run 之后的参数替换
CMD ["java", "-Xmx500m", "-jar", "mes.jar", "--spring.config.location=/etc/mes/config/application.yml"]
如果想要将配置application的配置文件挂载到k8s上的话,而不是使用jar包里的配置文件,必须要配置spring.config.location,后面的路径为读取配置文件的路径,具体的路径可以自己进行配置。
三、k8s阶段
此处的k8s默认为已经在本地搭建好,并且进入了k8s的页面,尚未在本地部署的还请参考其他k8s的部署文档
如果只是需要替换数据库和中间件这些配置项的话,这些配置项都是配置在application里面,因为一个项目是多人开发的,万一有人修改了application的配置文件,就有可能导致,部署的版本有问题,导致jar包跑不起来,因此,此处采用将application挂载到k8s的方式进行部署。
配置字典
选择项目下的配置-配置字典-创建,进入下面的弹窗
名称根据自己的需求进行填写,下一步后点击添加数据
键为固定值,application.yml,值的话,直接复制自己部署的文件内容,然后粘贴到下面的值里即可
注意:此处的端口号尽量与Dockerfile里的端口最好保持一致,以免出现不可预料的问题
先点击下面的对号,而后点击确认,一个配置字典即可创建完成
保密字典
因为docker镜像是上传到阿里的仓库的,因此需要配置保密字典,否则无法拉取镜像
选择项目-配置-保密字典-创建,即可打开下面的弹窗
名称自己填写自己适合的名称,点击下一步,选择镜像服务器信息
选择点开自己的镜像仓库,选择自己创建的一个镜像仓库
点击镜像名称就可以看到对应的路径已经用户名
下图给出了对应的用户名和地址,密码的话,为自己创还能镜像仓库时,填写的密码
如果密码忘记了,可以选择访问凭证,进行密码的重置
全部填写完成后,点击密码后面的验证按钮,提示验证完成,点击确认即可完成镜像与k8s的链接
工作负载
点击项目-应用负载-工作负载-创建-填写名称-下一步
即可进入容器组设置
点击添加容器
如果刚才完成了保密字典的设置,此时,即可以进行镜像仓库选择,选择自己设置好的镜像仓库
镜像仓库的地址则为下图框选的内容
将上图框选的复制到后面的输入框,即可看到对应镜像刷新出来,如果没有反应,则按一下回车键,他自己就会去获取对应的镜像
等到加载出来之后,点击使用默认端口,端口号就会被默认带出来
选择每次都拉取镜像,勾选下面的同步主机时区,点击对号
点击下一步,进入存储设置
然后挂载配置字典
选择配置字典,选择这个镜像的配置文件
然后选择只读,挂载路径与Dockerfile配置的路径相同
上面spring.config.location配置的是什么路径此处也应当填写什么
填写完路径之后,需要设置子路径,子路径为固定的application.yml
而后勾选特定键,键与值都填写application.yml
点击对号,然后点击下一步
此处不做任何勾选,直接点击创建
此时工作负载即创建完成
服务
创建完工作负载后,还需要创还能对应的服务,否则外界无法通过端口访问
因此必须要设置服务
服务的路径为项目-应用负载-服务-创建
因为前面已经创建了工作负载,因此此处选择指定工作负载
这里的名称应当与工作负载的名称一一对应
点击下一步之后
默认使用虚拟IP地址即可
工作负载的键默认填写app,值对应工作负载的名称
下面的名称,容器端口,服务端口,都填写工作负载的端口即可,具体的参考上图
点击下一步之后,会进入到下图,所在的界面
勾选外部访问,访问模式选择NodePort即可
最后点击创建,服务即创建完成
如果要访问对应的服务
以下图的wms服务为例,地址应当为当前k8s的路径+外部访问的端口
下面的wms的访问地址应当为http://192.168.110.72:31333
更多推荐
所有评论(0)