QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Agoda 将 macOS 基础架构与 Kubernetes 进行了集成

作者:Aditya Kulkarni

  • 2025-02-24
    北京
  • 本文字数:1235 字

    阅读完需:约 4 分钟

Agoda 将 macOS 基础架构与 Kubernetes 进行了集成

Agoda 最近详细介绍了它们是如何将 macOS 基础设施与 Kubernetes 集成在一起的。这是通过开发 macOS 虚拟化 Kubelet(macOS-vz-Kubelet) 来实现的,这是一个旨在在 Kubernetes 环境中管理 macOS 工作负载的工具。


Agoda 的软件工程师(云平台的)Vitalii Horbachov 在一篇 博客文章 中详细阐述了这一历程。Agoda 在开发过程中严重依赖于其苹果基础设施,之前管理着 200 台 Mac Minis 进行持续集成(CI)流程。然而,传统方法面临着可扩展性和性能问题,尤其是在 Apple Silicon 出现之后。现有的虚拟化框架,如 QEMU/KVM,也存在一定的局限性。以前的 Kubernetes 解决方案不够完善,因为它们仅支持部分基础设施,主要侧重于虚拟设备场,而没有解决用于 CI/CD 的构建机器。


为了克服这些挑战,Agoda 开发了 macOS-vz-Kubelet,它允许 Kubernetes 直接管理原生 macOS 工作负载。该项目使用 Go 语言构建,并利用苹果的虚拟化框架来运行 macOS 虚拟机(VM),从而继承了 Apple Silicon 硬件的全部性能。该解决方案不仅取代了旧方法,而且还支持在 macOS 工作负载上无缝部署 Pod。



来源:我们如何将原生 macOS 工作负载与 Kubernetes 进行集成


其中一个功能是能够创建混合运行时 Pod,其中第一个容器是 macOS VM,其他容器可以由 Docker 管理。这种设置允许高效的 CI 工作流,其中 macOS VM 充当构建环境,而 Docker 容器则处理日志记录和工件上传等辅助任务。


该项目引入了一种专门为 macOS VM 镜像设计的自定义开放容器倡议(OCI)兼容格式。这种格式允许使用符合苹果虚拟化框架的工具(如 macosvm)进行高效的镜像创建、打包和管理。


Agoda 最近成为了新闻焦点,因为它们采用了一种非传统的方法,从单体 GraphQL API 迁移到了微服务架构。Agoda 的副开发经理 Numan Hanif 告诉 InfoQ,这种方法最大限度地减少了中断,使他们的团队能够更好地控制整个堆栈,并使架构更好地与敏捷和现代开发原则保持一致。


Horbachov 进一步阐述了苹果虚拟化框架中固有的网络挑战。默认情况下,虚拟机使用 NAT 网络;然而,Agoda 使用 DHCP 实现了桥接网络,允许通过远程 IP 直接访问 VM。这是通过为 VM 接口分配自定义 MAC 地址并监控网络流量以检索 IP 地址来实现的。


在管理底层 macOS 主机方面,Agoda 采用了 JAMF 等移动设备管理(MDM)解决方案,用于在其数据中心对 Mac Minis 进行初始配置和设置。这包括用户帐户设置、操作系统管理和更新。


Horbachov 最后提到,macOS-vz-Kubelet 的引入代表着在 Agoda 基础设施内大规模管理 macOS 工作负载的重要一步。


感兴趣的读者可以前往项目存储库,其中包括有关该功能的全面文档介绍、使用指南和演示 macOS-vz-Kubelet 真实应用的示例。Agoda 的科技播客也讨论了这一历程。


作者介绍


Aditya Kulkarni 一直扮演着技术意识强的交付领导者的角色。他曾与不同的组织合作,帮助他们实现敏捷和 DevOps 转型。作为一名热心的读者,他总是对关注软件开发领域的最新动态感兴趣!


原文链接:


https://www.infoq.com/news/2025/01/agoda-macOS-kubernetes/

2025-02-24 17:378142

评论

发布
暂无评论

OpenMLDB 社区月报 | 2022年10月

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

OpenMLDB 实时引擎性能测试报告

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

初识华为云数据库GaussDB(for Cassandra

路过的憨憨

让对外合作更高效,就用WeLink跨企业沟通

路过的憨憨

Ansible最佳实践之 AWX 启用facts缓存和模板问卷调查

山河已无恙

12月月更

互联网医疗领域月度观察——数字乡村建设加快,“互联网+医疗健康”带动乡村高质量发展

易观分析

数字化 互联网医疗

镕铭微电子加入龙蜥社区,推动开源 OS 在音视频产业的应用

OpenAnolis小助手

操作系统 芯片 数据存储 龙蜥社区 镕铭微电子

OpenMLDB v0.6 新版本运维功能增强

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

专访 | 罗成:开源并非“只可远观”

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

ChaosBlade Java 场景性能优化,那些你不知道的事

阿里巴巴中间件

阿里云 云原生 ChaosBlade

Ansible最佳实践之Playbook高级循环任务如何操作

山河已无恙

12月月更

react源码中的生命周期和事件系统

flyzz177

React

新变化新营销 这些知识点你得Get!(文末有PPT福利首次放送)

字节跳动数据平台

大数据 营销 12 月 PK 榜

预告|2022 星策 Summit MLOps 分论坛议程公布!

星策开源社区

人工智能 机器学习 开源 AI MLOps

react源码中的协调与调度

flyzz177

React

演讲实录 | OpenMLDB 整合自动特征工程

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

华为云数据库GaussDB(for Influx)揭秘:数据分级存储

路过的憨憨

Ansible最佳实践之 AWX 作业创建和启动

山河已无恙

12月月更

创业者说丨云起无垠沈凯文:构建新一代开发安全基础设施 让Fuzzing技术为企业赋能

云起无垠

安全开发 开发安全 Fuzzing技术防护

OpenMLDB Meetup No.7 回顾 | OpenMLDB+AutoX:整合自动特征工程,拥抱高效机器学习

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

【Meetup 预告】OpenMLDB + MaxCompute:集成打通云上生态,高效构建 AI 应用

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

数字化改变了什么?WeLink在实践中给出答案

路过的憨憨

HIFIVE音加加 × 火山引擎:正版曲库+智能视频创作SDK,短视频全链路需求一站式解决!

曲多多(嗨翻屋)版权音乐

短视频 火山引擎 HIFIVE音加加 视频配乐 版权音乐

关于 Git 重写历史的一些笔记

山河已无恙

12月月更

Ansible之Ansible Tower使用User和Team管理访问权限的笔记

山河已无恙

12月月更

专访 | 徐鹏程:开源,就是酷

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

react源码分析:babel如何解析jsx

flyzz177

React

教育部公布2022年第一批产学合作协同育人项目,千锋教育57个项目成功立项

千锋IT教育

黄东旭:开发者的“技术无感化”时代,从 Serverless HTAP 数据库开始 | PingCAP DevCon 2022

PingCAP

TiDB

裸辞不慌!入职蚂蚁金服P6,掌握并发编程我是这样吊打面试官的

钟奕礼

Java java面试 java编程 程序员‘

教你用JavaScript实现乘法游戏

小院里的霍大侠

JavaScript 前端开发 编程实战 实战案例 初学者

Agoda 将 macOS 基础架构与 Kubernetes 进行了集成_架构_InfoQ精选文章