Introduction to Anka

Release Notes

Check out the latest release notes for Anka Build and Anka Flow.

Introduction

What is Anka Build?

Anka Build solution is used to create, manage and distribute build and test macOS reproducible virtual environments for iOS and macOS development. The core of the Anka toolset is a native macOS hypervisor built on top of FreeBSD bhyve and xhyve and leverages Apple’s macOS Hypervisor.Framework for virtualization. Anka hypervisor includes special PV network and disk drivers that are required for high performance operations inside the Anka VMs. The Anka toolset also includes Cloud management service - Controller and a Registry. Anka Controller is used to configure and manage macOS cloud on a cluster of mac hardware host machines running Anka Build package, for development purposes. Anka Registry is used to version control macOS build and test VMs and distribute them to Anka Build private macOS cloud.

The Anka virtualization application package comes with a command line interface (anka) that allows for easy, straightforward management of guest virtual machines built with Anka. As you’ll learn, anka also provides the ability to interact with a remote Anka registry, and is purpose-built for engineers working in macOS or iOS development workflows. We think of Anka as a simple toolset that allows you to build your own private macOS private cloud and manage the macOS Infrastructure-as-a-code, whatever your purpose may be. Anka interface allows devops to manage macOS build and test infrastructure as a code, very similar to working with containers.

What is Anka Flow?

Anka Flow is used to create and run macOS Vm development environments on developer mac workstations. Anka Flow is extremely lightweight application package that gets installed as a mac application on all Macbook models and iMac. It enables iOS and macOS developers to pull macOS VMs from a central registry and run them locally. Developers can attach iOS and other devices as USB devices to macOS VMs for testing purposes.

What makes Anka Build and Flow different?

Unlike many existing macOS virtualization solutions, Anka lets the macOS operationg system manage virtual machines in the same manner as other native macOS applications. Anka virtualization uses macOS native Hypervisor features. As a result, it can run on any mac heardware, including the ones with T2 security chip.

Combined with the powerful anka CLI, Anka makes creating and running macOS VMs extremely automated, fast and reliable. Using anka, Controller & Registry you can execute simple workflows to quickly build macOS virtual machines and deploy them to your developers, or CI with ease.

anka allows for other advantages as well, such as INSTANT START, to make multiple virtual machines extremely fast and responsive to your needs. Anka Registry lets you tag and version control your VMs, and is built specifically with DevOps workflows in mind. Lastly, Anka is the ONLY virtualization solution geared specifically towards making macOS and iOS CI workflows easy to manage. anka allows you to use real iOS devices for testing workflows while connected to your Apple hardware. Anka provides commands to easily manage the devices, check them out, or move them between test environments.

What does Anka Build and Flow do?

At a high level, Anka virtualizes macOS to create, run macOS Vms and enables you to use simple and automated DevOps workflows when working with macOS virtual machines and physical iOS devices. Anka boasts the following features:

General

  • Easy installation
  • Native hypervisor - use macOS resource scheduling and power management for guest VMs
  • Para virtual drivers increase network and disk performance inside Anka macOS VMs
  • anka CLI - automate management workflows or call them directly

Continuous Delivery and Integration

  • Automate the deployment of new virtual machines
  • Integrate with your CI system using Controller REST APIs for VM management
  • Manage macOS infrastructure-as-a-code
  • INSTANT START - Eliminates the long boot time issue with macOS VMs, making running multiple VMs extremely fast and responsive
  • Use Registry to version and tag virtual machines for distribution
  • Easily connect and remove physical iOS devices to your VMs with anka usb command

What’s included in Anka Build?

Anka Build solution includes anka.pkg, Controller/Registry and plugins to integrate with existing commonly used CI systems like Jenkins, Teamcity, GitLab CI, BuildKite etc.

What’s included in Anka Flow?

Anka Flow solution includes anka.pkg to run on developer mac workstations.

Who should use Anka Build and Flow?

Anka is for anyone using bare metal Apple hardware for CI purposes (macOS/iOS development).

Anka is for anyone that prefers to test in an isolated macOS virtual machine.

