在前文已经提到了关于自建k8s的文章。而且还涉及到如何搭建基于springcloud alibaba提下的微服务的基础服务。
那现在面临的问题就是如何进行发布应用到集群。以下正文即是关于devops的整体搭建过程
1、jenkins
1)部署
这里部署jenkins的服务使用的是docker,docker-compose如下
version: "3" # docker-compose的版本
services:
app: # 服务名称
image: jenkins/jenkins # 镜像
container_name: jenkins # 容器名
restart: always # 自动重启
environment: # 环境
TZ: Asia/Shanghai
volumes: # 数据卷
- /mnt/jenkins/jenkins_home:/var/jenkins_home
ports: # 端口映射
- "1080:8080"
- "50000:50000"
注意映射的目录一定要在宿主机存在。还有映射出来的端口一定别被别的服务占用 。这样映射出的jenkins的web端口是1080。
后面就是按照jenkins的提示流程进行安装即可。这里面还需要一个插件。需要在
系统管理->插件管理->可选插件 中进行搜索“build-timestamp”,安装后重启jenkins后插件安装完成。
2)配置插件
系统管理->系统配置 中搜索 “Build Timestamp”,修改时间格式为无分隔符的效果
3)配置节点
配置jenkins的node节点
配置节点这里使用ssh进行通信,需要注意的按照贴图记性补充即可 【工作目录需要提前创建好】
配置好了节点之后。节点能正常保持在线状态即可。
4)配置git服务key
这里配置拉取git的权限并没有在jenkins的插件中进行【当然通过插件也是可以的。】这里是在jenkins的docker服务中生成了密码加到了git服务中。
进入jenkins
docker exec -it [container_id] /bin/bash
按照这篇文件进行生成ssh公钥,并加到gitlab.com或者其他版本托管服务中去。
centos下生成ssh公钥_匿称s的博客-优快云博客_centos生成ssh密钥一 、设置git的user name和email:$ git config --global user.name "test"$ git config --global user.email "test@gmail.com"二、生成SSH密钥过程:1.查看是否已经有了ssh密钥:cd ~/.ssh如果没有密钥则不会有此文件夹,有则备份删除2.生存密钥:$ sshhttps://blog.youkuaiyun.com/bh451326803/article/details/52687449 配置好公钥之后需要在jenkins内部先拉取一下【一定要先拉取一下,因为有个confrm需要确认下...】
2、开通阿里云镜像仓库
先注册一个阿里云的账号。之后开通阿里云的镜像仓库,个人版即可。设置访问凭证密码-用于后期k8s拉取镜像服务使用
3、打包服务器配置maven
下载后maven后。解压到服务器中的一个目录即可,在构建流程中就直接写的绝对路径来使用maven的,所以没配置环境变量。
4、构建基础镜像
下载jdk包 jdk-8u201-linux-x64.tar.gz,并写好Dockerfile,dockerfile的内容如下
FROM centos:centos7
MAINTAINER ******
RUN mkdir /usr/local/jdk
WORKDIR /usr/local/jdk
ADD jdk-8u201-linux-x64.tar.gz /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_201
ENV JRE_HOME /usr/local/jdk/jdk1.8.0_201/jre
ENV PATH $JAVA_HOME/bin:$PATH
在dockerfile所在目录执行命令生成镜像
docker build -t jdk:1.8 .
5、生成k8s拉取镜像仓库的凭证
在k8s集群的master节点进行生成凭证。命令如下
kubectl create secret docker-registry my-aliyun --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> --namespace=<namespace>
your-name:登录阿里云用的账号【我的阿里云账号是邮箱】
your-pwd: 在阿里云镜像仓库中设置的凭证密码
your-email: 非必须
namespace: 必须 需要与应用部署镜像对应的命名空间一致
6、打包服务器安装sshpass
sshpass这里用于给k8s主节点发送deployment.yaml文件使用。
yum -y install sshpass
至此需要安装和配置的都已经完成.....
----------------------------------------------------------------------------------------
下面即是关键
7、配置jenkins的构建流程
检出:拉取服务git地址的代码到本地。
打包:进入到指定的项目目录进行maven打包
生成镜像:进入到项目中的dockerflile所给在目录后将jar包打包成docker镜像。【这里项目用到的dockerfile会在后面贴出示例】
推送到阿里云镜像仓库:先登录阿里云镜像服务,后续再给镜像进行打tag,之后把镜像推送到阿里云镜像仓库。最后删除本地镜像【2个镜像】。
生成k8s的deployment参数模板:依据项目中提前写好的deployment.yaml模板进行生成自己项目的deployment.yaml。【先复制出来一个deployment.yaml,通过sed进行模板中的镜像版本号进行替换】,替换成功后推送deployment.yaml到集群的主节点。
启动镜像:根据deploy进行启动服务。
以下是项目中用到的dockfile和deployment.yaml模板
dockerfile模板。 【copy的目录要按照自己项目的实际情况进行替换】
deployment.yaml的模板。如果启动需要增加额外的参数的话请在 containers 下的 args中进行增加即可。