在一家创业公司做技术负责人,最头疼的不是写代码,而是每次上线都像打仗。开发说本地没问题,运维说环境不一致,测试又发现漏了配置。后来我们把整套流程搬到云上搞DevOps,配合几个趁手的工具,现在上线点个按钮就行。
自动化部署从CI/CD开始
我们用的是GitLab CI + Kubernetes的组合。代码一合并,自动触发构建镜像、推送到云仓库,再滚动更新到测试环境。以前手动部署半小时起步,现在三分钟搞定。下面是个简单的.gitlab-ci.yml片段:
deploy-to-staging:
stage: deploy
script:
- docker build -t registry.example.com/app:$CI_COMMIT_SHA .
- docker push registry.example.com/app:$CI_COMMIT_SHA
- kubectl set image deployment/app-container app=registry.example.com/app:$CI_COMMIT_SHA --namespace=staging配置管理别再靠Excel传密码了
以前数据库密码、API密钥全靠文档和口头传递,新同事入职光配环境就得两天。现在用HashiCorp Vault存敏感信息,结合Terraform定义云资源。比如创建一个RDS实例,直接用代码描述:
resource "aws_rds_cluster" "main" {
cluster_identifier = "prod-cluster"
engine = "aurora-mysql"
master_username = "admin"
master_password = vault_read("secret/db_prod").data.password
}改配置就像改代码一样走PR流程,谁动过什么一目了然。
监控告警得看得懂人话
上了云之后服务器看不见摸不着,出问题不能靠“重启试试”。我们用Prometheus抓指标,Grafana做看板,再配上钉钉机器人推送。有一次半夜接口变慢,手机直接弹消息:“订单服务P95延迟突破800ms”,点开链接就是对应的图表。查下来是缓存穿透,第二天就补了布隆过滤器。
小团队也能玩转DevOps
很多人觉得DevOps是大厂的玩具,其实中小团队反而更需要。云服务商提供了大量托管服务,比如阿里云的ARMS、腾讯云的CODING,不用自己搭Jenkins也能跑流水线。关键是把重复的手工操作变成可复用的模板,省下来的时间多陪家人不香吗?
现在我们团队每周五下午固定做一次“混沌演练”——随机杀几个Pod,看看系统能不能自愈。刚开始怕出事,后来发现这种压力测试反而让我们更安心。毕竟真出故障时,系统比人反应快多了。