Что это еще за Анка такая?
Если вы вдруг пропустили пост выше https://t.me/devops_easy/18, то там предыстория, почитайте. Сам продукт называет себя "macOS Container-like Virtualization" или "macOS cloud for iOS CI and DevOps". И первый и второй слоган правдивы, но как всегда, со своей спецификой. Построено все это поверх Apple hypervisor, что большой плюс, т.к. это нативный гипервизор macOS, и там всякий scheduling, прочий низкоуровневый management ложится на плечи блекбокса от Apple.
Это как VirtualBox что-ли?
Скорее нет, чем да, ну, т.е. это тоже ПО для виртуализации, но работает только с macOS и заточено на CI/CD. А также у Anka есть свои киллер-фичи! Давайте пройдемся по компонентам, чтобы понять, что оно из себя представляет:
• Anka Develop. Ограниченная, но бесплатная тула для разработчиков, используется на своем макбучке или iMac. Это похоже как раз на виртуалбокс, где вы раните свои виртуалки. В данном случае, на бесплатной версии вам доступна только одна VM at a time, и вы не можете взаимодействовать с Image Registry(об этом позже). Т.е. что вы можете сделать - создать виртуалку с нужной macos, попробовать что-то туда поставить, поэкспериментировать. Выглядит будет примерно так:
$
anka create --ram-size 8G --cpu-count 4 --disk-size 80G --app ~/Install\ macOS\ Mojave.app Mojave$ anka run Mojave sw_versProductName: Mac OS XProductVersion: 10.14.5Ну, или запустить в графическом интерфейсе как обычную виртуалку, получив что-то типа vnc.
• Anka Flow. Все тоже самое, что и Anka Develop, только платная, плюс такие фичи: Run Multiple VMs, State Snapshot/Suspend VM, USB Device Support, Ability to communicate with Anka Build Cloud (Controller & Registry). За Flow нужно заплатить $360 в год за каждый девелоперский макбук, независимо от его железа.
• Anka Build Cloud. Самый интересный для нас компонент, за который и придется платить от $600 per core per year за Basic tier. Разбивку по планам можете посмотреть тут https://docs.veertu.com/anka/intel/licensing/#anka-build-cloud.
Если проводить аналогии, то Build Cloud - эдакий микс Docker Hub(Registry), и Docker Engine API(Cloud Controller with REST APIs).
1) Registry в который можно пушить темплейты(имеджи) с макосью, и тегами, и соответственно пуллить их со стороны ваших макмиников. Тут все плюс-минус просто и понятно, кроме странной работы тегирования, т.к. это сделано не так удобно, как с докером.
2) Cloud Controller with REST APIs. Центральная точка для управления: нодами макоси, с предварительно установленной Anka и джоином их в кластер, самими виртуалками(start/stop/delete) на разных нодах, предварительного раскатывания имеджей на ноды, а также имеджами в реджистри, и много чего еще. Все это можно делать через наколеночно выглядящий интерфейс, либо понятно через API. CLI или sdk пока не имеется, поэтому писать обвязку нужно будет самостоятельно. Однако, у них достаточно разных плагинов под известные CI, возможно для вас все заработает и без танцев вокруг. Также там есть разные интересные плюшки в планах Enterprise и выше, типа Priority scheduling of VMs through controller или Clustering (Grouping) of Nodes, но туда еще не добрался, рассказывать нечего.
Ну, и кому это интересно, если это нельзя съесть, тр...или засунуть в Кубер?
Их доки немного вводят в заблуждение пунктами "High Availability With Kubernetes"! Однако в докеры/куберы можно будет запихнуть только реджистри и контроллер, и хоть за это спасибо! Представьте как вам надо было бы извращаться с сетевыми хранилищами на мак-миниках, чтобы хранить всю эту кучу разных имеджей под все случаи жизни. Оно выглядит еще немного в зачаточном состоянии, в плане манифестов, но, мучаться с Кубером это ж как раз наше, правда?) Не так страшно в общем.