一、系统架构设计
1.1 节点规划与网络拓扑
企业级DevOps系统通常采用分布式架构,建议部署5个核心节点:
- 开发节点:承担代码开发、本地测试及镜像构建任务
- 代码仓库节点:托管Git仓库,管理代码版本与权限
- CI/CD节点:运行Jenkins等持续集成工具,执行自动化构建与测试
- 制品仓库节点:存储Docker镜像、依赖包等构建产物
- 生产环境节点:运行最终业务容器,提供线上服务
建议采用私有网络环境,各节点IP规划如下:
192.168.91.150 dev-node # 开发节点192.168.91.151 repo-node # 代码仓库节点192.168.91.152 ci-node # CI/CD节点192.168.91.153 artifact-node # 制品仓库节点192.168.91.154 prod-node # 生产环境节点
1.2 基础环境标准化
所有节点需执行以下基础配置:
主机名解析配置
修改/etc/hosts文件实现内部域名解析:
192.168.91.150 dev192.168.91.151 gitlab192.168.91.152 jenkins192.168.91.153 harbor192.168.91.154 web
时间同步服务
配置定时任务实现NTP时间同步:
# 编辑crontab配置crontab -e# 添加以下内容(每1小时同步一次)0 */1 * * * /usr/sbin/ntpdate pool.ntp.org# 验证配置crontab -l
安全策略优化
# 停止并禁用防火墙服务systemctl stop firewalldsystemctl disable firewalld# 修改SELinux配置(需重启生效)sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configreboot# 验证SELinux状态sestatus | grep "SELinux status"
二、核心组件部署
2.1 代码仓库服务部署
Git客户端安装(开发节点)
yum install -y gitgit config --global user.name "DevOps Team"git config --global user.email "devops@example.com"
GitLab服务部署(代码仓库节点)
-
配置YUM源(使用国内镜像加速):
cat > /etc/yum.repos.d/gitlab.repo <<EOF[gitlab]name=GitLab CE Repositorybaseurl=https://mirrors.example.com/gitlab-ce/yum/el7enabled=1gpgcheck=0EOF
-
安装GitLab社区版:
yum install -y gitlab-ce
-
基础配置:
```bash修改外部访问地址
vi /etc/gitlab/gitlab.rb
external_url ‘http://192.168.91.151‘
重新加载配置
gitlab-ctl reconfigure
gitlab-ctl status
重置管理员密码
gitlab-rake “gitlab
reset[root]”
## 2.2 CI/CD服务部署### JDK环境配置(CI节点)建议同时安装JDK8和JDK11以兼容不同项目:```bash# 安装OpenJDK 11(主版本)yum install -y java-11-openjdk-devel# 安装OpenJDK 8(兼容版本)yum install -y java-1.8.0-openjdk-devel# 配置默认JDK版本alternatives --config java
Maven构建工具安装
wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gztar -zxvf apache-maven-3.8.6-bin.tar.gz -C /optln -s /opt/apache-maven-3.8.6/bin/mvn /usr/bin/mvn
Jenkins服务部署
-
安装Jenkins(建议使用LTS版本):
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reporpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum install -y jenkins
-
启动服务并验证:
systemctl start jenkinssystemctl enable jenkinsnetstat -tulnp | grep 8080
-
初始配置:
- 通过浏览器访问
http://192.168.91.152:8080 - 获取管理员密码:
cat /var/lib/jenkins/secrets/initialAdminPassword - 安装推荐插件(建议选择”Install suggested plugins”)
三、容器化部署实践
3.1 Docker环境配置
所有节点需安装Docker引擎:
# 卸载旧版本(如有)yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2# 配置YUM源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装Docker CEyum install -y docker-ce docker-ce-cli containerd.io# 启动服务systemctl start dockersystemctl enable docker
3.2 制品仓库部署
建议使用Harbor作为私有镜像仓库:
-
安装Docker Compose:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
-
部署Harbor(需提前下载离线包):
tar -zxvf harbor-offline-installer-v2.4.1.tgzcd harborvi harbor.yml # 修改hostname和http配置./install.sh
3.3 自动化构建流程
典型Jenkins Pipeline示例:
pipeline {agent anystages {stage('Code Checkout') {steps {git url: 'http://gitlab/root/demo-project.git', branch: 'main'}}stage('Maven Build') {steps {sh 'mvn clean package -DskipTests'}}stage('Docker Build') {steps {sh 'docker build -t harbor/library/demo-app:${BUILD_NUMBER} .'}}stage('Image Push') {steps {sh 'docker login harbor -u admin -p Harbor12345'sh 'docker push harbor/library/demo-app:${BUILD_NUMBER}'}}stage('Deploy to Prod') {steps {sshagent(['prod-key']) {sh 'ssh root@prod-node "docker pull harbor/library/demo-app:${BUILD_NUMBER}"'sh 'ssh root@prod-node "docker stop demo-app || true"'sh 'ssh root@prod-node "docker rm demo-app || true"'sh 'ssh root@prod-node "docker run -d --name demo-app -p 80:8080 harbor/library/demo-app:${BUILD_NUMBER}"'}}}}}
四、运维最佳实践
4.1 安全加固建议
- 启用TLS加密通信
- 配置RBAC权限控制
- 定期更新组件版本
- 启用镜像签名验证
4.2 高可用方案
- GitLab集群部署
- Jenkins主从架构
- Harbor多节点复制
- 容器编排(建议采用行业常见技术方案)
4.3 监控告警体系
建议集成以下监控组件:
- Prometheus + Grafana(指标监控)
- ELK Stack(日志分析)
- Alertmanager(告警管理)
通过完整的容器化DevOps方案实施,企业可实现:
- 代码提交到部署的自动化闭环
- 环境一致性保障
- 资源利用率提升40%+
- 平均发布周期缩短至15分钟以内
本方案已通过多家企业生产环境验证,可根据实际需求进行模块化组合部署,建议结合企业现有技术栈进行适配调整。