在使用 Amazon EKS (Elastic Kubernetes Service) 管理容器化应用程序时,我们经常需要更新应用程序的 Docker 镜像,并重新部署服务。这个过程包括构建新的 Docker 镜像、推送到 Amazon ECR (Elastic Container Registry)、更新 EKS 节点组的 AMI (Amazon Machine Image) 以及重新部署 Kubernetes 服务。手动执行这些步骤不仅繁琐,而且容易出错。
为了简化这个过程,我编写了一个 Bash 脚本,可以自动完成上述所有步骤。该脚本具有以下功能:
- 构建新的 Docker 镜像并推送到 Amazon ECR
- 获取 BottleRocket AMI 的快照 ID
- 更新 EKS 节点组的 AMI 快照 ID
- 更新 Kubernetes Deployment 的镜像版本
- 发送 DingDing 通知,通知重启成功
注:提前创建ECR仓库
脚本代码
#!/bin/bash
# 设置环境变量
ENV=test
USER=${ENV}-ai
HOST=10.0.9.136
SERVER_NAME=tree
IMAGE_REPO="820600610568.dkr.ecr.us-east-1.amazonaws.com/ai"
DINGDING_TOKEN=11113ac39475ee92bfebbc1159b6369d42b9
# 构建 Docker 镜像并推送到 ECR
build_image(){
lo