While Porter bundles can only run on amd64 hosts, you can deploy mult-arch images to other platforms, such as an ARM64 environment. This example demonstrates how to deploy a helm chart that uses a multi-arch image to an ARM64 kubernetes cluster.
-
Create a file named "mycluster.yaml" with the following contents. Edit the path to the kubeconfig file to the location where your kubeconfig file.
schemaType: CredentialSet schemaVersion: 1.0.1 name: mycluster credentials: - name: kubeconfig source: path: $HOME/.kind/config # TODO: Edit this path
-
Apply the credential set
porter credentials apply mycluster.yaml
-
Install the bundle
porter install -r ghcr.io/getporter/examples/helm-multiarch:v0.1.0 -c mycluster
Now that the bundle is installed successfully, let's verify that the deployed image was ARM64.
- Ensure that your KUBECONFIG environment variable is pointing to the cluster to which you just deployed.
- Get the image that was deployed and save that value to an environment variable
IMG=`k get pods -o yaml -l app.kubernetes.io/instance=porter-helm-nginx -o=jsonpath='{.items[0].status.containerStatuses[0].imageID}'`
- Pull the deployed image so that you can inspect it
docker pull $IMG
- Inspect it to see the architecture of the image
$ docker image inspect $IMG -f "{{.Architecture}}" arm64
As you can see, while Porter bundles can't run directly on a ARM64 host, they can deploy to ARM64 environments using multi-arch images! 🎉