总体流程:

  • 在开发机开发代码后提交到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

 apiVersion: v1
kind: ReplicationController
metadata:
name: myservice1-docker
spec:
replicas: 2
selector:
app: myservice1-docker
template:
metadata:
labels:
app: myservice1-docker
spec:
containers:
- name: myservice1-docker
image: 10.211.55.4:5000/com.xxx/myservice1-docker:1.0-SNAPSHOT
imagePullPolicy: Always
ports:
- containerPort: 8080

说明:imagePullPolicy:

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

1.2、myservice1-docker-svc.yaml

 apiVersion: v1
kind: Service
metadata:
name: myservice1-docker
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: myservice1-docker

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

 #!/bin/bash
export service_name=$1
sleep_second=3 echo 'kubectl delete rc ${service_name}'
kubectl delete rc ${service_name} echo 'kubectl delete service ${service_name}'
kubectl delete service ${service_name} echo 'kubectl delete pods -l app=${service_name}'
kubectl delete pods -l app=${service_name} sleep ${sleep_second} echo 'create rc'
kubectl create -f /data/${service_name}-rc.yaml echo 'create service'
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


第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s的更多相关文章

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

    上一节完成了"当git客户端push代码到gitlab后,jenkins会立即去gitlab拉取代码并构建". 目的:本节完成jenkins自动构建之后,自动的将jar包部署到应用 ...

  2. 第三十九章 微服务CICD(1)- gitlab搭建与使用(docker版)

    一.下载docker镜像 前提:docker引擎已经安装好. docker pull gitlab/gitlab-ce gitlab是8.13.1版本. 二.启动应用 docker run -d -h ...

  3. 第四十三章 微服务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 ...

  4. 十分钟搭建微服务框架(SpringBoot +Dubbo+Docker+Jenkins源码)

    本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程 ...

  5. 第四十一章 微服务CICD(3)- jenkins + gitlab + webhooks + publish-over-ssh(1)

    一.作用 使用webhooks来实现当git客户端push代码到gitlab后,jenkins会立即去gitlab拉取代码并构建. 二.步骤 1.安装插件 ruby_runtime(Hook插件依赖于 ...

  6. springcloud(十四):搭建Zuul微服务网关

    springcloud(十四):搭建Zuul微服务网关 1. 2. 3. 4.

  7. Gradle 1.12用户指南翻译——第四十二章. Announce插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  8. Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  9. Gradle 1.12用户指南翻译——第四十五章. 应用程序插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

随机推荐

  1. jquery 农历日历 可自适应

    在网上找了许多大牛做的农历日历,但是不是不符合项目中的要求,就是本身就有问题有Bug ,把大牛门的做日历看了n遍 自己又改造了一遍得到了这个:随后日历又要做个自适应的长宽,又在js中改造代码..... ...

  2. JS-获取URL请求参数

    前言:原来做过一个项目,需要实现一个页面打印的功能,由于项目中使用了AngularJS+Bootstrap等前端框架,需要打印的页面又在弹出框中,使用了Bootstrap的模态框后发现打印的效果不太好 ...

  3. 用SQL语句获得一个存储过程返回的表

    1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...

  4. cacti应用

    cacti被很多IDC/CDN提供商用来进行带宽计算使用:带宽的95计费(95th Percentile charging) 95计费法是CDN常用计费方法: CDN基本上是每月结一次款.每5分钟取一 ...

  5. 【JAVA】【Eclipse】出现This element neither has attached source nor attached Javadoc...的解决方法

    This element neither has attached source nor attached Javadoc and hence no Javadoc could be found Ec ...

  6. NHibernate系列文章二十五:NHibernate查询之Query Over查询(附程序下载)

    摘要 这一篇文章介绍在NHibernate 3.2里引入的Query Over查询,Query Over查询跟Criteria查询类似.首先创建IQueryOver对象,然后通过调用该对象的API函数 ...

  7. equals标准写法

    @Overridepublic boolean equals(Object obj) { //为了提高效率 if(this == obj){ return true; } //为了提供程序的健壮性 / ...

  8. Webservice接口

    快递查询接口 http://webservice.36wu.com/ExpressService.asmxip查询接口 http://webservice.36wu.com/ipService.asm ...

  9. SDH误码仪MP1570A的自动化

    MP1570A是日本安立公司的用于SDH测试的误码仪. 1.MP1570A的自动化测试场景和原理 任意测试PC--(telnet)-->测试PC(Tcl Interrupt)-->SIG_ ...

  10. C# 生成表格代碼

    public ActionResult btnExport(ReportViewModel model)         {             //接收需要导出的数据             L ...