这是我作为软件工程师Authzed的第一周,我已被提供有一个新的M1型MacBook Pro作为我的主要开发机器。 Apple的新M1芯片一直受到安静,电池效率和表演的高度赞誉,因此我很高兴能够使用我的新笔记本电脑。事实证明,我不是唯一一个兴奋的人开始使用M1 MacBook Pros& MLDR
到目前为止,Authzed的服务已经在基于X86的机器上构建并部署。 Apple M1是芯片上基于ARM的系统。如果有人找到一种方法来构建和运行M1上的工具和服务,那么大概是任何Authzed工程师(特别是那些拥有响亮的风扇的旧笔记本电脑的人)可以在享受所有好功能的同时进行工作建筑软件苹果的新笔记本电脑。我的队友慷慨地自愿志愿我成为那个人♥。
在Authzed中,我们主要使用Python,并为我们的后端,打字签字以及我们的前端和GRPC进行反应,以在服务之间进行沟通。我们在我们的开发机器上使用Docker Desktop构建集装箱并部署到Kubernetes。我们以其他几种语言维护客户库,但这堆栈是我们的面包和黄油(如果您喜欢的米饭和泡菜)。
我的第一步是安装基本工具:主页布鲁,Git和Docker。谢天谢地,现在几个月已经通过了自M1启动以来,最流行的工具增加了本地支持。对于没有ARM构建的少数工具,我发现在通过Rosetta翻译时的性能没有明显的差异。对于更多的利基工具,例如我的首选终端,我发现这些兼容性跟踪站点有用:
有关Mac的Docker:M1支持的预览仅在2月21日发布。我的所有测试都在预览版本3.1.0上运行,但是自此处记录的体验以来已发布候选版本。
更新:截至4月15日,M1支持的GA发布现已在Docker for Mac 3.3.1中提供,我们的容器继续在最新版本上构建和运行!
接下来正在安装Python并转到。我初步尝试安装Python 3.8.3失败了错误:
./modules/posixmodule.c:9221:15:错误:隐式声明函数' sendfile'在c99 [-werror,-wimplic-function-offormation] ret = sendfile(进出,偏移,& sbytes,& sf,flags)中是无效的。
我想避免取决于一次性补丁,发现Python 3.9自然地构建。使用3.9的快速运行我们的测试是成功的,因此我们能够安全地升级到3.9。在1.16中添加本机M1支持,因此我简单地安装了最新,1.16.2,使用Homebrew:
我们使用Docker为我们的服务构建集装箱。手指越过,我跑了码头。在我们的一个服务目录中希望它只是工作和amp; Mldrit没有。在不显露太多关于我们的内部项目的情况下,构建错误占2类:缺少构建依赖性和不相容的二进制文件。
缺少构建依赖性问题的示例正在尝试安装Grpcio-1.34.0包。我们Dockerfiles中的诗歌安装步骤失败了:
这表明Docker图像缺少C ++编译器和/或标头。最简单的解决方案是从缩放基础图像改变为更完整的图像。
一个不兼容的二进制文件的示例正在尝试安装psycopg2-二进制包。安装将失败:
我没有挖掘可执行文件是否实际上丢失或无法在我的机器上执行。同样,简单的解决方案是通过指定特定于ARM特定的Docker图像来更新基础图像。
在将上述所有Dockerfiles的更改之后,Voila:我们的集装箱成功构建!
要记住的一件事:最初的目标是测试我们是否可以建立并运行我们的开发和测试服务。将来将要设置多架构构建,以便能够共享X86构建。
安装工具,构建了容器,但如果我无法运行它们,它们是什么好处?我会拯救你的悬念,并显示我们的完整应用程序通过Docker Desktop将其上部署并运行Kubernetes 1.19.7。
在Mac上运行Kubernetes的挑战可能是他们自己的帖子最优秀,但我经验的一些提示是关闭“使用GRPC保险丝进行文件共享”选项,并删除除/ TMP之外的默认共享目录。
我出发了解Authzed的工具和服务是否会在M1 MacBook Pro和MacBook Pro上建立并运行,并且在谷歌和一些试验和错误之后,我很高兴地报告了一个简单的,“它有效!”回到我的队友。
使用我的笔记本电脑的前24小时充满了视频聊天,建筑物和Kubernetes在一天中的大部分时间,但它仍然存在28%的电池仍然存在强大。我没有听到粉丝一旦打开,实际上,即使在建造的中间,我认为内部温度也超过130°F。 (当我写这个帖子时,Temp正在酷71f处运行)。
安全说,我认为我的队友将在不久的将来购物新的MacBook。
我刚刚在Authzed开始这里,但如果您也对这些工具感兴趣并希望帮助建立我们的快速,灵活和可扩展的权限API,请查看我们的工作页面并加入我们! M1 Macbook Pruse的一个缺点我发现了太晚了,即它只支持一个外部监视器,尽管使用码头和专有显示驱动程序存在一些解决方法。 尽管我空闲的第二次显示器,但我发现了M1 MacBook Pro的好处大量超过这一下行。