作者:京東零售 葉萌
現代軟體開發一般會借助 CI/CD 來提升代碼質量、加快發版速度、自動化重復的事情,iOS App 只能在 mac 機器上編譯,CI/CD 工具因此需要有一個 macOS 云服務器集群來執行 iOS App 的編譯,
今天就來談談如何建設 macOS 云服務器集群

購買 mac mini / Mac Studio 機器
最簡單的方式就是購買一批 mac 機器,買它個 1000 臺,買回來后放入機房,把其中一臺機器作為管理機,申請辦公網訪問這臺機器的網路權限,每次要維護這批機器里的軟體時,先從辦公網進入管理機,然后從管理機在遠程連接到其他機器,
虛擬化 macOS 集群
借助 macOS 官方的Virtualization.Framework,可以分鐘級創建 macOS 虛擬機,這種方式創建的虛擬機性能、穩定性、安全性都很高,可以持續采用更新、更快、更高級的 mac 硬體,最終實作更快的 App 編譯速度,
在企業內部申請 macOS 機器,需要經歷申請預算、領導審批、采購、運輸、部署至機房等繁瑣步驟,現在可通過購買高配置的 mac 機器,然后再將其按需配置成多臺虛擬機,減少了硬體維護成本,提高了擴容效率,這方面代表性產品有
-
https://github.com/cirruslabs/tart
-
https://www.macstadium.com/anka
移動端 CI/CD 平臺 bitrise 采用的是這種方式,只不過他們做了很多自研作業,打造了Gen2編譯基礎設施,宣稱能讓客戶更快、更頻繁的發布 App
云端管理 macOS 服務器
自行購買并維護 mac 機器還是不太方便,成本很高,如果能云端管理、按需付費就更好了,亞馬遜的 AWS 解決了這個問題,他家的Amazon EC2 Mac Instances能讓我們按需申請 macOS 服務器,如果能接受云端服務的話,其實這種方式最省事,與這種服務類似的產品有
-
https://flow.swiss/mac-bare-metal
-
https://www.scaleway.com/en/hello-m1/
在 linux 里運行 macOS 虛擬機
sickcodes/Docker-OSX是最近流行的一個專案,
-
借助 KVM 技術,實作了在 linux 里運行 macOS 虛擬機
-
借助 docker,簡化了 macOS 虛擬機的部署
這個專案具有很多優勢,例如
-
不依賴專門的 Apple 硬體,能夠運行 KVM 的 x86_64 機器就行
-
能夠通過 docker 容器來部署 macOS 虛擬機,未來借助 k8s,能夠實作大規模 macOS 服務器的管理,輕易實作擴縮容
也有風險
-
不太合規,macOS 正常只能在 Apple 硬體上運行
-
在 KVM 里運行 macOS,兼容性、性能、穩定性需要評估,如果出現問題需要付費找專案維護者解決
我在裸金屬上利用 Docker-OSX 專案確實跑起來了 macOS 虛擬機,運行該專案有以下幾點要注意
-
linux 宿主機需要支持嵌套虛擬化(Nested Hardware Virtualization),開啟硬體虛擬化后才能安裝 kvm,裸金屬和物理機正常都支持
-
對 Linux 內核有要求,作業系統最好比較新,CentOS 8 可以,CentOS 7 不行
在 Apple 硬體上用 k8s 來調度 macOS
有沒有可能在私有云里實作 aws 這種 mac 管理體驗呢?MacStadium家的 Orka 平臺做到了,Orka 有以下好處
1 - 降低了 mac 集群的管理成本
花時間更少,例如管理服務器、在服務器上安裝軟體
利用 Kubernetes 調度 mac 服務器,這與 Linux 服務器的管理保持一致,方便融入公司已有技術堆疊
2 - 在真正的 Apple 硬體上運行 mac 虛擬機
不用擔心兼容性、穩定性、性能問題
3 - 用心為開發者設計
提供多種操作方式(命令列、REST API)來管理 mac 虛擬機
對于企業來說,可以考慮購買 Orka 平臺,在私有云里面搭建 macOS 云服務器集群,GitLab SaaS 版也是使用這種方式來提供托管的 macOS Runner 的
總結
我講了建設 macOS 云服務器集群的 5 種方式,這些方式各有利弊,總的來說:
-
如果能接受使用云服務器,建議直接購買 AWS 的 Amazon EC2 Mac Instances,方便、成本低
-
自建機房,如果計劃建設的 macOS 集群規模很大,建議購買 MacStadium 的 Orka 平臺來建設,專業服務,避免踩坑,省時省力
-
自建機房,如果 macOS 集群規模比較小,對自動化要求不高,建議購買高配的 apple 硬體,然后通過
Virtualization.Framework虛擬化出多臺 macOS 機器,整體架構比較簡單,也能解決問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551214.html
標籤:其他
上一篇:畢業5年的同學突然告訴我,他已經是年薪30W的自動化測驗工程師....
下一篇:返回列表
