自动部署新构建的docker镜像

问题描述 投票:0回答:1

每周都会有一个新的版本,所有新的docker镜像都会落到一个特定的文件夹中。我的工作是编辑这些组件的Kubernetes部署,如果在该组件上做了任何新的发布,就更新部署中的镜像名称。我想使用一个shell脚本自动完成,所以我使用下面的命令来复制所有保存在 .tar.bz2 格式,并在另一个目录中使用特定的标签。

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 文件,并且根据标签,确切的镜像应该部署在确切的组件下。

shell kubernetes
1个回答
0
投票

不管是什么原因,在你的情况下,你不能直接从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} 先有 deletecreate 它。

© www.soinside.com 2019 - 2024. All rights reserved.