前言:本文是构建企业级CICD的最后一篇文章,以实战为导向,讲解Jenkins 通过Pipeline流水线如何实现在kubernetes系统中做到持续集成持续部署的,请关注!
kubernetes系列之《构建企业级CICD平台(三)》
前言:本文是构建企业级CICD的第三篇文章,主要介绍Jenkins在k8s集群中的应用,以及如何构建Jenkins-slave镜像、Jenkins Pipeline插件使用等。
四、Jenkins在K8s中动态创建代理
4.1、Jenkins Master/Slave架构
Slave的主要作用在于帮助Master分担Job任务,多用于一个Master节点不够使用时,考虑增加Slave节点。
kubernetes系列之《构建企业级CICD平台(二)》
前言:这篇文章将进入实战阶段,从代码发布流程设计到运行Jenkins来实现这一切,请关注!
二、发布流程设计

发布设计步骤如下:
- 开发将代码提交到Gitlab私有仓库;
- Jenkins拉取Gitlab的代码仓库,进入单元测试、构建镜像、推送镜像到测试环境;
- 测试人员在K8s搭建的测试环境中进行功能测试,测试通过后提交到Harbor私有镜像仓库;
- 管理员通操作K8s API,将Harbor交付的镜像部署到K8s生产环境的Pod中;
- 生产环境通过负载均衡对外提供服务
kubernetes系列之《构建企业级CICD平台(一)》
前言:本文是构建CICD的开篇文章,主要介绍常用的几种发布方案以及k8s采用的发布方案,为构建CICD平台做知识铺垫。
一、项目发布方案
1.1、蓝绿发布
蓝绿发布又称蓝绿部署,英文名Vlue Green Deployment,是一种可以保证在“不间断提供服务”的情况下上线的部署方法。
如何保证系统不间断提供服务呢?
蓝绿部署的模型中包含两个集群:
kubernetes系列之《k8s构建ELK日志平台》
一、概述
目前主流日志收集系统为:Filebeat + ELK,本文尝试使用该系统对k8s里部署的Pod进行日志收集并加以图形可视化展示;
确定日志收集系统后,接下来就要搞清楚我们想要收集k8s的哪些日志?
这里思考主要日志收集如下:
- K8S系统的组件日志
- K8S Cluster里面部署的应用程序日志
日志收集方案:Filebeat + ELK

kubernetes系列之《k8s基于RBAC的授权》
一、RBAC介绍
基于角色的访问控制(Role-Based Access Control,即“RBAC”)使用“rbac.authorization.k8s.io” Apo Group实现授权决策,允许管理员通过Kubernetes Api动态配置策略。
要启用RBAC,请使用 --authorization-mode=RBAC
启动API Server。
在RABC API中,通过如下的步骤进行授权:
- 1)定义角色:在定义角色时会指定此角色对于资源的访问控制的规则;
- 2)绑定角色:将主体与角色进行绑定,对用户进行访问授权。

kubernetes系列之《PersistentVolumes》
官网:https://kubernetes.io/docs/concepts/storage/persistent-volumes/
1、理解PV&PVC
当pod中定义volume的时候,我们只需要使用pvs存储卷就可以,pvc必须与对应的pv建立关系,pvc会根据定义去pv申请,而pv是由存储空间创建出来的。pv和pvc是kubernetes抽象出来的一种存储资源。

kubernetes系列之《Volume》
1、了解k8s的Volume
官网:https://kubernetes.io/docs/concepts/storage/volumes/
kubernetes中的Volume提供了在容器中挂载外部存储的能力,Pod需要设置卷来源(spec.volume)和挂载点(spec.containers.volumeMounts)良哥信息后才可以使用相应的Volume
volume根据使用可以分为以下三类:
- Volume本地和网络数据卷
- Persistent Volume 持久数据卷
- Persistent Volume 动态供给 数据卷
本地数据卷:emptrDir、hostPath
网络数据卷:NFS
kubernetes系列之《Service》
简单了解Service:
- 防止Pod失去联系(服务发现)
- 定义一组Pod的访问策略(负载均衡)
- 支持ClusterIP,NodePort以及LoadBalancer三种类型
Service的底层实现主要有iptables和ipvs两种网络模式
Services在kubenetes中,是帮助Pod提供网络服务的。比如你要访问Pod里的应用,需要通过端口来访问,而Service可以通过端口代理转发,让你通过Node节点上的端口能够访问到你的Pod应用。