每个星期都有一个新版本,所有新的docker映像都放置到特定文件夹中。我的工作是编辑这些组件的Kubernetes部署,如果对该组件进行了任何新发行,请更新部署中的映像名称。我想使用Shell脚本自动执行此操作,因此我使用以下命令来复制所有以.tar.bz2
格式保存的docker映像,并在另一个目录中使用特定标签:
find . -type f -name "*tag*tar.bz2" -mtime -1 -exec cp {} [destination dir] \;
我的问题是
docker load
命令一起使用的确切文件名.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
,并且根据标签,应将确切的映像部署在确切的组件下。
答案 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}
的服务和部署是否在delete
和create
之前存在。