背景:springboot项目部署到K8S,利用git代码提交,然后触发ci流水线,构建Docker镜像,推送镜像到仓库,CD流水线部署到容器环境。
1. 具体步骤
(1) 代码提交与触发流水线
-
触发条件:代码推送到 Git 仓库(如
git push
到 main 分支)。 -
工具支持:
-
GitLab CI/CD:通过
.gitlab-ci.yml
定义流程。
-
(2) 构建 Docker 镜像
-
CI 脚本示例(GitLab CI/CD):
build_image:
stage: build
script:
- docker build -t my-app:$CI_COMMIT_SHA .
only:
- main
(3) 推送镜像到仓库
-
镜像仓库:Docker Hub、GitHub Container Registry、私有仓库(如 Harbor)。
-
认证:通过 CI/CD 变量存储凭据(如
DOCKER_USERNAME
和DOCKER_PASSWORD
)。yaml
复制
push_image: stage: push script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker tag my-app:$CI_COMMIT_SHA my-registry.com/my-app:latest - docker push my-registry.com/my-app:latest
(4) 部署到容器化环境
-
目标环境:Kubernetes、Docker Swarm、云服务(如 AWS ECS)。
-
部署方式:
-
直接更新镜像(适用于单节点):
yaml
复制
deploy: stage: deploy script: - kubectl set image deployment/my-app my-app=my-registry.com/my-app:latest
-
通过 Helm/Kustomize(适用于复杂应用):
yaml
复制
deploy: script: - helm upgrade my-app ./charts/my-app --set image.tag=$CI_COMMIT_SHA
-