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

时间:2023-02-27 08:19:59

第四十四章 微服务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:

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

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

二、jenkins服务配置

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

选择机器,执行命令。

三、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. QQ互联登录以及非官方正版应用报100044错误

    QQ第三方登录的时候,显示非官方正版应用,报100044错误:坑1:我们在QQ互联注册成功后需要设置包名和签名,签名是通过官方提供的工具生成的.注意一点:这里的签名是需要由打包签名之后APK生成,我们 ...

  2. nmon性能监控工具总结

    一.nmon工具介绍 nmon 是一个分析aix和linux性能的免费工具(主要是ibm为自己的aix操作系统开发的,但是也可以用在linux操作系统),而nmon_analyser是nmon的一个工 ...

  3. iOS触摸事件处理

    iOS触摸事件处理   主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块, (1)首先在视图的层次结构里找到能响应消息的那个视图. (2 ...

  4. PHP设计模式——备忘录模式

    声明:本系列博客參考资料<大话设计模式>,作者程杰. 备忘录模式又叫做快照模式或Token模式,在不破坏封闭的前提下.捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对 ...

  5. &lbrack;刷题&rsqb;算法竞赛入门经典 3-10&sol;UVa1587 3-11&sol;UVa1588

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-10/UVa1587:Box 代码: //UVa1587 - Box #include&l ...

  6. 在使用&lt&semi;script&gt&semi;嵌入JavaScript代码时,不要在代码中的任何地方出现&quot&semi;&lt&semi;&sol;script&gt&semi;&quot&semi;字符串

    在使用<script>嵌入JavaScript代码时,记住不要在代码中的任何地方出现"</script>"字符串.例如浏览器执行下面代码会报错: <s ...

  7. SSM-Spring-22:Spring&plus;Mybatis&plus;JavaWeb的整合

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 众所周知,框架Spring来整合别的框架,但是Mybatis出现的晚,Spring就没有给他提供支持,那怎么办 ...

  8. Python建立多线程任务并获取每个线程返回值

    1.进程和线程 (1)进程是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.进程也可以派生新的进程来执行其他任务,不过每个新进程都拥有自己的内存和数据栈,所 ...

  9. HTML5学习笔记4

    10.表单元素表单元素用于获取用户的输入数据form 表示HTML表单属性:    action 表示表单提交的页面    method 表示表单提交的请求方式:有POST和GET两种,默认GET(P ...

  10. RHEL6 - 图形化设置IP

    RHEL6下我们除了麻烦地修改网卡的主配置文件外,还可以通过setup,system-config-network等工具指令打开网卡的图形化界面   #setup #system-config-net ...