This script lists all images that are present on any of the cluster's nodes and determines the platforms supported by the image.
It uses the crane
tool for detecting supported platforms.
Example usage:
$ ./get-all-image-platforms.sh
Checking docker.io/calico/cni:v3.24.1
=> supports: ["linux/arm","linux/amd64","linux/arm64","linux/ppc64le"]
Checking docker.io/calico/kube-controllers:v3.24.1
=> supports: ["linux/arm","linux/amd64","linux/arm64","linux/ppc64le"]
[
{
"image": "docker.io/calico/cni:v3.24.1",
"platforms": [
"linux/arm",
"linux/amd64",
"linux/arm64",
"linux/ppc64le"
]
},
{
"image": "docker.io/calico/kube-controllers:v3.24.1",
"platforms": [
"linux/arm",
"linux/amd64",
"linux/arm64",
"linux/ppc64le"
]
}
]
Save to a file for further analysis:
$ ./get-all-image-platforms.sh > /tmp/images.json
Checking docker.io/calico/cni:v3.24.1
=> supports: ["linux/arm","linux/amd64","linux/arm64","linux/ppc64le"]
Checking docker.io/calico/kube-controllers:v3.24.1
=> supports: ["linux/arm","linux/amd64","linux/arm64","linux/ppc64le"]
...
Find all images that don't support linux/arm64
yet:
$ cat /tmp/images.json | jq -r '. - map(select(.platforms[] | contains("linux/arm64"))) | .[].image'
gcr.io/istio-release/pilot:1.14.1-distroless
gcr.io/istio-release/proxyv2:1.14.1-distroless