要把Jenkins部署到k8s集群里
traefik其实和宿主机用的同一个网络名称空间,才能把81端口映射出来
官方的jenkins镜像不能直接使用,做一定配置才能启用
要自定义一个dockerfile,要对官方的jenkins镜像做一次改变
官方的镜像起的时候 不是用root,而是普通用户,run就是把docker里的时区改成了东8区,
公钥贴到这里就可以拉代码了
把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
需要在k8s里创建一个名称空间,jenkins也是要单独的放到k8s里的名称空间,让它这个名称空间里只运行运维相关的基础设施服务
要把jenkins镜像交付到infra,infra空间需要从一个harbor的私有仓库里拉取镜像,如果是私有的,就需要在任意一个运算节点,给infra名称空间创建一个secret资源,这个资源把harbor.od.com管理员账户和密码声明出来创建
secret资源有三种类型,general通用型的,下面的default-token就是一个general类型的secret。
还有docker registry,tris
k8s里的Pod资源是如何共享数据的,jenkins一定有一些持久化数据,持久化的目录是/var/lib/jenkins/home,所以可以在外部准备共享存储
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,如果本地没有就从远程仓库员拉)
这个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
留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,来实现共享存储
这个是admin password,放到dashboard里了
到jenkins目录里的secrets目录,里面有一个initialadminpassword
所有插件都可以启动后再装
安装部署重启jenkins
实战中可以给jenkins配置国内镜像源,下载快点,blue ocean对流水线支持比较好
先构建起jenkins的流水线,要进行参数化构建,流水线就能适配Dubbo,微服务的使用者和消费者
dashboard,rbac的机制,需要根据rbac的机制,去给dashboard创建service account,让不同的服务账户有不同的权限
安装jenkins的blue ocean