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

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的更多相关文章
- 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...
- GitLab + Jenkins + Docker + Kubernetes。
目前方案是GitLab + Jenkins + Docker + Kubernetes. 方案的工作流程如下:首先,开发人员提交代码代码提交:随后,GitLab 会自动触发Jenkins job,Je ...
- jenkins+docker+k8s项目发布
目录 一.简介 二.新建docker-build工程 三.项目部署 四.访问测试 一.简介 1.该章节基于jenkins.Harbor.pipeline.k8s来做发布,如对这些不熟悉,请按以下进入学 ...
- Gitlab+Jenkins+Docker实现net core持续集成
前言 在项目中使用这一套自动集成的体系之后,一直想找个时间总结出来,用于自己记录也打算将自己的所得分享给园友们,不经常写文章,可能会有错误的地方,希望各位不吝指正,我会及时的改正并表示感谢,希望大家能 ...
- 第四十三章 微服务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 ...
- 实战项目部署应用到kubernetes流程(jenkins+docker+k8s)
说明 通过jenkins构建java应用程序发布到k8s集群中 本文已一个大数据的java项目来演示构建部署过程 支持发布和回滚 支持一套模板应用不同项目 k8s基础准备 创建项目名称空间 [root ...
- gitlab+jenkins+docker自动构建
docker容器部署gitlab: sudo docker run --detach \ --hostname git.gitlab.com \ --net=host \ --publish 9443 ...
- docker + gitlab + jenkins 搭建 CI/CD 系统
gitlab+jenkins+docker 计算机网络大全
- 自动化集成:Pipeline整合Docker+K8S
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成K8S用法. 一.背景描述 分布式服务的部署 ...
随机推荐
- jquery js 动态加载 js文件
jquery方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- java 遍历String
Java字符串是一系列的Unicode字符序列,但是,它却常常被误认为是char序列.于是,我们经常这样来遍历字符串: package testchar; public class TestChar2 ...
- poj 1129(dfs+图的四色定理)
题目链接:http://poj.org/problem?id=1129 思路:根据图的四色定理,最多四种颜色就能满足题意,使得相邻的两部分颜色不同.而最多又只有26个点,因此直接dfs即可. #inc ...
- push certificate
developer_identity.cer <= download from Applemykey.p12 <= Your private key openssl x509 -in de ...
- 1、手把手教React Native实战之环境搭建
React Native 的宗旨是,学习一次,高效编写跨平台原生应用. 在Windows下搭建React Native Android开发环境 1.安装jdk 2.安装sdk 在墙的环境下,为了 ...
- 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...
- JavaWeb项目中文乱码问题
1.从浏览器读数据乱码(post 请求方式) 前提是前端页面是UTF-8编码,因为服务器端默认采用ISO解码,所以乱码,在读取前加上: request.setCharacterEncoding(&qu ...
- [UVa OJ] Longest Common Subsequence
This is the classic LCS problem. Since it only requires you to print the maximum length, the code ca ...
- cdr X6 64位32位缩略图补丁包
cdr X6 64位32位缩略图补丁包下载 安装了X6没有缩略图的话,点击下面链接下载安装插件即可 点击下载
- Direct Line Guidance Odometry论文阅读笔记
摘要: 本文特色:使用线引导关键点的选择.本文提出这个的论点是:线上的点比图像的其他部分的点更好,而且线上存在更好的关键点.选择线上的点可以筛选过滤掉不太明显的点,从而提高效率. 点和线: 系统使用点 ...