jenkins agents jnlp-slave 镜像制作
jenkins agents jnlp-slave 镜像制作
一、启动镜像
警告! 此 inbound-agent 镜像曾作为 jenkinsci/jnlp-slave 和 jenkins/jnlp-slave发布. 然后这些都被淘汰,弃用。
1 | # 拉取镜像 |
docker run 命令参数
- –name
为启动的容器指定名称,不指定会默认随机一个名称 - -p 访问的端口:镜像内程序的端口
- -d 表示当前容器在后台运行
- -it 指定要启动的镜像名称和标签
: - -v 本地路径:镜像内的路径 可以将本地路径和容器内的路径映射,可以即时修改文件即时生效,方便测试 -v 命令可以有多条 eg: -v E:/logs/:/var/logs/nginx/ 把nginx的日志文件映射到本地
- –rm 当前容器退出后将自动删除
jenkins/inbound-agent可选环境变量:
- JENKINS_JAVA_BIN:要使用的 Java 可执行文件的路径,而不是 PATH 中的默认值或从 JAVA_HOME 获取的路径
- JENKINS_JAVA_OPTS:用于远程处理的 Java 选项,否则从 JAVA_OPTS 获得
- JENKINS_URL:Jenkins 服务器的 url,可以用作-url选项的替代品,或设置备用 jenkins URL
- JENKINS_TUNNEL:( HOST:PORT) 连接到这个代理主机和端口而不是 Jenkins 服务器,假设这个确实将 TCP 流量路由到 Jenkins 主服务器。当 Jenkins 在负载均衡器、反向代理等后面运行时很有用。
- JENKINS_SECRET:代理秘密,如果没有设置为参数
- JENKINS_AGENT_NAME:代理名称,如果未设置为参数
- JENKINS_AGENT_WORKDIR:代理工作目录,如果未通过可选参数设置-workDir
- JENKINS_WEB_SOCKET:true如果应该通过 WebSocket 而不是 TCP 建立连接
- JENKINS_DIRECT_CONNECTION: ( HOST:PORT) 直接连接到此 TCP 代理端口,跳过 HTTP(S) 连接参数下载。
- JENKINS_INSTANCE_IDENTITY:Jenkins master 的 base64 编码的 InstanceIdentity 字节数组。设置后,代理将跳过连接到 HTTP(S) 端口以获取连接信息。
- JENKINS_PROTOCOLS:指定在提供时尝试的远程协议JENKINS_INSTANCE_IDENTITY。
查看是否启动
1 | # 查看经常是否启动 |
我们主要的目的是看下初始化容器里的情况,然后根据自己业务的情况增加工具 curl、get、rsync等。
所以不需要去连Jenkins
1 | docker run -it -u 0 jenkins-jnlp:v1.0 /bin/bash |
二、打包镜像并上传
登入远程仓库
1 | # 登入 |
编辑dockerfile
1 | $ vim Dockerfile |
打包镜像
1 | # 本地镜像 |
推送镜像
1 | docker push xxxxx.net/xxx/system:jenkins-jnlp-v1.0 |
三、远程拉取镜像
我们在Jenkins上配置了镜像地址,但这个地址必须是要公开的。否则我们拉去不到,那怎么样才可以设置私有仓库呢。
这边配置的秘钥,是jnlp pod 起来之后在里面pull上传镜像的秘钥。
如果是私有仓库会报错
1 | Error: ImagePullBackOff |
注意 k8s2.3 之前使用的是docker,之后使用的containerd。
3.1 我们可以在k8s 节点上 配置 containerd 仓库账号密码
1 | vim /etc/containerd/config.toml |
重启containerd
1 | systemctl restart containerd |
已经拉群成功了
3.2
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云运维!