Migrating Image Stream from One Openshift Image Registry to Another Image Registry with Skopeo
I have a requirement where i need to move all images from Image Registry on Openshift 3, to Image Registry on Openshift 4. There are a lot of ways to do it, such as mounting the same disk to multiple Openshift instance or move in manually using docker pull, tag and then push.
After brainstorming for quite some time, i come up with a solution of using Skopeo as a tools to do image migration. It’s a very convenient tool for handling image copying from one image registry to another.
It is actually a very simple script, first we need to capture all images within every OCP3 project,
oc get project -o template --template='{{range.items}}{{.metadata.name}}{{"\n"}}{{end}}' | while read line do oc get imagestreamtag -n $line -o template \ --template='{{range.items}}{{.metadata.namespace}}{{"/"}}{{.metadata.name}}{{"\n"}}{{end}}' > images.txt done
Use this command to capture your OCP username and token,
# capturing your username oc whoami #capturing your token oc whoami -t
And then we need to iterate the content of generated file with the username and token you get from previous command.
cat images.txt | while read line do skopeo copy --src-creds ocp3username:ocp3token --src-tls-verify=false \ --dest-creds ocp4username:ocp4token --dest-tls-verify=false \ docker://docker-registry-from.ocp3/$line \ docker://image-registry-target.apps.ocp4/$line done
After all is done, what is left is do a simple validation to count how many images has been migrated.
oc get imagestreamtag --no-headers | wc -l
No Comments