Jenkins部署Ubuntu的最佳实践
导读:一 环境与架构规划 操作系统与版本:优先选择 Ubuntu 22.04/24.04 LTS,内核与软件包支持更稳定。 Java 运行时:安装 OpenJDK 11 或 17(LTS),两者均为当前主流长期支持版本。 资源基线: 测试环境...
一 环境与架构规划
- 操作系统与版本:优先选择 Ubuntu 22.04/24.04 LTS,内核与软件包支持更稳定。
- Java 运行时:安装 OpenJDK 11 或 17(LTS),两者均为当前主流长期支持版本。
- 资源基线:
- 测试环境建议 4 核 CPU / 8GB 内存 / 50GB SSD;
- 生产环境建议 8 核 CPU / 16GB 内存 / 100GB SSD;
- 规模扩大时采用 Master–Agent 分离 架构,Master 专注调度与治理,Agent 承载构建与部署负载。
- 部署方式:
- 传统系统包部署(便于与系统工具链集成);
- Docker 部署(隔离性好、迁移便捷,注意卷与权限配置)。
二 安装与初始化
- 安装 Java
- Ubuntu/Debian:sudo apt update & & sudo apt install -y openjdk-11-jdk(或 openjdk-17-jdk)
- 添加 Jenkins 官方仓库(推荐 GPG 与签名方式)
- Ubuntu 22.04/24.04 推荐:
- wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io.key
- echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- sudo apt update & & sudo apt install -y jenkins
- Ubuntu 22.04/24.04 推荐:
- 启动与开机自启
- sudo systemctl enable --now jenkins
- sudo systemctl status jenkins(确认状态为 active (running))
- 防火墙放行
- UFW:sudo ufw allow 8080/tcp;如需 JNLP 代理 通信,放行 50000/tcp
- 首次访问与初始化
- 访问:http://< 服务器IP或域名> :8080
- 初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 插件安装:可选择 Install suggested plugins;国内环境可在插件管理的高级选项中将 Update Site 替换为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 以加速
三 安全加固与访问控制
- 启用全局安全
- Manage Jenkins → Configure Global Security:勾选 Enable security;
- 身份认证:优先使用 Jenkins 自有用户数据库 或对接 LDAP/OAuth;
- 授权策略:采用 Project-based Matrix Authorization Strategy 或 Role-Based Strategy,遵循最小权限原则;
- 保持 CSRF 保护 开启。
- 加密与反向代理
- 使用 Nginx/Apache 作为反向代理并启用 HTTPS/TLS;
- 示例 Nginx 关键配置:将 80 重定向至 443,443 反向代理至 http://localhost:8080,并设置头部:
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- 如看到 “Reverse proxy set up is broken”,检查 proxy_pass 与 proxy_redirect 配置。
- 端口与暴露面
- 仅暴露必要端口(如 443),限制 8080 与 50000 的访问来源;
- 定期更新 Jenkins 与插件,及时修补漏洞。
四 构建环境与代理配置
- 系统与工具链
- 在 Manage Jenkins → Global Tool Configuration 中配置 JDK、Git、Maven/Gradle 等工具路径;
- 使用 Jenkinsfile(Pipeline as Code) 管理流水线,推荐安装 Pipeline、Blue Ocean 等插件提升可视化与可维护性。
- Docker 场景(系统包或容器部署均适用)
- 容器内使用宿主 Docker(DinD 或挂载 Docker 套接字):
- volumes: /var/run/docker.sock:/var/run/docker.sock;
- 注意容器内用户权限(常见为 UID 1000),确保对挂载目录具备读写权限;
- 如遇到权限问题,可在宿主机将 jenkins 用户加入 docker 组并重启服务(谨慎评估安全影响)。
- 容器内使用宿主 Docker(DinD 或挂载 Docker 套接字):
- SSH 与凭据
- 生成 SSH 密钥对 用于 Git/目标服务器访问;
- 在 Jenkins 凭据管理中添加 SSH Username with private key 等凭据,避免在代码中明文存放密钥。
五 运维、备份与高可用
- 日志与监控
- 查看服务日志:sudo journalctl -u jenkins -f;
- 结合系统监控(如资源、构建队列、执行时长)与构建日志分析性能瓶颈。
- 备份与恢复
- 定期备份 /var/lib/jenkins(含 jobs、config、plugins、secrets 等);
- 采用全量+增量策略,定期演练恢复流程,确保 RPO/RTO 达标。
- 高可用与扩展
- 生产环境建议 Master–Agent 多节点部署,Master 不跑构建任务;
- 通过 Kubernetes 或云厂商弹性节点扩展构建能力,结合 动态代理 提升资源利用率与弹性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins部署Ubuntu的最佳实践
本文地址: https://pptw.com/jishu/775432.html
