一文吃透 Harness Agent:从安装、构建到自动化部署 完整实操流程

0 阅读4分钟

一、核心概念前置

1. 核心角色拆解

  1. Harness 云端 SaaS 控制台(控制面板) 统一管理流水线、配置、权限、触发策略、流程编排,是整个 CI/CD 的「大脑」。

  2. Harness Agent(本地执行代理) 部署在企业内网、私有服务器、K8s 集群内部,是真正干活的执行节点

  3. 核心通信模式 Agent 主动向外网 Harness 建立长轮询连接,仅出站、无需内网开放公网端口,天然安全。

image.png

二、整体业务流程总览

完整链路: 代码提交/手动触发流水线 → 云端编排下发任务 → 内网 Harness Agent 接收任务 → Agent 执行:拉取代码 → 项目构建/镜像打包 → 推送制品仓库 → 服务自动化部署 → 结果回传、日志汇总、失败告警/自动回滚。

image.png

三、环境准备 & 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 模块

  1. 登录 Harness 云端 SaaS 平台
  2. 新建 Project,选择启用 CI(持续集成)+ CD(持续交付) 模块

步骤2:配置代码仓库连接

在流水线资源中绑定 Git 仓库(GitHub/GitLab/Gitee 等),配置拉取权限、密钥凭证。

步骤3:编排流水线:构建阶段

流水线 Stage 1:代码拉取 + 应用构建 + 镜像打包

  1. 拉取远端 Git 代码
  2. 执行项目构建命令(示例为前端Node项目)
npm install
npm run build
  1. 执行 Docker 构建、打镜像标签
docker build -t registry.example.com/demo-app:${BUILD_VERSION} .
  1. 登录镜像仓库,推送镜像制品
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 执行全部动作

  1. Agent 轮询拉取到待执行任务
  2. 本地在内网环境拉取代码、执行编译构建
  3. 本地完成镜像打包、制品推送
  4. 本地调用 kubectl / systemctl 等命令完成业务发布
  5. 全程在内网隔离环境运行,不暴露内网服务端口

4. 日志与结果回传展示

Agent 实时将控制台日志、步骤状态、错误信息、构建产物信息回传到 Harness 云端。 运维/开发人员直接在 SaaS 后台查看: - 每一步执行耗时 - 完整执行日志 - 成功/失败状态 - 一键重试、回滚操作

六、关键总结

  1. Harness 云端:负责流程编排、配置管理、权限控制、可视化展示,是调度中心。
  2. Harness Agent:部署在内网,是真正的构建工具 + 自动化部署执行工具
  3. 安全优势:Agent 主动外联,内网无需暴露端口,满足企业内网隔离规范。
  4. 落地价值:一套平台统一完成代码构建、镜像打包、制品管理、多环境自动化发布。