🙆‍♀️

kubernetes上で利用されているイメージをプライベートレジストリにゴッソリ載せあげるワンライナー

2022/11/26に公開

現状利用しているコンテナイメージを全部プライベートネットワーク内にあるHarborに載せあげたい

前提

imagesプラグインを使う

kubectl-krew install images

ワンライナー

起動しているPod一式からimage名を取得し、docker pull,tag,pushをしている

kubectl images -A -o json | jq -r .[].image | xargs -I{} sh -c 'DEST=$(echo {} | awk \'{ if (gsub(".*?/", "harbor.vamdemic.local/k8s/")) print}\') ; docker pull {} ; docker tag {} $DEST ; docker push $DEST'
  • awkのgsubでホスト名の部分を置換している
    -registry.k8s.io/kube-proxy:v1.25 の場合、registry.k8s.ioの部分
    • .*?/は最初に登場する/まで

ギモン

harborだと、プロジェクトなしでルートディレクトリにPushすることはできない感じ?

Discussion