总体流程:

  • 在开发机开发代码后提交到gitlab
  • 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry
  • 之后将在k8s-master上执行rc、service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器

第四十三章 微服务CICD(5)- gitlab + jenkins + docker中,实现了前两步。本节实现第三步

一、打通jenkins与k8s-master两台机器之间的ssh无密码访问

参考:第四十二章 微服务CICD(4)- jenkins + gitlab + webhooks + publish-over-ssh(2)

添加ssh server:

说明:由于不需要拷贝jenkins机器上的文件到10.211.55.6,所以Remote Directory不填。

二、jenkins服务配置

选择机器,执行命令。

三、k8s-master(10.211.55.6)

1、在/data/目录下创建rc和svc文件

1.1、myservice1-docker-rc.yaml

 1 apiVersion: v1
2 kind: ReplicationController
3 metadata:
4 name: myservice1-docker
5 spec:
6 replicas: 2
7 selector:
8 app: myservice1-docker
9 template:
10 metadata:
11 labels:
12 app: myservice1-docker
13 spec:
14 containers:
15 - name: myservice1-docker
16 image: 10.211.55.4:5000/com.xxx/myservice1-docker:1.0-SNAPSHOT
17 imagePullPolicy: Always
18 ports:
19 - containerPort: 8080

说明:imagePullPolicy:

  • Always:总是拉取镜像,如果tag是lastest的话,该配置是默认值
  • IfNotPresent:如果镜像不存在,则拉取镜像,如果tag不是lastest的话,该配置是默认值
  • Never

1.2、myservice1-docker-svc.yaml

 1 apiVersion: v1
2 kind: Service
3 metadata:
4 name: myservice1-docker
5 spec:
6 type: NodePort
7 ports:
8 - port: 8080
9 nodePort: 30001
10 selector:
11 app: myservice1-docker

2、在/data/script/目录下创建service_start.sh脚本

 1 #!/bin/bash
2 export service_name=$1
3 sleep_second=3
4
5 echo 'kubectl delete rc ${service_name}'
6 kubectl delete rc ${service_name}
7
8 echo 'kubectl delete service ${service_name}'
9 kubectl delete service ${service_name}
10
11 echo 'kubectl delete pods -l app=${service_name}'
12 kubectl delete pods -l app=${service_name}
13
14 sleep ${sleep_second}
15
16 echo 'create rc'
17 kubectl create -f /data/${service_name}-rc.yaml
18
19 echo 'create service'
20 kubectl create -f /data/${service_name}-svc.yaml

说明:

  • 首先删除相应service的rc,service,以及拥有app=${service_name}标签的所有pods

    • 第一次执行该脚本的时候,由于rc、service、pod不存在,删除的话,会打出error日志,无所谓(没任何影响)。
  • 之后,睡3s
  • 最后,创建rc(此时会创建pod,并从registry拉取镜像,最后根据该镜像启动容器),创建service(提供对外访问接口)

三、测试

1、本地:

  • git add --all
  • git commit -m"test k8s cicd"
  • git push origin HEAD:dev

2、查看jenkins的console

3、浏览器访问http://10.211.55.8:30001/docker/hello

