使用 Jenkins 自动发布服务到 Kubernetes
Jenkins 是什么
- 一个比较流行的开源 CI/CD 工具
- CI/CD : 持续集成/持续部署
Kubernetes 是什么
容器化工具 -- 一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。
如何发布
流程图 :
1. jenkins - multibranch pipeline
建立一个 multibranch pipeline 类型的 jenkins 发布项目:
配置 jenkins 发布项目的参数:
2. gitlab - webhooks in gitlab
在 gitlab 项目中建立一个 webhooks,与建立的 jenkins 发布项目对应:
3. jenkins - api token for gitlab
在 jenkins 中增加 api token for gitlab :
4. Jenkinsfile - pipeline
pipeline 脚本的各个阶段 :
- 拉取代码 : ...
- 打包镜像 :...
- (确认后)以容器方式发布服务 : ...
5. 镜像构建/推送
docker build :构建本地镜像
docker login :登录镜像仓库
docker tag : 创建镜像标签
docker push :推送镜像到镜像仓库
docker rmi : 删除镜像
6. 镜像仓库 - 官方/腾讯/私有
docker hub 仓库: https://hub.docker.com/
腾讯镜像仓库:
私有仓库: 可使用 docker registry 搭建
7. 发布服务
1 . 简单更新容器的镜像地址 :
kubectl set image deployment/test-jenkins test-jenkins=${onlineImage} --namespace=${k8sNamespace} --kubeconfig=kubeconfig
2 . 使用 yaml 配置文件进行 pod 的配置修改 :
kubectl apply -f pods_deployment.yaml