Istio 1.15 adds support for arm64 architecture processors

Istio is one of the three core technologies of the container-based cloud native technology stack, the other two being Kubernetes and Knative. Among them, Kubernetes and Knative have already supported the arm64 architecture, and even Istio’s data plane Envoy is as early as version 1.16
The arm64 architecture is already supported (October 2020). With the release of Istio 1.15
, you can deploy Istio on the arm64 architecture out of the box, you don’t need to compile the image for the arm architecture yourself.

How to install Istio on arm architecture before Istio 1.15?

By default, Istio uses Docker Hub as the production image repository and Google Container Registry as the production and test repository. For versions 1.14 and earlier, there are only amd64 architecture images in the official Istio image repository. If your Kubernetes cluster is running under the arm architecture, the following error will appear when installing Istio:

 exec user process caused: exec format error

In this case, you need to re-designate a repository containing the arm64 architecture image for the Istio installation. When installing Istio, execute the following command to specify the image repository:

 $ istioctl install --set profile = demo --set hub = docker.io/mydockerhub -y

At this point, to use Istio on arm64 architecture, you can use someone in the Istio community to build an image of the arm64 architecture separately for Istio
, or build the mirror yourself.

What has Istio done to support arm?

In order for Istio to support arm, the following binaries or images need to be compiled based on the arm architecture:

  • istioctl : This is the easiest part, you only need to use the cross-compilation of the Go language, which is already supported in the early version of Istio;
  • pilot : the image running in the control plane Istiod;
  • proxyv2 : Mirror used in Ingress Gateway, Egress Gateway and Sidecar via Kubernetes mutating webhook
    automatic injection;

Envoy in the Istio data plane is forked from the official Envoy repository, but Envoy already supports arm64, why is it not officially supported by Istio? This is because on the one hand Istio’s official CI environment prow.istio.io
Running on GKE, and there is no arm64 architecture environment on GKE, so the test cannot be executed. GKE will not officially provide virtual machines with arm64 architecture until July 2022, when Istio with arm64 architecture can be easily compiled and tested. For details, see Run your Arm workloads on Google Kubernetes Engine with Tau T2A VMs
.

Notice
Istio officially only provides images for the amd64 and arm64 architectures, and does not support arm32.

As for the image building of the arm architecture, you can use Docker BuildKit to achieve multi-platform builds. You can use the following command to compile the image of the specified arm platform architecture:

 docker buildx build --platform linux/arm64

For more information on docker buildx please refer to the Docker documentation
.

You can install Istio as usual, and Kubernetes Node will automatically pull up the image corresponding to the platform architecture according to the architecture of the node.

This article is reprinted from https://jimmysong.io/blog/istio-arm64-support/
This site is for inclusion only, and the copyright belongs to the original author.

Leave a Comment