通过jenkins交付微服务到kubernetes(13)

pipeline解析
1、首先去安装这几个插件
Git Parameter 可以实现动态的从git中获取所有分支
Git 拉取代码
Pipeline 刚才安装的pipeline,来实现这个pipeline流水线的发布任务
Config File Provider 主要可以将kubeconfig配置文件存放在jenkins里,让这个pipeline引用这个配置文件,比如构建的slave镜像里面有kubectl,那么连接k8s肯定需要授权,直接拷贝这个命令肯定不好使,而且像helm -v3版本也是通过kubeconfig来连接k8s-api来部署的任务,这两个命令都是通过kubeconfig去读取的k8s,所以我们需要将这两个命令给他们权限来连接k8s,所以需要准备一个kubeconfig文件,能让这个两个工具可以读到,但是这两个命令都是在slave的pod中,所以我们需要使用这个插件将kubeconfig文件由jenkins来保存,然后再通过jenkins特定的语法让它拿到,让它保存到slave中,形成一个动态的文件,动态的加进去,然后helm,kubectl通过这个文件就能直接连接k8s集群了,这样的好处主要是安全,也可以直接将这个kubeconfig文件打到镜像中,也可以,但是这样也不是很安全,别人一旦拿到这个kubeconfig文件久相当于把kubectl的权限给别人了,可以访问k8s集群了,这样就不安全了,所以我们还是按插件的方式去安装这个,动态的放在jenkins中还是比较好的
kubernetes 动态的去创建代理,好让k8s连接到jenkins,可以动态的去伸缩slave节点
Extended Choice Parameter 进行对选择框插件进行扩展,可以多选,扩展参数构建,而且部署微服务还需要多选,比如同时发布两个微服务,三个微服务,不可能每发布一个要点一下,这样肯定是不现实的。
2、参数含义
// 公共
def registry = "192.168.30.27" 比如镜像仓库的地址
// 项目
def project = "microservice" 项目的名称
def git_url = "http://192.168.30.28/root/ms.git" 微服务的gitlab的项目的git地址
def gateway_domain_name = "gateway.zhaocheng.com" 微服务里面有几个对外提供服务,指定域名
def portal_domain_name = "portal.zhaocheng.com" 微服务里面有几个对外提供服务,指定域名,因为不是所有的微服务都是提供域名的,所以要为需要配置的提供一个域名
// 认证
def image_pull_secret = "registry-pull-secret" 当helm去部署应用的时候,我们需要拉取去在拉取仓库的镜像与k8s进行认证,那么这个就是在k8s中去创建好的,也就是创建k8s登录harbor信息的一个认证,一般会在yaml中定义imagePullSecrets,镜像拉取的认证
可以通过kubectl create secret docker-registry registry-pull-secret --docker-server=192.168.30.27 --docker-username=admin --docker-password=Harbor12345 --docker-email=admin@ooo.com -n ms 命令去创建
def harbor_registry_auth = "e5402e52-7dd0-4daf-8d21-c4aa6e47736b" 也就是拉取镜像时需要docker login登录一下才可以拉,一般私有的需要指定这个密钥
def git_auth = "a65680b4-0bf7-418f-a77e-f20778f9e737" 这个是拉取git的时候需要指定的认证需要保存一下
// ConfigFileProvider ID
def k8s_auth = "7ee65e53-a559-4c52-8b88-c968a637051e" 这就是k8s的认证,这个也就是保存在kubeconfig中
这些都是定义的公共的变量,这些变量主要是让脚本适用于一个通用性,将一些变动的值传入进去这样主要可以让项目动态的去适配了

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/205c9d93803e5eb47c9e3dd7d0adc197.html