每周都会有一个新的版本,所有新的docker镜像都会落到一个特定的文件夹中。我的工作是编辑这些组件的Kubernetes部署,如果在该组件上做了任何新的发布,就更新部署中的镜像名称。我想使用一个shell脚本自动完成,所以我使用下面的命令来复制所有保存在 .tar.bz2
格式,并在另一个目录中使用特定的标签。
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
文件,并且根据标签,确切的镜像应该部署在确切的组件下。
不管是什么原因,在你的情况下,你不能直接从docker注册表服务器拉取镜像,你的脚本可以改进很多。
#! /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
它。