博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于k8s、docker、jenkins构建springboot服务实践笔记
阅读量:3948 次
发布时间:2019-05-24

本文共 3249 字,大约阅读时间需要 10 分钟。

本文实践了基于k8s、docker、jenkins构建springboot服务

因为各种原因,文中docker私有仓库和k8s的安装命令不可用,构建脚本需要修改
环境准备和修改后的脚本请看下文,
最终构建成功springboot的持续集成环境。

一、环境准备

docker安装

docker搭建私有仓库
k8s环境准备
jenkins安装
springboot测试项目地址

节点介绍

192.168.199.131 docker私有仓库节点
192.168.199.137 k8s节点
192.168.199.138 jenkins 节点

需要在三个节点上增加域名信息

vi /etc/hosts
192.168.199.131 node.docker.registry
192.168.199.137 node.k8s
192.168.199.138 node.jenkins

补充命令

开机自动启动Docker
sudo chkconfig docker on

二、 编写yaml脚本

进入k8s节点

# cd /data/boot# vi tmp.yaml

tmp.yaml的内容为

apiVersion: apps/v1kind: Deploymentmetadata:  name: data-lake-deploymentspec:  selector:    matchLabels:      app: data-lake #全局标识  replicas: 1   template:     metadata:      labels:        app: data-lake    spec:      hostAliases:      - ip: "10.108.211.000"        hostnames:        - "tsl.com"      containers:      - name: data-lake #容器名        image: node.docker.registry:5000/waylau/docker-spring-boot  #换成自己的镜像地址        ports:        - name: link2          containerPort: 32111 #需要暴露的端口          protocol: TCP---apiVersion: v1kind: Servicemetadata:  name: data-lake-servicespec:  type: NodePort  selector:    app: data-lake  ports: #设置外部访问    - name: link1      port: 8080 #容器内端口      nodePort: 32111 #外部访问端口 相当于docker的-p 32000:8080

三、创建jenkins任务

1、任务名称:springboottest

2、任务类型:自由风格

3、创建github访问Credential,

Credential类型:username with password,写
你的github帐号密码,

5、创建构建脚本

tag=$( date +'%Y%m%d%H%M' )echo $tag >version_springcloudtest.txtecho $tag

在这里插入图片描述

6、创建ssh server

系统管理-〉系统设置菜单-〉publish over ssh
需要创建2个ssh帐号,
k8s节点的帐号node.k8s
docker私有仓库节点帐号node.docker.registry
在这里插入图片描述

7、增加构建步骤-Send files or execute commands over SSH

SSH-Server选node.docker.registry
Transfer Set:Source files 值为version_springcloudtest.txt
Exec command:

version_file=version_springcloudtest.txttag=$( cat $version_file )dockerhost=192.168.199.131cd /opt/dockerrm -rf * git clone https://github.com/bones4/docker-demos.gitcd /opt/docker/docker-demos/samples/spring-bootmvn clean packagecd /opt/docker/docker-demos/samples/spring-boot/src/main/dockercp Dockerfile  /opt/docker/docker-demos/samples/spring-boot/targetcd /opt/docker/docker-demos/samples/spring-boot/targetdocker build -t  waylau/docker-spring-boot:$tag   .docker tag waylau/docker-spring-boot:$tag  $dockerhost:5000/waylau/docker-spring-boot:$tagdocker push $dockerhost:5000/waylau/docker-spring-boot:$tag

8、增加构建步骤-Send files or execute commands over SSH

SSH-Server选node.k8s
Transfer Set:Source files 值为version_springcloudtest.txt
Exec command:

version_file=version_springcloudtest.txttag=$( cat $version_file )dockerhost=192.168.199.131kubectl   delete deployment data-lake-deploymentkubectl   delete svc data-lake-service cd /data/boot/rm -rf  app.yamlcp  tmp.yaml app.yamlp_new_version=docker-spring-boot:$tagecho $p_new_versionsed -i "s/docker-spring-boot/$p_new_version/" app.yamlsed -i "s/node.docker.registry/$dockerhost/" app.yamlkubectl create -f  /data/boot/app.yaml

四、测试jenkins构建任务

1、在gitlub上修改代码并提交

在这里插入图片描述2、重新执行构建在这里插入图片描述
3、浏览器中查看测试站点,发现已更新到最新版。

在这里插入图片描述

五、常见问题

如果把相关环境迁移到其他的局域网内

1、装私人仓库,
1、设hosts,
3、设仓库和k8s节点的/etc/docker/daemon.json,增加镜像和https白名单

vi /etc/docker/daemon.json{  "registry-mirrors": ["https://registry.docker-cn.com"],  "insecure-registries":["192.168.199.131:5000"]}

4、检查selinux是否禁用,如果没禁用,报错500,

将selinux禁用#setenforce 0#getenforce

转载地址:http://sthwi.baihongyu.com/

你可能感兴趣的文章
Android 默认暗码
查看>>
Android 系列 1.3了解Android版本
查看>>
Android 系列 6.28使用正确的复数格式化
查看>>
Android 系列 6.29创建在两个活动之间显示的加载屏幕
查看>>
Android的Gradle技巧 1.2配置SDK版本和其他默认值
查看>>
Android的Gradle技巧 1.3从命令行执行Gradle构建
查看>>
Android的Gradle技巧 1.4从Android Studio执行Gradle构建
查看>>
Android的Gradle技巧 1.5添加Java库依赖关系
查看>>
Android的Gradle技巧 1.6使用Android Studio添加库依赖关系
查看>>
Android的Gradle技巧 1.7配置存储库
查看>>
android Collections 排序,
查看>>
Android的Gradle技巧 2.1设置项目属性
查看>>
Android的Gradle技巧 2.2将应用程序从Eclipse ADT移植到Android Studio
查看>>
Android的Gradle技巧 2.3从Eclipse移植应用程序ADT使用Eclipse
查看>>
昂山素季 Aung San Suu Kyi
查看>>
AI 人工智能第一课 从贝叶斯定理开始
查看>>
朴素贝叶斯python实现
查看>>
Logistic回归原理及公式推导
查看>>
并发性与并行性 并发性与并行性
查看>>
惰性求值,可组合和模块化的JavaScript
查看>>