在前文已经提到了关于自建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的博客-CSDN博客_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.csdn.net/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中进行增加即可。 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