Harness 教程 01:平台介绍与环境搭建(国内网络环境落地版)
如果你正在做 DevOps 或平台工程,大概率已经听说过 Harness。
简单来说,Harness 是一个面向云原生时代的端到端交付平台,涵盖 CI、CD、Feature Flags、混沌工程、Cloud Cost Management、安全合规(SSCA)、内部开发者门户(IDP)等能力。
它的想法很有意思:用 AI 和智能化的方式,把过去需要手动配置的部署变成可审计、可治理、可重复的流程。
但问题也很现实——Harness 的中文资料非常少,官方文档虽然齐全,但信息分散,缺乏一条清晰的学习路径。对于刚接触的团队来说,从哪开始、重点在哪、如何落地,都让人头疼。
所以,我花了些时间,整理了这么一套教程。
这套教程是给谁的
如果你符合以下任一角色,这套教程应该对你有用:
- DevOps 工程师
:你需要设计 CI/CD 流水线,管理多环境部署,让发布更稳更快
- SRE
:可观测性、自动化恢复、回滚策略、混沌工程是你日常关注的
- 平台工程师
:你在搭建内部开发者平台,让开发团队能自助式交付
- 技术管理者
:你关心标准化、治理合规、成本控制、团队协作效率
如果你是刚接触 Harness 的新手,按顺序从第一篇读下去就行。如果你已经在使用,可以直接跳到感兴趣的专题。
一、为什么国内环境不能直接照搬国外教程?
很多 Harness 官方或海外教程默认使用:
GitHub
DockerHub
npm 官方源
公网 Kubernetes
公网制品仓库
但在国内企业落地时,这些链路经常会遇到访问慢、连接失败、镜像拉取失败、构建超时、企业防火墙限制、内网 Git 无法被 SaaS 直接访问等问题。
所以本文采用国内落地基线:
国外默认 | 国内替代方案 |
|---|---|
GitHub | GitLab / Gitee / 内网代码仓库 |
DockerHub | Harbor / 阿里云 ACR / 腾讯云 TCR / 华为云 SWR |
npm 官方源 | npmmirror |
公网部署 | 国内 K8s / 企业内网 K8s |
明文密码 | Harness Secret |
直接访问内网 | Harness Delegate 代理访问 |
Harness 的关键组件是 Delegate。官方文档中,Harness Delegate 被定义为运行在本地网络或 VPC 中的服务,用来把制品、基础设施、协作工具、验证工具和其他第三方系统连接到 Harness Manager,Delegate 会执行部署和集成等操作。
二、本文最终架构
国内环境推荐采用下面这种架构:
code复制
开发人员 │ ├── GitLab / Gitee │ ├── Harbor / 国内云镜像仓库 │ └── Kubernetes 集群 │ └── Harness Delegate │ 出站 HTTPS/WSS ▼ Harness SaaS重点是:
- Harness SaaS
负责编排、可视化、审计、流水线配置
- Delegate
负责访问企业内网 Git、Harbor、Kubernetes、云厂商 API
官方文档说明,Delegate 与 Harness Manager 之间通过出站 HTTPS/WSS 连接通信;同时 Harness 建议把 Delegate 安装在防火墙之后,并确保它能访问制品服务器、部署环境和云平台等目标资源。
三、核心概念快速入门
1. Harness SaaS
Harness SaaS 是你登录的 Web 控制台,主要负责:
创建项目
创建流水线
管理环境
管理连接器
管理密钥
查看执行日志
审批发布
审计发布记录
国内企业如果允许访问 SaaS,可以直接使用 Harness SaaS。如果是政务、强内网、完全离线环境,则需要评估 Harness Self-Managed 或离线部署方案。Harness Delegate Helm 安装文档中也提到,Self-Managed Enterprise Edition 的 air-gapped 环境需要额外处理证书和离线安装要求。
2. Delegate
Delegate 是部署在你自己网络里的执行代理。
它的职责是:
访问内网 GitLab
访问 Harbor
访问 Kubernetes API Server
执行 kubectl / helm / shell
拉取 Manifest
执行部署
回传执行状态
在国内环境中,Delegate 非常重要,因为 Harness SaaS 通常不能直接访问企业内网的 GitLab、Harbor 和 Kubernetes。
3. Connector
Connector 是 Harness 连接外部系统的配置,例如:
GitLab Connector
Gitee Connector
Harbor Connector
Kubernetes Cluster Connector
阿里云 Connector
腾讯云 Connector
Prometheus Connector
国内落地时,Connector 要尽量选择:
- Execute on Delegate: true
- Delegate Selector: cn-k8s-dev
意思是让 Delegate 去访问内网资源,而不是让 Harness SaaS 直接访问。
4. Secret
Secret 用来保存密码、Token、AccessKey、Harbor 机器人账号 Token 等敏感信息。
不要把密码写进 Pipeline YAML 或 Git 仓库。
Harness Connector YAML 示例中,Docker Registry Connector 就是通过 passwordRef 引用 Secret,而不是直接写密码。
5. Pipeline、Stage、Step
Harness 的流水线层级可以这样理解:
code复制
Pipeline:完整流水线 └── Stage:阶段,例如构建、部署、审批 └── Step:具体动作,例如执行脚本、部署 K8s、运行测试Harness 官方 YAML 文档说明,Pipeline 顶层包含 pipeline,下面包含 name、identifier、projectIdentifier、orgIdentifier、stages 等字段;stages 用来定义多个阶段。
四、环境准备
本文建议准备下面这些环境。
1. 基础组件
Harness SaaS 账号
Kubernetes 集群
kubectl
Helm 3
GitLab / Gitee
Harbor / 国内云镜像仓库
Node.js 示例项目
2. 国内推荐选型
类型 | 推荐方案 |
|---|---|
代码仓库 | GitLab CE、GitLab 企业版、Gitee 企业版 |
镜像仓库 | Harbor、阿里云 ACR、腾讯云 TCR、华为云 SWR |
Kubernetes | 自建 K8s、ACK、TKE、CCE、Rancher 管理集群 |
npm 源 | npmmirror |
CI/CD 平台 | Harness SaaS + Delegate |
生产环境访问方式 | Delegate + 企业代理 / 专线 / VPC 内访问 |
Harbor 官方文档说明,Harbor 文档覆盖安装配置、管理员运维和项目管理等内容,适合作为企业容器镜像仓库使用。
npmmirror 官方说明它是 npmjs 的完整镜像,可以代替官方版本使用,并提供了 npm config set registry https://registry.npmmirror.com 的配置方式。
五、推荐仓库结构
本教程先准备一个最小可用项目,后续 30 篇教程都可以基于这个结构继续扩展。
code复制
harness-demo-app/ ├── README.md ├── .npmrc ├── app/ │ ├── package.json │ └── server.js ├── docker/ │ └── Dockerfile ├── k8s/ │ ├── namespace