别再手搓环境了:聊聊我们是怎么用 Terraform + Helm 做内部服务模板化的

简介: 别再手搓环境了:聊聊我们是怎么用 Terraform + Helm 做内部服务模板化的

别再手搓环境了:聊聊我们是怎么用 Terraform + Helm 做内部服务模板化的

做过几年运维或者 DevOps 的朋友,大概率都有过这种经历:

新项目上线,流程是这样的:

  1. 建 Kubernetes Namespace
  2. 写 Deployment YAML
  3. 配 Service
  4. 配 Ingress
  5. 配 ConfigMap
  6. 配数据库
  7. 配 Redis
  8. 配监控
  9. 配日志

忙完一圈,突然发现:

80% 的工作都是重复的。

更要命的是,不同项目的人写的 YAML 还不一样。

有人这样写:

resources:
  limits:
    cpu: "500m"

有人这样写:

resources:
  limits:
    cpu: "0.5"

还有人根本不写资源限制。

于是时间一长,公司 Kubernetes 集群就变成了:

YAML 垃圾场。

后来我们痛定思痛做了一件事:

内部服务模板化(Service Template)。

核心思路其实很简单:

Terraform 管基础设施,Helm 管应用模板。

今天就聊聊这个实践。


一、为什么一定要做服务模板化

先说句很实在的话:

DevOps 最大的敌人其实不是技术,而是重复劳动。

很多公司所谓的“自动化”,其实只是:

人工 + 文档

比如:

步骤1:创建Namespace
步骤2:复制deployment.yaml
步骤3:修改镜像

这不叫自动化。

这叫:

手工流水线。

真正的自动化应该是:

terraform apply

然后环境 + 应用直接起来。

这就是模板化的价值。


二、整体架构设计

我们当时的架构大概是这样:

开发者
   │
   │ git push
   ▼
CI/CD
   │
   ▼
Terraform
(基础设施)
   │
   ▼
Helm
(应用模板)
   │
   ▼
Kubernetes

职责划分非常清晰:

工具 负责什么
Terraform 云资源 / 集群资源
Helm 应用部署
Kubernetes 运行服务

一句话总结:

Terraform 管“地”,Helm 管“房子”。


三、Terraform:统一基础设施模板

先说 Terraform。

我们先把所有服务需要的基础设施模板化。

比如一个服务通常需要:

Namespace
ServiceAccount
数据库
Redis
S3 Bucket

Terraform 模块可以这样写:

module "service_base" {

  source = "./modules/service_base"

  service_name = var.service_name
  env          = var.env

}

模块内部大概这样:

resource "kubernetes_namespace" "service" {
  metadata {
    name = var.service_name
  }
}

Redis 示例:

resource "aws_elasticache_cluster" "redis" {

  cluster_id = "${var.service_name}-redis"

  engine = "redis"

  node_type = "cache.t3.micro"

}

这样一个服务上线只需要:

service_name = "order-service"
env = "prod"

Terraform 就会自动创建:

namespace
redis
数据库
存储

基础设施一键完成。


四、Helm:真正的应用模板

Terraform 解决了基础设施问题。

接下来就是应用部署。

这部分 Helm 非常适合。

我们设计了一个 标准 Helm Chart 模板

目录结构大概是这样:

service-template
  ├── Chart.yaml
  ├── values.yaml
  └── templates
        ├── deployment.yaml
        ├── service.yaml
        ├── ingress.yaml

Deployment 模板示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {
   {
    .Values.service.name }}

spec:

  replicas: {
   {
    .Values.replicaCount }}

  template:
    spec:

      containers:

      - name: app

        image: {
   {
    .Values.image.repository }}:{
   {
    .Values.image.tag }}

        resources:

          limits:
            cpu: {
   {
    .Values.resources.limits.cpu }}
            memory: {
   {
    .Values.resources.limits.memory }}

values.yaml:

service:
  name: order-service

replicaCount: 2

image:
  repository: company/order-service
  tag: latest

resources:
  limits:
    cpu: "500m"
    memory: "512Mi"

这样一个服务部署只需要:

helm install order-service ./service-template

五、模板化真正的关键:约束,而不是自由

很多团队做模板化最后都会失败。

原因只有一个:

模板不强制执行。

开发可以随便写 YAML。

结果时间一长:

模板 A
模板 B
模板 C

整个系统又乱了。

所以我们当时做了一件比较“狠”的事情:

禁止直接提交 Kubernetes YAML。

所有服务必须走:

Helm Template

CI 会检查:

if raw_yaml_detected
then
   build_fail
fi

这样所有服务部署都必须使用模板。

慢慢整个公司就统一了。


六、模板化带来的三个巨大好处

这套体系跑了一段时间之后,好处非常明显。

1 新服务上线速度

以前:

1-2天

现在:

30分钟

开发只需要写:

values.yaml

剩下全部自动完成。


2 运维成本下降

以前:

每个服务配置不一样。

现在:

所有服务结构一致。

排查问题的时候:

deployment
service
ingress

都一模一样。


3 平台能力可以统一升级

比如要加:

sidecar
日志采集
service mesh

只需要改:

Helm 模板

所有服务自动升级。

这才是平台化的真正价值。


七、模板化的终极形态:Internal Developer Platform

很多公司做到最后都会走到一个方向:

IDP(Internal Developer Platform)

开发者不再接触:

Terraform
Helm
Kubernetes

而是只写:

service: order-service
language: go
database: mysql
cache: redis

平台自动生成:

Terraform
Helm
CI
监控
日志

一键部署。

这其实就是很多大厂在做的:

平台工程(Platform Engineering)。


最后说点我的真实感受

这些年做运维,我最大的感触其实是:

运维的终极目标是“消灭运维”。

不是裁员那种消灭。

而是:

让系统自己运行。

真正好的平台应该是这样的:

开发只管写代码:

git push

服务就自动上线。

不用申请服务器
不用写 YAML
不用找运维

目录
相关文章
|
6天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
9天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
10385 80
|
7天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
6030 16
|
8天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
5936 13
|
10天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
6137 15
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
5天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
3570 7
|
2天前
|
人工智能 JavaScript 测试技术
保姆级教程:OpenClaw阿里云及本地部署+Claude Code集成,打造全能 AI 编程助手
在AI编程工具百花齐放的2026年,Anthropic推出的Claude Code凭借72.5%的SWE-bench测试高分、25倍于GitHub Copilot的上下文窗口,成为开发者追捧的智能编程助手。但单一工具仍有局限——Claude Code擅长代码生成与审查,却缺乏灵活的部署与自动化执行能力;而OpenClaw(前身为Clawdbot)作为开源AI代理框架,能完美弥补这一短板,通过云端与本地双部署,实现“代码开发-测试-部署”全流程自动化。
1755 13
|
5天前
|
人工智能 JavaScript API
阿里云及本地 Windows 部署(OpenClaw+Ollama)保姆级教程及技能扩展与问题排查
OpenClaw(原Clawdbot)作为2026年主流的开源AI智能体工具,具备系统级操作权限,能将自然语言指令转化为文件操作、程序控制等实际行为。搭配轻量级本地大模型管理工具Ollama,可实现本地推理、数据私有化存储的全闭环;而阿里云提供的云端部署方案,则能满足7×24小时稳定运行需求。本文将详细拆解2026年阿里云与本地(Windows 11系统)部署OpenClaw的完整流程,包含Ollama模型定制、技能扩展及常见问题排查,所有代码命令可直接复制执行,零基础用户也能快速上手。
2165 3