By Envoy Contributors: Kushal Koolwal (Arm), Jingzhao Ni (Arm), Matt Klein (Envoy/CNCF), Lizan Zhou (Tetrate)
Software applications are being created and rewritten with a “cloud-native first” mindset, leveraging principles of containerization and its orchestration, microservices, and delivering them through DevOps. This trend is rapidly expanding from cloud/data center to all the way to Edge/IoT devices.
The Cloud Native Computing Foundation (CNCF) advances and nurtures cloud-native open source projects, enabling a thriving diverse community of developers to contribute and make the projects successful. Envoy, a graduated CNCF project, is an open source edge and service proxy, designed for cloud-native applications.
Over the past couple of years Arm has invested heavily in the cloud-native software ecosystem and is currently a CNCF platinum member. Arm’s goal is to stay laser-focused towards making the developer experience on Arm architecture frictionless through building out software stacks and enabling a complete set of developer tools to the community. This builds on a rich software ecosystem available on Arm, including databases, operating systems, container and kubernetes frameworks, languages, libraries, tools, build systems, etc. The combination of these enables developers to maximize performance and functionality when using Arm Neoverse IP and CPU architecture.
In order to successfully adopt cloud native technologies, there is a critical need to build scalable APIs for service mesh solutions such as Istio, AWS App Mesh, Consul Connect, etc. Envoy makes that enablement seamless and we are pleased to announce Envoy Arm64 CI support.
The teams from the Envoy project and Arm developers were able to set-up a CI build environment for Arm64 and enable multi-architecture builds for Envoy.
Multi-purpose applications need multi-architecture compute
Applications are evolving to serve broader use cases which puts greater emphasis on the underlying computing platform to support the performance, efficiency and power requirements needed. To develop these sophisticated applications, it is becoming imperative for projects to make sure they can build and test for various hardware architectures. Having a robust continuous integration (CI) build environment is a foundational step towards multi-architecture builds.
Depending on your needs and use-cases, there are numerous Arm64 platforms available in the market ranging from single board computers, embedded platforms to edge, HPC and cloud platforms. In this case the team used AWS Graviton2 instances which provide up to 40% better price performance over comparable current generation x86-based instances for a wide variety of workloads.
Arm64 CI Tools & Environment
Expanding CI Ecosystem on Arm
Most mainstream CI tools support Arm64 hardware, including AWS CodePipeline, Azure Pipelines, Drone.IO, Travis CI, GitLab, GitHub Actions, and Jenkins. In this particular case, the team went ahead with Azure Pipelines since it is the primary CI framework that the Envoy project uses. As of June 2020, Azure Pipelines agent officially supports Linux/Arm64 hardware.
Enabling Arm64 CI with Envoy
As of today, the Arm64 CI environment has been built on top of AWS Graviton2 instances and Azure Pipelines with an Arm64 job running for a few months in the Envoy community to verify Arm64 binaries. Also, the unit-test enablement patches and the Envoy Docker Arm64 image patches have been recently merged into the Master branch.
We encourage developers to collaborate and contribute to Envoy proxy for Arm architecture and further enhance it in a true open source spirit – collectively we are smarter and better than just any one of us.