Harness 安装部署与原理架构

Harness 安装部署与原理架构

一、部署方案概览

Harness 提供 两种部署模式

模式

说明

适用场景

SaaS(Harness Cloud)

Harness 托管,你只需安装 Delegate 连回

中小团队、不想维护平台

Self-Managed Enterprise Edition(SMEE)

完整的 on-premise 部署,所有组件装在你的 Kubernetes

大企业、合规要求、完全控制


二、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 从内部发起。

特性

说明

通信方式

出站 HTTPS/WSS(WebSocket over TLS)

心跳

每 1 分钟向 Manager 发送心跳

任务模式

Manager 通过 WSS 通道下发任务指令 → Delegate 在本机执行 → 回传结果

数据通道

WSS 只发信令(任务通知),实际任务数据通过独立 HTTPS 传输

部署形态

Java 进程 / Docker 容器 / Kubernetes Pod

镜像版本

harness/delegate:yy.mm.verno(含 kubectl/helm)或 .minimal

Delegate 大小规格:

副本数

内存/CPU

最大并行部署/构建(所有副本合计)

1

2 GB / 0.5 CPU

10

1

4 GB / 1 CPU

20

1

8 GB / 2 CPU

40

1

16 GB / 4 CPU

80

重要: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 安全模型

层面

设计

网络

Delegate 只做出站连接,你的网络不需要开放任何入站端口

密钥

密钥存储在 Secret Manager 中,Delegate 执行时临时获取,用完即弃

策略

支持 OPA(Open Policy Agent),在各阶段强制执行合规

Git 同步

Pipeline/配置可存于 Git,以 Git 为唯一事实来源(GitOps)


三、安装部署详细说明

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 前置要求

资源

最低要求

推荐

Kubernetes

v1.24+

v1.27+

Worker 节点

3 节点 × 8 vCPU / 32 GB

3 节点 × 16 vCPU / 64 GB

存储

支持 ReadWriteMany 的存储类

NFS / EFS / Longhorn

数据库

PostgreSQL 14+、MongoDB 6+

独立高可用集群

Helm

v3.8+

v3.14+

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 角色:

服务

副本数

内存要求

harness-manager

2+

4-8 GB

harness-ng-manager

2+

4-8 GB

harness-delegate-proxy

2+

1 GB

harness-pipeline-service

2+

4 GB

harness-template-service

2+

2 GB

harness-git-service

2+

2 GB

harness-gateway

2+

2 GB

harness-ui

2+

512 MB

harness-mongo(可选内嵌)

3

8 GB+

harness-timescaledb(可选内嵌)

3

8 GB+

harness-redis

3

2 GB

harness-minio(可选内嵌)

4+

4 GB

完整的 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 连接拉取任务、执行操作、回传结果,实现了零入站端口的安全模型。

Claude Code 详细配置文件说明 2026-05-16
基于OpenClaw快速完成教学出题 2026-05-20

评论区