DevOps实践入门:CI/CD、容器化和监控从0到1
CI/CD流水线
持续集成(CI)要求开发人员每天多次将代码合并到主干分支。每次合并自动触发构建和单元测试。如果测试失败,第一时间通知提交者修复。持续集成的核心价值是把集成地狱(多人各自开发后一次性合并大量冲突代码)变成每天多次小冲突随时解决。持续交付(CD)在持续集成通过后自动将代码部署到预发布环境。持续部署更进一步——预发布验收通过后自动上线生产环境。GitHub Actions是目前最易上手的CI/CD平台。在项目根目录下创建.github/workflows目录写一个YAML文件就能定义构建、测试和部署的自动化流程,免费额度对个人和小团队来说基本够用。
容器化
Docker把应用和它的所有依赖(操作系统库、运行时、配置文件)打包进一个轻量级容器镜像。在任何装了Docker的机器上拉取镜像就能运行,彻底解决了在我电脑上能跑啊的经典问题。用Dockerfile定义镜像的构建步骤非常直观——FROM选择一个基础镜像、COPY复制项目文件、RUN安装依赖、CMD指定启动命令,简单几步就搞定了。Kubernetes(K8s)是容器编排的事实标准。对于几台机器的小规模部署用Docker Compose就够了,不需要上K8s。当容器数量超过10个、节点超过3台时需要K8s来做自动调度、弹性伸缩、服务发现和滚动更新。K8s非常复杂(学习曲线陡峭),建议先用云厂商的托管K8s服务(ACK/TKE等)降低运维门槛。
监控和可观测性
Prometheus加Grafana是开源监控领域的事实标准组合。Prometheus负责采集和存储时序指标数据(CPU、内存、QPS、响应延迟等),Grafana负责可视化和告警。对于业务监控ELK三件套(Elasticsearch + Logstash + Kibana)依然是日志分析的首选。所有服务的日志统一采集送到Elasticsearch做全文索引,在Kibana上通过可视化查询快速定位错误和异常的请求链路。