【K8S运维知识汇总】第4天11:安装部署jenkins
要把Jenkins部署到k8s集群里现在长期维护版本是2.190.3架构图里的jenkins是要部署到k8s里的到运维主机做这个事情traefik其实和宿主机用的同一个网络名称空间,才能把81端口映射出来push到harbor仓库里官方的jenkins镜像不能直接使用,做一定配置才能启用要自定义一个dockerfile,要对官方的jenkins镜像做一次改变官方的镜像起的时候 不是用root,而是
要把Jenkins部署到k8s集群里
现在长期维护版本是2.190.3
架构图里的jenkins是要部署到k8s里的
到运维主机做这个事情
traefik其实和宿主机用的同一个网络名称空间,才能把81端口映射出来
push到harbor仓库里
官方的jenkins镜像不能直接使用,做一定配置才能启用
要自定义一个dockerfile,要对官方的jenkins镜像做一次改变
官方的镜像起的时候 不是用root,而是普通用户,run就是把docker里的时区改成了东8区,
要做一对ssh秘钥
建议使用自己邮箱
把私钥封装到jenkins镜像里,公钥拷贝到gitee
公钥贴到这里就可以拉代码了
公钥
把id_rsa私钥拷贝到jenkins镜像里
config.json是登陆远程仓库的认证信息,说白了把harbor仓库的管理员json给jenkins镜像封装进去,封装到/root/.docker/config/config.json
要在jenkins里去装 一个docker的客户端,依赖宿主机的docker引擎,只是在jenkins里装一个客户端,让它和宿主机的docker引擎进行通信。如果要把jenkins放到docker容器的方式交互,必须在jenkins镜像里安装并交付一个docker的客户端
不做指纹验证了,因为公网ip会变,访问gitee的时候会问你yes or no
cat -n看到有400多行,加上执行权限
harbor里新建一个仓库
弄一个私有仓库
属于管理员
去做jenkins镜像
build成功 就推到harbor仓库里
这个镜像就已经可以使用了
记得把公钥放到gitee上
没有check ssh密钥的指纹
需要在k8s里创建一个名称空间,jenkins也是要单独的放到k8s里的名称空间,让它这个名称空间里只运行运维相关的基础设施服务
创建名称空间可以直接在dashboard创建一个
创建名称空间其实直接陈述式即可
要把jenkins镜像交付到infra,infra空间需要从一个harbor的私有仓库里拉取镜像,如果是私有的,就需要在任意一个运算节点,给infra名称空间创建一个secret资源,这个资源把harbor.od.com管理员账户和密码声明出来创建
infra名称空间,看一下secret
账户密码进来了,是base64编码,要decode解码
secret资源有三种类型,general通用型的,下面的default-token就是一个general类型的secret。
还有docker registry,tris
创建了infra仓库,然后推送镜像
准备共享存储
k8s里的Pod资源是如何共享数据的,jenkins一定有一些持久化数据,持久化的目录是/var/lib/jenkins/home,所以可以在外部准备共享存储
共享给10.4.7.0/24(可读可写,压缩成root权限
要在jenkins的资源配置定义一下
jenkins是一个bs程序,我们要用web页面打开
pod控制器现在两种,deployment(设置,起几个就起几个)和daemonset(每个节点起一个)
用的是nfs的卷,server是hdss7-200
docker卷是挂在的本机,把本机的/run/docker.sock挂载到jenkinsi里的run/docker.sock,这样是jenkins的docker客户端,就可以进行socket通信
容器是jenkins,镜像是用的v2.190.3.
imagepullsecrets 镜像拉取策略(默认三种,always无论如何都要从harbor私有仓库去拉取镜像,无论本地是否有jenkins2.190.3,都要去harbor拉。
第二种是never,无论如何都不去远程仓库拉取镜像,都使用jenkins本地的v2.190.3
第三种是innot present,如果本地没有就从远程仓库员拉)
jenkins还是比较吃资源的就给个512
挂载路径
这个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
默认用root用户运行,默认采用滚动升级的方法
留7份使用
容器多久运行还不正常,就判断失败,时间长一点
targetport是容器里跑的端口。上面的是监听在cluster ip上的端口
这里关系到了ingress怎么写,service port 80要和ingress80匹配上,没匹配上 就会出错
集群的ip只给你jenkins来使用,把这个/转发给jenkins这样的serviceName
挂载的是这个
为什么要挂到jenkins目录,因为要和宿主机docker引擎的服务端通信,真正用的引擎是宿主机引擎
4.11 在K8S里启动jenkins容器
先去应用dp.yaml,再去应用svc和ingress
k8s本身支持nfs驱动,直接volume type=nfs,可以直接支持,所以可以直接不用pv,来实现共享存储
之前7-21比较闲置,就在21上起来了
资源占用就上来了
这个是admin password,放到dashboard里了
jenkis挂在目录位置是在200上
容器初始化工作完成了
访问前需要解析域名
解析到vip,10.4.7.10
解析域名检查一下
浏览器输入域名到展示网页这个过程
到jenkins目录里的secrets目录,里面有一个initialadminpassword
所有插件都可以启动后再装
用户名admin密码 admin123
4.12 配置Jenkins安装插件、结尾
需要调整2个安全选项,允许匿名用户访问
不阻止跨域
第二件事就是安装plugin
安装部署重启jenkins
实战中可以给jenkins配置国内镜像源,下载快点,blue ocean对流水线支持比较好
先构建起jenkins的流水线,要进行参数化构建,流水线就能适配Dubbo,微服务的使用者和消费者
在newitem里
dashboard,rbac的机制,需要根据rbac的机制,去给dashboard创建service account,让不同的服务账户有不同的权限
安装jenkins的blue ocean
只有fully up and running才证明jenkins完全起来了
jenkins的容器还是比较耗费资源,普罗米修斯随便就吃20G内存
验证jenkins可用,需要做一些事情
用web shell的方式到jenkins容器里
是否以root方式启动,时区是否是东8区,是否连接到宿主机的docker引擎
跟21主机上所有容器列出的一模一样
还要去验证是否能登陆harbor仓库
这个是dockerfile里就指定的
用git用户去连接 test连接 -T指的是test测试连接,不是真正的连接
更多推荐
所有评论(0)