要把Jenkins部署到k8s集群里

【K8S运维知识汇总】第4天11:安装部署jenkins

现在长期维护版本是2.190.3
【K8S运维知识汇总】第4天11:安装部署jenkins

架构图里的jenkins是要部署到k8s里的
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

到运维主机做这个事情
【K8S运维知识汇总】第4天11:安装部署jenkins

traefik其实和宿主机用的同一个网络名称空间,才能把81端口映射出来
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

push到harbor仓库里
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

官方的jenkins镜像不能直接使用,做一定配置才能启用

要自定义一个dockerfile,要对官方的jenkins镜像做一次改变
【K8S运维知识汇总】第4天11:安装部署jenkins

官方的镜像起的时候 不是用root,而是普通用户,run就是把docker里的时区改成了东8区,
【K8S运维知识汇总】第4天11:安装部署jenkins

要做一对ssh秘钥
【K8S运维知识汇总】第4天11:安装部署jenkins

建议使用自己邮箱
【K8S运维知识汇总】第4天11:安装部署jenkins

把私钥封装到jenkins镜像里,公钥拷贝到gitee
【K8S运维知识汇总】第4天11:安装部署jenkins

公钥贴到这里就可以拉代码了

【K8S运维知识汇总】第4天11:安装部署jenkins

公钥 【K8S运维知识汇总】第4天11:安装部署jenkins

把id_rsa私钥拷贝到jenkins镜像里

【K8S运维知识汇总】第4天11:安装部署jenkins

config.json是登陆远程仓库的认证信息,说白了把harbor仓库的管理员json给jenkins镜像封装进去,封装到/root/.docker/config/config.json
【K8S运维知识汇总】第4天11:安装部署jenkins

要在jenkins里去装 一个docker的客户端,依赖宿主机的docker引擎,只是在jenkins里装一个客户端,让它和宿主机的docker引擎进行通信。如果要把jenkins放到docker容器的方式交互,必须在jenkins镜像里安装并交付一个docker的客户端
【K8S运维知识汇总】第4天11:安装部署jenkins

不做指纹验证了,因为公网ip会变,访问gitee的时候会问你yes or no
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

cat -n看到有400多行,加上执行权限
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

harbor里新建一个仓库
【K8S运维知识汇总】第4天11:安装部署jenkins

弄一个私有仓库
【K8S运维知识汇总】第4天11:安装部署jenkins

属于管理员
【K8S运维知识汇总】第4天11:安装部署jenkins

去做jenkins镜像
【K8S运维知识汇总】第4天11:安装部署jenkins

build成功 就推到harbor仓库里
【K8S运维知识汇总】第4天11:安装部署jenkins

【K8S运维知识汇总】第4天11:安装部署jenkins

这个镜像就已经可以使用了
【K8S运维知识汇总】第4天11:安装部署jenkins

记得把公钥放到gitee上
【K8S运维知识汇总】第4天11:安装部署jenkins

没有check ssh**的指纹
【K8S运维知识汇总】第4天11:安装部署jenkins

需要在k8s里创建一个名称空间,jenkins也是要单独的放到k8s里的名称空间,让它这个名称空间里只运行运维相关的基础设施服务
【K8S运维知识汇总】第4天11:安装部署jenkins

创建名称空间可以直接在dashboard创建一个
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

创建名称空间其实直接陈述式即可
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

要把jenkins镜像交付到infra,infra空间需要从一个harbor的私有仓库里拉取镜像,如果是私有的,就需要在任意一个运算节点,给infra名称空间创建一个secret资源,这个资源把harbor.od.com管理员账户和密码声明出来创建
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

infra名称空间,看一下secret
【K8S运维知识汇总】第4天11:安装部署jenkins

账户密码进来了,是base64编码,要decode解码
【K8S运维知识汇总】第4天11:安装部署jenkins

secret资源有三种类型,general通用型的,下面的default-token就是一个general类型的secret。
还有docker registry,tris
【K8S运维知识汇总】第4天11:安装部署jenkins

创建了infra仓库,然后推送镜像
【K8S运维知识汇总】第4天11:安装部署jenkins

准备共享存储
【K8S运维知识汇总】第4天11:安装部署jenkins

k8s里的Pod资源是如何共享数据的,jenkins一定有一些持久化数据,持久化的目录是/var/lib/jenkins/home,所以可以在外部准备共享存储
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

【K8S运维知识汇总】第4天11:安装部署jenkins

【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