Anka is for anyone looking to build or host their own macOS private cloud.

Anka is for anyone wanting to maximize developer productivity by enabling local build and test workflows.

What is Anka Secure?

Anka Secure solution enables you to create macOS VMs, assign policies to the VM(network policies, sharing policies etc) and enable end users running mac hardware to download the policy managed VMs and use them locally.

What’s included Anka Secure?

Anka Secure solution includes anka.pkg and registry.

What should use Secure?

Anyone who is looking to provide sandbox macOS environments to end users using mac hardware for privileged user access, example technical support, iOS developers etc.

macOS Version Support for Anka Build, Anka Flow and Anka Secure

Anka can be installed on mac machines running Hi Sierra(10.13.x) or Higher.

At this time, only the following macOS versions can be created to run as macOS Anka VMs.

  • 10.15.x (macOS Catalina Beta)
  • 10.14.x (macOS Mojave)
  • 10.13.x (macOS Hi Sierra)
  • 10.12.x (macOS Sierra)
  • 10.11.x (macOS El Capitan)
  • 10.10.x (macOS Yosemite)

Known Issues

  • Registry revert API does not work with tag name string with special characters.
  • url= “/api/v1/registry/distribute?id={request_id}” not working.
  • space in slave name template field for JNLP in Anka jenkins plugin breaks the plugin.

Upgrade Steps

When upgrading the entire Anka Build infrastricture (Controller/Registry and Nodes), execute the steps in the following sequence.

1) On the mac nodes - run sudo ankacluster disjoin.

2) Install the new anka pkg on all the mac nodes.

3) Upgrade the guest addons inside the VM templates with anka start -u. Check the upgrade notes to see if this step is necessary.

4) Push the newly upgraded VM templates to registry with anka registry push vmname --tag.

5) Go to the Controller/Registry and upgrade.

6) On the mac nodes - run sudo ankacluster join.

Upgrade Notes

  • Upgrade to Controller version 1.4.0 doesn’t require upgrade of jenkins plugins to version 1.21.0.
  • Upgrade to Controller version 1.4.0 requires Anka package version 2.1.X.
  • Upgrade to Anka package version 2.1.2 from version 2.x requires upgrade of VM templates anka start -uonly for Catalina VMs.
  • Upgrade to Anka package version 2.1.1 from version 2.x DOES NOT require upgrade of VM templates. No need for anka start -u.
  • Upgrade to Anka package version 2.x from version 1.4 DOES require upgrade of VM templates using anka start -u and repush to the registry.
  • Upgrade to Controller version 1.3 doesn’t require upgrade of jenkins plugins to version 1.20.
  • Upgrade to Controller version 1.3 requires Anka package version 2.1.
  • Upgrade to Controller version 1.3 also requires upgrade of Registry to version 1.3.
  • Upgrade to Controller version 1.2.1 from 1.2.0 can also be done by just upgrading the Registry to version 1.2.1.
  • Upgrade to Controller version 1.2.1 also requires upgrade of Registry to version 1.2.1.
  • Upgrade to Controller version 1.2.1 also requires upgrade of Anka Binary on the nodes to version 2.1.
  • Upgrade to Controller version 1.2.1 DOES NOT require upgrade of Jenkins Anka Build Plugin to the latest version 1.19.1.
  • Upgrade to Controller version 1.2.1 DOES NOT require upgrade of Jenkins Anka Slave Builder Plugin to the latest version 1.5.
  • Upgrade to Controller version 1.2.1 DOES NOT require upgrade of Teamcity Anka Slave Builder Plugin to the latest version 1.6.
  • Upgrade to Anka package version 2.1 from version 2.x DOES NOT require upgrade of VM templates. No need for anka start -u.
  • We will publish frequent releases of Controller package with bug fixes and new managibility features. These releases will be backward compatible with Anka package version 2.1 onwards and will not require you to upgrade Anka package on the nodes.
  • We will publish major releases of Anka a couple of times a year. Minor updates to Anka package will be published for any critical bug fix.