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

总体流程:
- 在开发机开发代码后提交到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的更多相关文章
- 第四十二章 微服务CICD(4)- jenkins + gitlab + webhooks + publish-over-ssh(2)
上一节完成了"当git客户端push代码到gitlab后,jenkins会立即去gitlab拉取代码并构建". 目的:本节完成jenkins自动构建之后,自动的将jar包部署到应用 ...
- 第三十九章 微服务CICD(1)- gitlab搭建与使用(docker版)
一.下载docker镜像 前提:docker引擎已经安装好. docker pull gitlab/gitlab-ce gitlab是8.13.1版本. 二.启动应用 docker run -d -h ...
- 第四十三章 微服务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 ...
- 十分钟搭建微服务框架(SpringBoot +Dubbo+Docker+Jenkins源码)
本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程 ...
- 第四十一章 微服务CICD(3)- jenkins + gitlab + webhooks + publish-over-ssh(1)
一.作用 使用webhooks来实现当git客户端push代码到gitlab后,jenkins会立即去gitlab拉取代码并构建. 二.步骤 1.安装插件 ruby_runtime(Hook插件依赖于 ...
- springcloud(十四):搭建Zuul微服务网关
springcloud(十四):搭建Zuul微服务网关 1. 2. 3. 4.
- Gradle 1.12用户指南翻译——第四十二章. Announce插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第四十五章. 应用程序插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
随机推荐
- Create a geoprocessing tool to buffer a layer and retrieve messages____sync
using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropSer ...
- 好用的一个从SharePoint导出小工具
1. 输入 Site Url(Site Collection), 然后点"load"按钮 2.选择Web后,点选需导出的文档库,然后点"Next"按钮 ...
- pip install 报错原因
1. 要在~/.pip/pip.conf中添加源的地址. 2. 在运行pip install 命令的时候加上sudo -H
- Linux系统启动级别及顺序
Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多 ...
- Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697
详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...
- 利用npoi导出Excel
npoi库是当下最流行的处理Excel.Word.PPT等Office文件格式 npoi的下载地址:http://npoi.codeplex.com/ npoi的官方学习地址: http://www. ...
- netstat命令
netstat命令会罗列出当前所有的网络连接.连接统计以及路由表信息.默认情况下,netstat命令将罗列出本地计算机所有开启的端口情况,以及它所连接的外部计算机情况. 端口就像一所房子的房门一样.数 ...
- python猜数脚本(电脑猜测)(二分法)
# coding=utf-8# 猜数# 记录猜数的过程import randomcom_result=[] #存放电脑结果,数组com_count=0 #存放电脑猜测次数ran=random.ran ...
- python基础知识---数据结构之间的转换
- RichEdit 追加 RTF
下面实现追加RTF 到 RichEdit 的功能其本质是:EM_STREAMIN 消息,详细查看 MSDN//--------------------------------------------- ...