场景化封装 腾讯云 容器服务 API 实现工作负载 Deployment 、StatefulSet 类型的镜像更新操作
secret_id 密钥 ID, 详情见 doc/access.mdsecret_key 密钥 Keyregion 集群地域, 格式如:ap-nanjing。详情见 doc/regions.mdcluster_id 集群ID, 格式如: cls-m9miwj4unamespace 工作负载所在的集群命名空间, 如 defaultworkload_kind 工作负载类型. 支持 deployment、statefulsetworkload_name 工作负载名称container_names 容器名称, 如有多个用英文,分割container_images 待更新的容器最新镜像, 如有多个用英文,分割check_rollout_timeout (可选参数) 更新后监控 pod 滚动时间, 单位分钟, 整数. 设置为 0 则跳过等待cloud_api_endpoint (可选参数) 腾讯云 API 请求地址. 默认为腾讯云基础网络内部地址。如有公网访问需求可配置为 tke.tencentcloudapi.com当镜像推送至 CNB 的 Docker 仓库后,TKE 工作负载 Pod 拉取镜像时需要配置鉴权信息。
前往 Docker image 所在仓库创建部署令牌(Deploy Token),注意勾选制品权限:
read_registry 权限使用上一步生成的部署令牌,在目标 Namespace 中创建 kubernetes.io/dockerconfigjson 类型的 Secret:
kubectl create secret docker-registry cnb-registry-secret \ --docker-server=<CNB镜像仓库地址> \ --docker-username=<部署令牌用户名> \ --docker-password=<部署令牌密码> \ -n <命名空间>
| 字段 | 说明 |
|---|---|
<CNB镜像仓库地址> | CNB 镜像仓库地址(如 docker.cnb.cool 或自定义域名) |
<部署令牌用户名> | 上一步生成的部署令牌用户名 |
<部署令牌密码> | 上一步生成的部署令牌密码 |
<命名空间> | 工作负载所在的 Namespace |
在工作负载(Deployment / StatefulSet)的 YAML 中指定 imagePullSecrets:
spec:
template:
spec:
imagePullSecrets:
- name: cnb-registry-secret # 上一步创建的 Secret 名称
containers:
- name: my-app
image: docker.cnb.cool/your-repo/image:tag
💡 如果集群中有多个命名空间的负载需要拉取 CNB 镜像,需要在每个 Namespace 下分别创建对应的 Secret。
check_rollout_timeout 为 0 则跳过等待)。# 更新示例镜像配置
main:
push:
- stages:
- name: 使用tke插件更新镜像
image: tencentcom/deploy-to-tke
settings:
secret_id: AKID***MpL4
secret_key: mRH1***wu0C
region: ap-***
cluster_id: cls-***
namespace: default
workload_kind: deployment
workload_name: my-***-deployment
container_names: container-***-1
# 可以使用变量形式如 container_images: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:${CNB_COMMIT}
container_images: nginx-***:v1
如果不希望写密钥明文、可以在密钥(私有)仓库增加一份密钥信息文件 your_secrets.yaml,内容如下:
# your_secrets.yml
secret_id: AKID***MpL4
secret_key: mRH1***wu0C
配置 .cnb.yml,引用上述文件导入环境变量,内容如下:
# 更新示例镜像
main:
push:
- stages:
- name: 使用tke插件更新镜像
image: tencentcom/deploy-to-tke
settingsFrom: https://cnb.cool/***/my-secret-repo/-/blob/main/your_secrets.yaml
settings:
region: ap-***
cluster_id: cls-***
namespace: default
workload_kind: deployment
workload_name: my-***-deployment
container_names: container-***-1
container_images: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:${CNB_COMMIT}
# b.高级用法 完
docker run --rm \ -e PLUGIN_SECRET_ID="***" \ -e PLUGIN_SECRET_KEY="***" \ -e PLUGIN_REGION="ap-shanghai" \ -e PLUGIN_CLUSTER_ID="cls-***" \ -e PLUGIN_NAMESPACE="development" \ -e PLUGIN_WORKLOAD_KIND="deployment" \ -e PLUGIN_WORKLOAD_NAME="my-***-deployment" \ -e PLUGIN_CONTAINER_NAMES="container-***-1,container-***-2" \ -e PLUGIN_CONTAINER_IMAGES="nginx-***:v1,nginx-***:v2" \ tencentcom/deploy-to-tke
本插件对在腾讯云 cloud.tencent.com 及腾讯云国际站 www.tencentcloud.com 上购买的 TKE 集群,验证通过。