一、部署方案概览
Harness 提供 两种部署模式:
二、Harness 核心架构原理
2.1 整体架构图(逻辑)

2.2 核心组件详解
2.2.1 Harness Manager(控制面)
这是 Harness 的大脑,SaaS 模式下由 Harness 托管,SMEE 模式下跑在你的 K8s 集群里。
包含的子服务(微服务架构):
UI 服务 — React 前端
API Gateway — 统一的 REST API 入口
Pipeline Service — 流水线引擎,解析 YAML、调度执行
Secret Service — 密钥管理(与 HashiCorp Vault、AWS KMS 等集成)
Governance Service — 策略引擎(OPA)
Template Service — 模板管理
Git Service — Git 同步管理
2.2.2 Harness Delegate(执行代理)——最关键的设计
Delegate 是 Harness 最核心的架构创新。它是一个轻量级服务,运行在你的基础设施环境内。
核心设计原则:
Manager 从不主动连接用户的网络,所有操作由 Delegate 从内部发起。
Delegate 大小规格:
重要:Terraform 操作单个任务就需要 500MB+ 内存。CI-only 的 Delegate 可以支持更高的并行度。
Delegate 选择机制:
Pipeline 步骤中指定 Delegate Tags
└─ 精确匹配 → 只用指定 Delegate
└─ 未指定 → Harness 根据 ①心跳 ②Tags ③能力检测 自动分配
└─ 优先使用 Infrastructure Connector 上成功过的 Delegate
2.2.3 Pipeline Engine(流水线引擎)
Harness 的流水线用 YAML 定义,核心概念:
Pipeline
├── Stages(阶段)
│ ├── Service(服务定义:用什么 artifact、变量)
│ ├── Environment(环境:开发/测试/生产)
│ ├── Infrastructure Definition(基础设施定义:K8s/VM/AWS)
│ └── Execution Steps(执行步骤)
│ ├── Canary(金丝雀发布)
│ ├── Blue-Green(蓝绿部署)
│ ├── Rolling(滚动更新)
│ └── Custom(自定义步骤)
└── Triggers(触发器)
├── Git commit
├── Artifact update
├── Scheduled
└── Webhook
2.1.4 Connector(连接器)
连接器是 Delegate 用来访问外部系统的配置。每种连接器绑定一个或多个 Delegate Tag。
常见连接器类型:
Git Connectors — GitHub、GitLab、Bitbucket
Artifact Connectors — Docker Hub、ECR、GCR、Harbor
Cloud Connectors — AWS、Azure、GCP
Kubernetes Connectors — 通过 kubeconfig 连接集群
Secret Managers — Vault、AWS Secrets Manager、GCP Secret Manager
2.1.5 安全模型
三、安装部署详细说明
3.1 方案 A:SaaS 模式(最简单)
你只需要安装 Delegate 即可,平台由 Harness 托管。
步骤 1:注册 Harness 账号
# 访问 https://app.harness.io 注册
步骤 2:安装 Delegate
Kubernetes 安装(推荐):
# 从 Harness UI 下载 YAML
# 每个 Project/Org 可以创建多个 Delegate
# 1. 在 Harness UI 中:
# Settings → Delegates → Install Delegate → Kubernetes
# 2. 下载 harness-delegate.yaml 并部署
kubectl apply -f harness-delegate.yaml -n harness-delegate
# 3. 验证
kubectl get pods -n harness-delegate
# NAME READY STATUS RESTARTS
# my-delegate-6f9b7c9d8-2xk4j 1/1 Running 0
Docker 安装:
docker run -d \
-e DELEGATE_NAME=my-delegate \
-e ACCOUNT_ID=xxx \
-e DELEGATE_TOKEN=*** \
-e MANAGER_HOST_AND_PORT=https://app.harness.io \
harness/delegate:latest
Helm 安装:
helm repo add harness https://harness.github.io/delegate-helm-chart
helm install my-delegate harness/harness-delegate \
--set delegateName=my-delegate \
--set accountId=xxx \
--set delegateToken=xxx
3.2 方案 B:Self-Managed Enterprise Edition(SMEE)
完整部署整个 Harness 平台到你的 Kubernetes 集群。
3.2.1 前置要求
3.2.2 安装步骤
1. 添加 Helm 仓库:
helm repo add harness https://harness.github.io/helm-charts
helm repo update
2. 创建 Namespace:
kubectl create namespace harness
3. 准备 values.yaml:
# 关键配置项
global:
license:
key: "YOUR_LICENSE_KEY"
# 数据库配置(使用外部数据库)
mongo:
external:
endpoints: ["mongo1:27017", "mongo2:27017", "mongo3:27017"]
user: "admin"
password: "xxx"
timescaledb:
external:
host: "timescaledb.example.com"
port: 5432
user: "harness"
password: "xxx"
# 启用的模块(按需)
platform:
enabled: true
cd:
enabled: true
ci:
enabled: false
ccm:
enabled: false
4. 执行安装:
helm upgrade --install harness harness/harness-platform \
--namespace harness \
--values values.yaml \
--timeout 30m
5. 验证部署:
# 查看所有 Pod
kubectl get pods -n harness
# 查看 Ingress
kubectl get ingress -n harness
# 访问 https://harness.your-domain.com
3.2.3 SMEE 的微服务组件清单
部署完成后集群中的主要 Pod 角色:
完整的 SMEE 安装大约会启动 30-50 个 Pod,取决于你开启了几个模块。
3.2.4 备份与恢复
# 备份
helm get values harness -n harness > backup-values.yaml
kubectl get secret harness-secrets -n harness -o yaml > backup-secrets.yaml
# 对 MongoDB / TimescaleDB 执行数据库 dump
# 恢复
# 1. 恢复数据库
# 2. 恢复 Kubernetes Secrets
kubectl apply -f backup-secrets.yaml -n harness
# 3. 重新安装 Helm chart
helm upgrade --install harness harness/harness-platform \
--namespace harness \
--values backup-values.yaml
四、一条请求的完整生命周期


关键要点:整个流程中,Manager 从未主动进入你的网络。Delegate 通过纯出站的 WSS/HTTPS 连接拉取任务、执行操作、回传结果,实现了零入站端口的安全模型。