一、核心概念前置
1. 核心角色拆解
-
Harness 云端 SaaS 控制台(控制面板) 统一管理流水线、配置、权限、触发策略、流程编排,是整个 CI/CD 的「大脑」。
-
Harness Agent(本地执行代理) 部署在企业内网、私有服务器、K8s 集群内部,是真正干活的执行节点。
-
核心通信模式 Agent 主动向外网 Harness 建立长轮询连接,仅出站、无需内网开放公网端口,天然安全。
二、整体业务流程总览
完整链路: 代码提交/手动触发流水线 → 云端编排下发任务 → 内网 Harness Agent 接收任务 → Agent 执行:拉取代码 → 项目构建/镜像打包 → 推送制品仓库 → 服务自动化部署 → 结果回传、日志汇总、失败告警/自动回滚。
三、环境准备 & Harness Agent 安装
1. 环境要求
- 已有 Harness 官网注册账号,进入 SaaS 管理后台
- 内网资源:Linux 服务器 或 K8s 集群
- 可访问外网(仅Agent主动出站连接)
2. Linux 单机版 Harness Agent 安装
直接执行一键部署二进制/容器化单机 Agent:
# 1. 创建工作目录
mkdir -p /opt/harness-agent && cd /opt/harness-agent
# 2. Harness 平台获取 Agent 注册令牌(后台复制替换下面 TOKEN)
AGENT_TOKEN="你的Harness后台Agent令牌"
ACCOUNT_ID="你的Harness账号ID"
# 3. Docker 快速启动单机 Agent
docker run -d \
--name harness-agent \
--restart always \
-v /opt/harness-agent:/harness \
harness/agent:latest \
--accountId ${ACCOUNT_ID} \
--agentToken ${AGENT_TOKEN}
3. K8s 集群版 Harness Agent 安装
# harness-agent.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: harness-agent
namespace: harness
spec:
replicas: 1
selector:
matchLabels:
app: harness-agent
template:
metadata:
labels:
app: harness-agent
spec:
containers:
- name: harness-agent
image: harness/agent:latest
args:
- --accountId=你的账号ID
- --agentToken=你的Agent令牌
---
apiVersion: v1
kind: Namespace
metadata:
name: harness
执行部署:
kubectl apply -f harness-agent.yaml
# 查看Agent运行状态
kubectl get pods -n harness
四、Harness SaaS 后台配置流水线(关键实操)
步骤1:新建项目 & 开启 CI/CD 模块
- 登录 Harness 云端 SaaS 平台
- 新建 Project,选择启用 CI(持续集成)+ CD(持续交付) 模块
步骤2:配置代码仓库连接
在流水线资源中绑定 Git 仓库(GitHub/GitLab/Gitee 等),配置拉取权限、密钥凭证。
步骤3:编排流水线:构建阶段
流水线 Stage 1:代码拉取 + 应用构建 + 镜像打包
- 拉取远端 Git 代码
- 执行项目构建命令(示例为前端Node项目)
npm install
npm run build
- 执行 Docker 构建、打镜像标签
docker build -t registry.example.com/demo-app:${BUILD_VERSION} .
- 登录镜像仓库,推送镜像制品
docker login registry.example.com -u 用户名 -p 密码
docker push registry.example.com/demo-app:${BUILD_VERSION}
步骤4:编排流水线:部署阶段
流水线 Stage 2:自动化部署 根据业务环境二选一:
方案A:部署到 K8s
# 应用滚动更新
kubectl apply -f k8s/deployment.yaml
kubectl rollout restart deployment demo-app -n business
方案B:部署到 内网Linux服务器
# 停止旧服务
systemctl stop demo-app
# 替换新版本包/容器
# 重启服务
systemctl start demo-app
步骤5:绑定执行代理
流水线全局配置中,指定当前内网已在线的 Harness Agent 作为执行器。
核心:所有构建、部署命令,都会调度到该内网 Agent 机器上执行。
五、完整端到端执行流程
1. 触发流水线
两种触发方式:
- 手动:Harness 后台点击「运行流水线」
- 自动:配置 Git WebHook,代码提交/合并自动触发构建部署
2. 云端下发任务
Harness 控制面根据流水线配置,生成执行任务清单,推送给已绑定的内网 Agent。
3. 内网 Agent 执行全部动作
- Agent 轮询拉取到待执行任务
- 本地在内网环境拉取代码、执行编译构建
- 本地完成镜像打包、制品推送
- 本地调用 kubectl / systemctl 等命令完成业务发布
- 全程在内网隔离环境运行,不暴露内网服务端口
4. 日志与结果回传展示
Agent 实时将控制台日志、步骤状态、错误信息、构建产物信息回传到 Harness 云端。 运维/开发人员直接在 SaaS 后台查看: - 每一步执行耗时 - 完整执行日志 - 成功/失败状态 - 一键重试、回滚操作
六、关键总结
- Harness 云端:负责流程编排、配置管理、权限控制、可视化展示,是调度中心。
- Harness Agent:部署在内网,是真正的构建工具 + 自动化部署执行工具。
- 安全优势:Agent 主动外联,内网无需暴露端口,满足企业内网隔离规范。
- 落地价值:一套平台统一完成代码构建、镜像打包、制品管理、多环境自动化发布。