自动部署新构建的Docker映像

时间:2020-05-05 20:37:54

标签: shell kubernetes

每个星期都有一个新版本,所有新的docker映像都放置到特定文件夹中。我的工作是编辑这些组件的Kubernetes部署,如果对该组件进行了任何新发行,请更新部署中的映像名称。我想使用Shell脚本自动执行此操作,因此我使用以下命令来复制所有以.tar.bz2格式保存的docker映像,并在另一个目录中使用特定标签:

find . -type f -name "*tag*tar.bz2" -mtime -1 -exec cp {} [destination dir] \;

我的问题是

  1. 找到要与docker load命令一起使用的确切文件名
  2. 使用.tar.bz2文件中的标签更新正确的组件

我想使用“ if”语句来执行以下操作:

#! /bin/sh

 word = myword

 if [ $word = myword ]
 then 
   docker load < 
   kubectl delete svc,deployment myword -n namespace
   kubectl create -f /home/ubuntu/dockerimage/yaml/myword.yaml
fi

word = myword

 if [ $word = myword1 ]
 then 
   docker load < 
   kubectl delete svc,deployment myword1 -n namespace
   kubectl create -f /home/ubuntu/dockerimage/yaml/myword1.yaml
fi 

此脚本应执行docker load文件中的.tar.bz2,并且根据标签,应将确切的映像部署在确切的组件下。

1 个答案:

答案 0 :(得分:0)

无论您出于何种原因无法直接从docker Registry Server中提取图像,都可以对脚本进行很多改进。

#! /bin/sh

if [ $# -lt 1 ]; then
    echo "Usage: $0 <name>"
    exit 1
fi

word = $1

docker load < 
kubectl delete svc,deployment ${word} -n namespace
kubectl create -f /home/ubuntu/dockerimage/yaml/${word}.yaml

您可以添加一些条件来检查文件/home/ubuntu/dockerimage/yaml/${word}.yaml是否存在以及${word}的服务和部署是否在deletecreate之前存在。