更新k8s镜像
# 介绍
本文将介绍如何通过codingci kubectl插件,方便快速更新k8s环境镜像。
# 单仓库使用示例
仓库结构示例:
├── base-chart # Helm Chart 模板,可用于使用模板批量创建服务
├── full-charts # 多个 Helm Chart,service1、service2、service3 分别有完整独立的 Helm Chart 配置
├── general-chart # Helm Chart 模板,不可用于使用模板批量创建服务
├── k8s-yaml # K8s YAML 配置文件,用于 K8s YAML 项目
│ ├── service1 # service1 完整的配置
│ │ ├── build.sh # service1 构建脚本
│ │ ├── Dockerfile # service1 Dockerfile
│ │ └──service1.go # service1 服务代码
│ ├── service2 # service2 完整的配置
│ ├── service3 # service3 完整的配置
│ └── template.yaml # service1/service2/service3 的 K8s YAML 服务模板
├── src # 服务源代码
├── values # 使用 base-chart 模板批量创建服务时,多个服务的 values 文件
└── .coding-ci.yml # codingci配置文件
.coding-ci.yml
dev/service1/*:
push:
- services:
# 流水线中启用 docker 服务
- docker
docker:
image: golang:1.17
# 导入环境变量
imports: https://xxx/secret.yml
stages:
- name: service1 build
script: cd ./src/service1/;sh ./build.sh
- name: docker login
script: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD xxx.com
- name: docker build
script: docker build -t xxx.com/xxx/docker-1:latest ./src/service1
- name: docker push
script: docker push xxx.com/xxx/docker-1:latest
- name: 使用 kubectl更新pod镜像版本
imports: https://xxx/kube-config.yml
image: bitnami/kubectl
commands: |
echo "$KUBECF" > ~/.kube/config
kubectl set image deployment/nginx nginx=nginx:1.9.1 -n namespace
# 多仓库模式使用示例
各微服务仓库目录结构示例:
├── Chart.yaml # Chart 中所必须的 chart.yaml 文件
├── templates # Chart 中的模板目录,5 个微服务的 K8s YAML 配置声明
│ ├── db.yaml
│ ├── redis.yaml
│ ├── result.yaml
│ ├── vote.yaml
│ └── worker.yaml
│── values.yaml # Chart 默认的配置值
│── build.sh # 微服务构建脚本
│── Dockerfile # 微服务Dockerfile
└── .coding-ci.yml # codingci配置文件
# 微服务1仓库
.coding-ci.yml
master:
push:
- services:
# 流水线中启用 docker 服务
- docker
docker:
image: golang:1.17
# 导入环境变量
imports: https://xxx/secret.yml
stages:
- name: service1 build
script: sh ./build.sh
- name: docker login
script: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD xxx.com
- name: docker build
script: docker build -t xxx.com/xxx/docker-1:latest .
- name: docker push
script: docker push xxx.com/xxx/docker-1:latest
- name: 使用 kubectl更新pod镜像版本
imports: https://xxx/kube-config.yml
image: bitnami/kubectl
commands: |
echo "$KUBECF" > ~/.kube/config
kubectl set image deployment/nginx nginx=nginx:1.9.1 -n namespace
# 微服务2仓库
.coding-ci.yml
master:
push:
- services:
# 流水线中启用 docker 服务
- docker
docker:
image: golang:1.17
# 导入环境变量
imports: https://xxx/secret.yml
stages:
- name: service2 build
script: sh ./build.sh
- name: docker login
script: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD xxx.com
- name: docker build
script: docker build -t xxx.com/xxx/docker-2:latest .
- name: docker push
script: docker push xxx.com/xxx/docker-2:latest
- name: 使用 kubectl更新pod镜像版本
imports: https://xxx/kube-config.yml
image: bitnami/kubectl
commands: |
echo "$KUBECF" > ~/.kube/config
kubectl set image deployment/nginx nginx=nginx:1.9.1 -n namespace
# 更多用法
← 部署到云主机(堡垒机) 微信小程序 →