github编辑

21.1 DevOps 完整工作流

本章将演示一个基于 Docker、Kubernetes 和 Jenkins/GitLab CI 的完整 DevOps 工作流。

21.1.1 工作流概览

  1. Code:开发人员提交代码到 GitLab。

  2. Build:GitLab CI 触发构建任务。

  3. Test:运行单元测试和集成测试。

  4. Package:构建 Docker 镜像并推送到 Harbor/Registry。

  5. Deploy (Staging):自动部署到测试环境 Kubernetes 集群。

  6. Verify:人工或自动化验证。

  7. Release (Production):审批后自动部署到生产环境。

21.1.2 关键配置示例

本节通过一组最小可用的片段,展示典型 DevOps 流程中与 Docker 相关的关键配置。

1. Dockerfile 多阶段构建

使用 Docker 多阶段构建可以有效减小镜像体积。

Dockerfile 内容如下:

## Build stage

FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o main .

## Final stage

FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/main .
CMD ["./main"]

2. GitLab CI 配置

GitLab CI(.gitlab-ci.yml)配置如下:

21.1.3 最佳实践

  1. 不可变基础设施:一旦镜像构建完成,在各个环境(Dev、Staging、Prod)中都应该使用同一个镜像 tag(通常是 commit hash),而不是重新构建。

  2. 配置分离:使用 ConfigMap 和 Secret 管理环境特定的配置,不要打包进镜像。

  3. GitOps:考虑引入 ArgoCD,将部署配置也作为代码存储在 Git 中,实现 Git 驱动的部署同步。

最后更新于