Agoda将macOS基础设施与Kubernetes集成

Agoda 集成 macOS 基础设施与 Kubernetes 的总结

主要观点

Agoda 通过开发 macOS Virtualization Kubelet (macOS-vz-Kubelet),成功将其 macOS 基础设施与 Kubernetes 集成,解决了传统方法的扩展性和性能问题,特别是在 Apple Silicon 推出后。

关键信息

  1. 背景与挑战

    • Agoda 依赖 Apple 基础设施进行开发,曾管理 200 台 Mac Mini 用于持续集成(CI)流程。
    • 传统方法面临扩展性和性能问题,现有虚拟化框架(如 QEMU/KVM)存在限制。
    • 之前的 Kubernetes 解决方案仅支持部分基础设施,未涵盖用于 CI/CD 的构建机器。
  2. 解决方案

    • 开发 macOS-vz-Kubelet,允许 Kubernetes 直接管理原生 macOS 工作负载。
    • 使用 Go 语言构建,并利用 Apple 的虚拟化框架(Virtualization Framework)运行 macOS 虚拟机(VM),充分发挥 Apple Silicon 硬件的性能。
    • 支持创建混合运行时 Pod,其中第一个容器为 macOS VM,其他容器由 Docker 管理,适用于高效的 CI 工作流。
  3. 技术细节

    • 引入自定义的 Open Container Initiative (OCI) 兼容格式,专门用于 macOS VM 镜像的创建、打包和管理。
    • 实现桥接网络,通过 DHCP 分配自定义 MAC 地址,允许通过远程 IP 直接访问 VM。
    • 使用 JAMF 等移动设备管理(MDM)解决方案管理底层 macOS 主机,包括用户账户设置、操作系统管理和更新。
  4. 成果与影响

    • macOS-vz-Kubelet 的引入标志着 Agoda 在 macOS 工作负载管理方面迈出了重要一步。
    • 该解决方案不仅取代了旧方法,还实现了 macOS 工作负载的无缝部署,提升了整体开发效率。

重要细节

  • 项目资源:项目源码和详细文档可在 GitHub 仓库 获取。
  • 相关报道:Agoda 还采用了非常规方法从单体 GraphQL API 过渡到微服务架构,进一步提升了开发灵活性和架构现代化。
  • 网络挑战:解决了 Apple 虚拟化框架中的网络限制,通过桥接网络和 DHCP 实现了 VM 的直接访问。
  • 媒体曝光:该项目的开发历程也在 Agoda’s Plugged In Tech Podcast 中进行了讨论。

总结

Agoda 通过开发 macOS-vz-Kubelet,成功将 macOS 工作负载集成到 Kubernetes 环境中,解决了传统方法的扩展性和性能问题,同时提升了开发效率和架构现代化水平。这一创新为其他依赖 macOS 基础设施的企业提供了宝贵的参考。

阅读 10
0 条评论