共享给10.4.7.0/24(可读可写,压缩成root权限
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

要在jenkins的资源配置定义一下
【K8S运维知识汇总】第4天11:安装部署jenkins

jenkins是一个bs程序,我们要用web页面打开

pod控制器现在两种,deployment(设置,起几个就起几个)和daemonset(每个节点起一个)
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

用的是nfs的卷,server是hdss7-200

【K8S运维知识汇总】第4天11:安装部署jenkins

docker卷是挂在的本机,把本机的/run/docker.sock挂载到jenkinsi里的run/docker.sock,这样是jenkins的docker客户端,就可以进行socket通信
【K8S运维知识汇总】第4天11:安装部署jenkins

容器是jenkins,镜像是用的v2.190.3.
imagepullsecrets 镜像拉取策略(默认三种,always无论如何都要从harbor私有仓库去拉取镜像,无论本地是否有jenkins2.190.3,都要去harbor拉。
第二种是never,无论如何都不去远程仓库拉取镜像,都使用jenkins本地的v2.190.3
第三种是innot present,如果本地没有就从远程仓库员拉)
【K8S运维知识汇总】第4天11:安装部署jenkins

jenkins还是比较吃资源的就给个512
【K8S运维知识汇总】第4天11:安装部署jenkins

挂载路径
【K8S运维知识汇总】第4天11:安装部署jenkins

这个imgaepullsecrets就是harbor infra创建的secret,当你想去harbor拉取私有的仓库镜像,必须加imagepullsecret

私有仓库的做法需要先到名称空间 create secret,这个secret类型是docker registry,名称叫harbor,docker server是docker.od.com,docker user name是admin -n制定名称空间

在k8s资源配置清单里的pod控制器的统一配置清单里要声明imagepullsecret,是你的secret名字,sercet的名字name: harbor

一般是harbor仓库里叫app,k8s的名称空间按照项目组A,B,都把镜像放到了app仓库里,只要app仓库是私有的,都需要去create secret
【K8S运维知识汇总】第4天11:安装部署jenkins

默认用root用户运行,默认采用滚动升级的方法
【K8S运维知识汇总】第4天11:安装部署jenkins

留7份使用
【K8S运维知识汇总】第4天11:安装部署jenkins

容器多久运行还不正常,就判断失败,时间长一点
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

targetport是容器里跑的端口。上面的是监听在cluster ip上的端口
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

这里关系到了ingress怎么写,service port 80要和ingress80匹配上,没匹配上 就会出错
【K8S运维知识汇总】第4天11:安装部署jenkins

集群的ip只给你jenkins来使用,把这个/转发给jenkins这样的serviceName
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

挂载的是这个
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

为什么要挂到jenkins目录,因为要和宿主机docker引擎的服务端通信,真正用的引擎是宿主机引擎
【K8S运维知识汇总】第4天11:安装部署jenkins

4.11 在K8S里启动jenkins容器
先去应用dp.yaml,再去应用svc和ingress
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

k8s本身支持nfs驱动,直接volume type=nfs,可以直接支持,所以可以直接不用pv,来实现共享存储
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

之前7-21比较闲置,就在21上起来了
【K8S运维知识汇总】第4天11:安装部署jenkins

资源占用就上来了
【K8S运维知识汇总】第4天11:安装部署jenkins

这个是admin password,放到dashboard里了
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

jenkis挂在目录位置是在200上
【K8S运维知识汇总】第4天11:安装部署jenkins

容器初始化工作完成了
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

访问前需要解析域名
【K8S运维知识汇总】第4天11:安装部署jenkins

解析到vip,10.4.7.10
【K8S运维知识汇总】第4天11:安装部署jenkins

解析域名检查一下
【K8S运维知识汇总】第4天11:安装部署jenkins

浏览器输入域名到展示网页这个过程
【K8S运维知识汇总】第4天11:安装部署jenkins

到jenkins目录里的secrets目录,里面有一个initialadminpassword
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

所有插件都可以启动后再装

【K8S运维知识汇总】第4天11:安装部署jenkins

用户名admin密码 admin123
【K8S运维知识汇总】第4天11:安装部署jenkins
【K8S运维知识汇总】第4天11:安装部署jenkins

4.12 配置Jenkins安装插件、结尾
【K8S运维知识汇总】第4天11:安装部署jenkins

需要调整2个安全选项,允许匿名用户访问
【K8S运维知识汇总】第4天11:安装部署jenkins

不阻止跨域
【K8S运维知识汇总】第4天11:安装部署jenkins

第二件事就是安装plugin
【K8S运维知识汇总】第4天11:安装部署jenkins

安装部署重启jenkins

【K8S运维知识汇总】第4天11:安装部署jenkins

实战中可以给jenkins配置国内镜像源,下载快点,blue ocean对流水线支持比较好

先构建起jenkins的流水线,要进行参数化构建,流水线就能适配Dubbo,微服务的使用者和消费者
【K8S运维知识汇总】第4天11:安装部署jenkins

在newitem里
【K8S运维知识汇总】第4天11:安装部署jenkins

dashboard,rbac的机制,需要根据rbac的机制,去给dashboard创建service account,让不同的服务账户有不同的权限
安装jenkins的blue ocean

【K8S运维知识汇总】第4天11:安装部署jenkins

相关文章: