Deep Dive into Anka Registry – Version and Distribute macOS virtual machines at scale

One of the key differentiators in Veertu’s Anka solutions packages (Build And Flow) is Anka Registry for macOS virtual machines. When you look at current DevOps workflows for development on Linux, containers significantly increase CI efficiency by ensuring consistency across multiple developments and release cycles with repeatable development, build, and test environments. For individual developers, containers eliminate the “it works on my machine” problem by ensuring parity for the entire team. This parity exists across the entire environment, on CI, and on the developer machine.

Containers achieve parity with a common repository that contains the artifacts which can be used to build and run container images in a host-agnostic manner and through version management. Anka registry architecture maps this design to managing and distributing environments for development on macOS platform.

macOS natively doesn’t support the concept of running macOS containers and layered container image architecture, however, with Anka Registry we were able to superimpose the registry-based workflow on macOS VM architecture.

Let’s look at how Anka Registry achieves this. When you set up a macOS private cloud with Anka Build virtualization and cloud components, you also set up Anka registry module. Anka registry is a Ubuntu service written in Go. It’s packaged to run as a Docker container for easy deployment, but you can also run it on an Ubuntu VM or any other Linux flavor. It supports both HTTP and HTTPS communication between the registry backend and client. HTTPS is configured with NGINX.

After deploying Anka Registry, engineers can push macOS Anka VMs from the machines running the Anka client package (Anka Flow or Anka Build). In traditional VM storage concepts that exist today, the entire VM is packaged, copied over, stored and managed. This fails to provide benefits of efficiently managing images for dev/test and ensuring consistency across all systems. Anka Registry `push` breaks the macOS VM into the VM configuration and into delta image files. First time push for a macOS VM moves over the VM configuration and the entire VM together. Any subsequent changes to this Anka macOS VM get tagged for version management, and registry `pull` analyzes the VM images and moves only the deltas. The result is a significant reduction in the network requirements and a swift push operation.

Anka also provides the ability to “Instant Start” macOS VMs, which is critical for when you want to set up on-demand provisioning for macOS VMs for development and test CI jobs. For these operations, Anka Build works with macOS VMs stored in the suspended state in the Registry. Things get very interesting when you push and pull suspended-state VMs. In addition to managing the deltas in images for the macOS VMs, with suspended VMs Anka Registry also maintains the state of the VM so that when it’s pulled, it comes over in the same state and is available right away for job execution.

Anka registry pulls also operate similarly to registry push. The first-time pull of an Anka macOS VM will get the entire VM configuration and images. Any subsequent pull request for the same VM analyzes the dependencies and pulls only the deltas.

More optimizations occur when you clone Anka macOS VMs and store and manage them in Anka registry. Registry pull and push use the same concepts of managing deltas and dependencies to reduce the overall footprint on client machines and provide flexibility for easily reproducible macOS environments that start instantly.

We are working on some other exciting ideas for the future roadmap, which will bring this concept even closer to a real container architecture for creating and managing macOS environments for development test. Stay tuned.

Share this post

Unlocking Superior macOS VM Network Performance: Introducing Anka's new networking mode for Apple Silicon
Large and complex enterprises using Anka have many different demands, and we have worked to continue to develop innovative technology to meet these demands. Enterprise infrastructure hardware is often on the cutting edge, and they need advanced capabilities...
Read More
Anka Cloud Gitlab Executor
Veertu’s Anka and the new Anka Cloud Gitlab Executor Veertu’s Anka is a suite of software tools built on the macOS virtualization platform. It enables the execution of single or multi-use macOS virtual machines (VMs) in a manner similar to Docker....
Read More
Real-Time CVE Scanning of your macOS Build Systems
It’s common that an organization’s macOS build system will download thousands, sometimes tens of thousands of third-party dependencies every hour. When building and testing iOS applications, it typically downloads and installs third-party...
Read More
The ONLY Fully Automated Apple Silicon macOS VM Creation Solution
Starting in Anka 3.1 we announced that Anka is now able to fully automate the macOS installation processes, disabling SIP, and enabling VNC — all previously manual steps users had to perform inside o the VM. At the time of writing this article,...
Read More
Scripting macOS UI User Actions With Anka Click
Starting in Anka 3.2, we’ve introduced a solution for scripting macOS UI user actions. You may ask, “Why would I want to do that?”. Well, often macOS configuration and applications do not have a CLI allowing you to perform certain actions...
Read More
Real-time, continuous scan of file downloads on macOS for security vulnerabilities
Today, we are announcing the Beta availability of the Mac Scan solution. Mac Scan software runs on macOS systems (bare metal, virtual, EC2 Mac) and scans downloads in real time for security vulnerabilities. There are multiple scenarios why you would...
Read More
Screen Shot 2022-10-17 at 10.13
Anka 3.1- Fully automated VM macOS installation & The Behavior-Driven macOS UI Automation Framework
We are very happy to announce the General Availability of Anka 3.1 for Apple Silicon / ARM macs. In this release, we are taking our approach to iOS CI automation one step further by introducing a Behavior-Driven macOS UI Automation Framework in Anka,...
Read More
Migrating from Anka on Intel to Anka on M1 Mac for iOS CI
In this blog, we will cover the key topics for migrating from Anka on Intel to Anka on M1/M2 Macs. Anka is an IaaC solution from Veertu to set up an agile Container like CI for iOS CI using macOS VMs. Anka for Intel uses Apple’s Hypervisor.Framework virtualization...
Read More
World's first Security Vulnerability scanner for EC2 Mac AMIs
We are excited to announce the General Availability of the world’s first security vulnerability scanner for EC2 Mac AMIs. EC2 Mac AMI Scan scans Intel and Apple Silicon macOS EC2 AMIs, detects security vulnerabilities in third-party packages, dependencies,...
Read More
It's time to migrate your iOS CI from ESXi Virtual Mac Infrastructure to native macOS Virtualization
When VMWare ESXi started officially supporting Apple macOS Virtualization on Mac hardware in late 2012, it opened the doors for the possibility of iOS development to move to a Linux-like, agile, scalable CI infrastructure. Soon enough, many iOS enterprise...
Read More