第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
- 在开发机开发代码后提交到gitlab
- 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry
- 之后将在k8s-master上执行rc、service的创建,进而创建Pod,从私服拉取镜像,根据该 镜像启动容器
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
- Always:总是拉取镜像,如果tag是lastest的话,该配置是默认值
- IfNotPresent:如果镜像不存在,则拉取镜像,如果tag不是lastest的话,该配置是默认值
- Never
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
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(提供对外访问接口)
- git add --all
- git commit -m"test k8s cicd"
- git push origin HEAD:dev
总体流程:
在第四十三章 微服务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
说明:imagePullPolicy:
1.2、myservice1-docker-svc.yaml
2、在/data/script/目录下创建service_start.sh脚本
说明:
三、测试
1、本地:
2、查看jenkins的console
3、浏览器访问http://10.211.55.8:30001/docker/hello

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
kubernetes使用traefik的https方式访问web应用
背景 之前的文章中,我已经利用kubernetes的traefik服务作为入口,访问了tomcat的相关 服务,但之前的文章是通过http的方式来访问的。在现实应用中,为了安全考虑,肯定有https访问的需求,这里我们就通过traefik来实现https的访问。 之前的文章链接:http://blog.51cto.com/icenycmh/2124502 实验操作 一:想开启https,证书是少不了的。可以自己手动建一个证书,或者利用已经有的证书。这里我用已经申请的一个ssl证书,对应的域名为*.gzshapp.com。 二:创建一个secret,保存https证书。 # ll total 12 -rw-r--r-- 1 root root 5477 Mar 30 16:32 _.gzshapp.com_bundle.crt -rw-r--r-- 1 root root 1708 Mar 28 14:01 _.gzshapp.com.key # kubectl create secret generic traefik-cert --from-file=_.gzshapp.com_bu...
- 下一篇
通过kubeadm在Ubuntu1604下构建k8s高可用集群
本文参考了https://github.com/cookeem/kubeadm-ha,https://kairen.github.io/2018/07/17/kubernetes/deploy/kubeadm-v1.11-ha/,以及 https://jamesdeng.github.io/2018/08/21/k8s-1.11-%E9%98%BF%E9%87%8C%E4%BA%91%E5%AE%89%E8%A3%85.html,特别是第三个方案,解决了我在阿里云部署K8s高可用集群的大问题。 本地环境基于Haproxy+Keepalived可以轻松实现k8s的HA,但是在阿里云环境中,由于ECS不支持Keepalived,且阿里云内网的SLB,不支持后端ECS实例既作为Real Server又作为客户端向所在的负载均衡实例发送请求。因为返回的数据包只在云服务器内部转发,不经过负载均衡,在后端ECS实例上去访问负载均衡的服务地址是不通的。所以这里采用的是另起两台ECS部署Haproxy,并 设置内网SLB的后端为这两台ECS,这里通过docker运行haproxy容器,结合/etc/h...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程