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

时间: 2024-10-29 19:11:46

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

第四十四章 微服务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无密码访问

GitLab + Jenkins + Docker + Kubernetes。

目前方案是GitLab + Jenkins + Docker + Kubernetes. 方案的工作流程如下:首先,开发人员提交代码代码提交:随后,GitLab 会自动触发Jenkins job,Jenkins job会构建相应的镜像,放在一个Kubernetes的Pod里面:接下来,Kubernetes的Pod会把模块需要的其他依赖都包含在其内部(比如MySQL.Redis.MongoDB等),运行robot测试用例,测试用例的结果最后会反馈到Jenkins中:所有测试通过之后,GitLab把

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

前言 在项目中使用这一套自动集成的体系之后,一直想找个时间总结出来,用于自己记录也打算将自己的所得分享给园友们,不经常写文章,可能会有错误的地方,希望各位不吝指正,我会及时的改正并表示感谢,希望大家能够一起进步. 前期准备 centos7.5系统环境,关闭防火墙 jenkins in docker 安装 yum install docker docker service start docker pull jenkins docker run -d -p 8080:8080 -p 50000:5

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

一.总体流程 部署: 开发机(mac) ip:11.11.11.11 docker:1.12.1 部署机(centos7) ip:10.211.55.4 docker:1.12.3 生产机(centos7) ip:10.211.55.3 docker:1.10.3(装k8s1.4的时候自带安装的版本) 总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry, 之后将

GitLab+jenkins+docker发布.md

@[TOC] http://192.168.2.5:181/view/all/newJob 构建一个maven项目ht-micro-record-service-note-provider 添加jenkins主机公钥到gitlab,并生成全局凭据 1.Username with password root/123456 2.SSH Username with private key Enter Directly,添加gitlab服务器私钥 parent.relativePath修改为,发布单个服

docker搭建gitlab+Jenkins持续集成环境

安装docker 此处省略一.使用docker安装gitlab docker pull gitlab/gitlab-ce:latest下载完成之后使用docker生成容器docker run -dit \-p 8443:443 \-p 8080:80 \-p 2222:22 \-p 9090:9090 \--name gitlab \--restart always \-v /home/gitlab/config:/etc/gitlab \-v /home/gitlab/logs:/var/lo

jenkins+gitlab+maven+docker部署项目之jenkins用户权限管理

一.用户管理 jenkins自身带有权限管理,入口:系统管理-->全局安全配置,这里的权限配置太过简略,没有角色的概念,显然无法满足我们复杂的需求,所以在这个时候引入了 Jenkins 的一个插件:Role-based Authorization Strategy 安装插件:Role-based Authorization Strategy,插件管理-->可选插件搜索一下点击安装,安装完后重启就可以使用该插件 系统管理-->全局安全配置,然后用重新登录一下 系统管理-->Manag

【云计算】jenkins,docker,mesos,marathon,k8s相关资料

参考资料: 基于Apache Mesos 构建高可靠,高可用的Jenkins CI:http://blog.csdn.net/ebay/article/details/43529401 Docker Plugin:https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin%20?cm_mc_uid=94135605374514466031253&cm_mc_sid_50200000=1458197450 Jenkins与Docker相关的P

Jenkins+Docker+Git集成平台搭建

一.环境准备 以我本地为例[Jenkins:192.168.132.52           Docker:192.168.10.143] 1.一台运行Jenkins服务的服务器,需安装插件:git plugin.Git Parameter Plug-In.GitLab Plugin.Publish Over SSH.SSH Slaves plugin 2.一台或若干Docker宿主机服务器 3.一台提供Git服务的服务器(直接使用github服务) 二.搭建Docker宿主机 (1).安装并启