gitlab + jenkins + docker + k8s的更多相关文章

  1. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

    总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...

  2. GitLab + Jenkins + Docker + Kubernetes。

    目前方案是GitLab + Jenkins + Docker + Kubernetes. 方案的工作流程如下:首先,开发人员提交代码代码提交:随后,GitLab 会自动触发Jenkins job,Je ...

  3. jenkins+docker+k8s项目发布

    目录 一.简介 二.新建docker-build工程 三.项目部署 四.访问测试 一.简介 1.该章节基于jenkins.Harbor.pipeline.k8s来做发布,如对这些不熟悉,请按以下进入学 ...

  4. Gitlab+Jenkins+Docker实现net core持续集成

    前言 在项目中使用这一套自动集成的体系之后,一直想找个时间总结出来,用于自己记录也打算将自己的所得分享给园友们,不经常写文章,可能会有错误的地方,希望各位不吝指正,我会及时的改正并表示感谢,希望大家能 ...

  5. 第四十三章 微服务CICD(5)- gitlab + jenkins + docker + dockerregsitry

    一.总体流程 部署: 开发机(mac) ip:11.11.11.11 docker:1.12.1 部署机(centos7) ip:10.211.55.4 docker:1.12.3 生产机(cento ...

  6. 实战项目部署应用到kubernetes流程(jenkins+docker+k8s)

    说明 通过jenkins构建java应用程序发布到k8s集群中 本文已一个大数据的java项目来演示构建部署过程 支持发布和回滚 支持一套模板应用不同项目 k8s基础准备 创建项目名称空间 [root ...

  7. gitlab+jenkins+docker自动构建

    docker容器部署gitlab: sudo docker run --detach \ --hostname git.gitlab.com \ --net=host \ --publish 9443 ...

  8. docker + gitlab + jenkins 搭建 CI/CD 系统

    gitlab+jenkins+docker 计算机网络大全

  9. 自动化集成:Pipeline整合Docker+K8S

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成K8S用法. 一.背景描述 分布式服务的部署 ...

随机推荐

  1. ABP中连接已有数据库执行Sql或存储过程

    一:在EntityFramework项目中创建类如:ZSWDbContext. public class ZSWDbContext : AbpDbContext { public ZSWDbConte ...

  2. TempData,跳转后的提醒

    TempData与ViewData用法一样,不同的是ViewData是当前action与对应的view中存在,TempData在下个action还有效,再往后就无效了.只是我的浅薄理解,希望不会误人子 ...

  3. 根本上解决npm install 报错“ajv-keywords@3.4.0 requires a peer of ajv@^6.9.1 but none is installed. You must install peer dependencies yourself.“

    每次项目npm install 的时候都报这个错误, 然后网上找的方法就把这个 ajv重新安装下,感觉有点麻烦, 后来有次我把npm更新了一下(我的版本是: 6.1.0),更新到了最新版本,这个问题就 ...

  4. js压缩 uglify(2)

    一.故事总有其背景 年末将至,很多闲适的时间,于是刷刷微博,接触各种纷杂的信息——美其名曰“学习”.运气不错,遇到了一个新名词,uglifyjs. 据说是用来压缩JS文件的,据说还能优化JS,据说是基 ...

  5. java web 运动前端

    [写在前面的话:]前不久刚看到过一句话:说好的技术文章应该让读者感觉增加信心,而不是失去信心.有感于这句话是因为以前觉得发一些貌似高深的,看起来nb的东西才算一篇好博文,可是多少有点炫技的成分.可是后 ...

  6. Origin8.0使用心得(不定时更新)

    如何画双Y轴坐标? 网上的教程很多,有点鱼龙混杂的感觉,今天整理一下最简单的方法,备忘. 有3组数据,1组自变量,2组因变量.如何在同一张图下使用同一个X轴,但左边的Y轴与右边的Y轴的刻度不一样? 最 ...

  7. CentOS安装Oracle官方JRE

    CentOS自带的JRE是OpenJDK,因为一些原因,需要换用Oracle官方出品的JRE. Oracle JRE下载地址http://java.com/zh_CN/(下载时注意选择相应版本) 可以 ...

  8. ADO编程:error C2011: 'LockTypeEnum' : 'enum' type redefinition

     C++ Code  123   // Import the ADO type library #import "C:\\Program Files\\Common Files\\syste ...

  9. poj 2987(最大权闭合图+割边最少)

    题目链接:http://poj.org/problem?id=2987 思路:标准的最大权闭合图,构图:从源点s向每个正收益点连边,容量为收益:从每个负收益点向汇点t连边,容量为收益的相反数:对于i是 ...

  10. CentOS中Apache虚拟主机(virtualHost)设置在/home目录下的若干问题

    在Ubuntu中安装LAMP是非常简单的意见事情.但是在CentOS中却遇到了很多问题. 首先是CentOS中必须手动配置iptables,把80端口开放出来,不然,是访问不到的,开放80端口在/et ...