🙆♀️
kubernetes上で利用されているイメージをプライベートレジストリにゴッソリ載せあげるワンライナー
現状利用しているコンテナイメージを全部プライベートネットワーク内にある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