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