微软Azure通过一个新的草案简化了Kubernetes的开发工作
微软复活了Deis实验室的Kubernetes快速启动工具,以帮助你为Azure Kubernetes服务打包现有代码。
云原生开发并不像它可以做到的那样简单。像Kubernetes这样的平台简化了运行一套可扩展服务的过程,但你仍然需要创建你在云中运行的应用程序。这不是把你的代码放在容器里,写一些配置YAML的问题;你需要更多的东西来拥有一个可以随时随地部署的构建。
五年前,微软收购了Deis实验室团队,目的是让他们继续建立开源的Kubernetes工具。这是较成功的收购之一。该团队对Helm Kubernetes打包工具和Brigade事件驱动工作流系统进行了重大升级,并在Kubernetes中使用Krustlets开创了WebAssembly,并在Akri中使用Linux设备驱动将边缘硬件暴露给Kubernetes。
收购后的第一个版本是Draft,这是一套命令行工具,旨在帮助你快速构建原型容器化应用程序,提供脚手架,以便在推送到Kubernetes实例之前在自己的PC上开发代码。这是一个有趣的实验,但遗憾的是,它没有得到社区的支持,因此无法在最初的发布中取得更大的进展。如果你去看Deis项目的列表,它被标记为归档,没有工作计划。即便如此,它显然给使用它的人留下了印记,Deis经常问他们是否会进一步开发Draft。
草案回来了
微软当然注意到了人们对Draft这个工具的持续兴趣,在Build 2022中,Azure团队推出了一个更新版本Draft 2,用于Azure自己管理的Azure Kubernetes服务(AKS)。
与最初的版本一样,Draft 2是一个命令行工具,用于快速构建Kubernetes应用程序。与原版不同的是,它的目的是将现有的代码打包,以便在AKS中使用,构建容器和清单文件,在Kubernetes中运行你的应用程序,以及将其从GitHub部署到AKS所需的脚本和工作流程。
两个版本的Draft有很多相似之处,但最大的变化是从本地开发工具转变为基于Azure CLI的工具,并直接与云合作。这是一个符合微软一直以来发展AKS环境的模式,通过Azure Stack HCI或在自己的服务器上使用Azure Arc为企业内部系统提供。随着Visual Studio Code为Azure提供远程开发工具,包括Azure CLI,以及GitHub CodeSpaces成为向你的桌面提供完整的云原生开发者体验的一种方式,自最初的Draft发布以来,世界已经发生了重大变化。
Draft 2工具专注于Azure、GitHub和AKS,但它仍然是一个开源项目,因此可以选择为你所选择的Kubernetes环境创建自己的分叉,无论是自我托管还是在AWS或GCP上运行。像大多数Kubernetes工具一样,它是用Go语言编写的,工作流程采用YAML。要建立你自己的Draft 2安装,请克隆其GitHub仓库。在安装了Go 1.118或更高版本后,使用熟悉的make来构建Draft二进制文件,然后将其添加到系统路径中。
在Azure中使用Draft 2
最初的Draft 2版本是Azure CLI的ks-preview扩展的一部分。你可以在本地或Azure中运行Azure CLI,作为Cloud Shell开发和管理环境的一部分。这意味着它运行在微软内部基于Debian的BL-Delridge之上,BL-Delridge承载着Azure的Cloud Shell。这应确保草案2可以在任何Debian衍生的Linux上运行,只需做最少的工作,因为CBL-Delridge和Debian之间的唯一区别是微软出于安全原因自己编译了所有的软件包。
使用Draft 2的先决条件并不多。你只需要Azure CLI、AKS集群和Azure Container Registry实例。一旦你安装了aks-preview扩展,它就为你提供了你所需要的工具,以及存储和运行应用程序容器的地方。安装扩展很简单,只需使用以下命令即可。az extension add —name aks-preview.使用az extension update —name aks-preview ,以确保你有最新的版本。
在Azure CLI配置为使用Draft 2的情况下,你可以把现有的应用程序变成Kubernetes应用程序。从你的应用程序目录中,调用Azure CLI和Draft:az aks draft create 。如果你愿意,你可以使用Draft的目标标志来瞄准一个特定的目录。这样就会生成构建应用程序所需的文件,包括必要的Docker文件。
用GitHub动作自动化Draft
Draft 2与原始版本的不同之处在于它与Azure和GitHub部署工作流程的关键部分的整合。你现在可以快速建立一个GitHub动作,将代码工件从GitHub推送到AKS的过程自动化。Draft现在有一个draft setup-gh 命令,可以使用OpenID Connect注册你的GitHub账户,并将其与你的Azure容器注册表链接。一旦这个链接到位,你就可以从你的本地克隆应用程序开始构建你的部署工作流程了。使用az aks draft generate-workflow 来构建动作。
一旦构建了一个动作,你就需要用git把它推回到GitHub中的应用程序仓库,准备通过动作工具使用。然后你可以使用Visual Studio Code等工具在本地编辑代码,通过拉动请求,使用Code GitHub扩展保存到适当的分支。如果你已经自动化了你的行动,拉动请求将触发构建,并将你的应用程序交付给AKS,准备进行测试。
微软提供了一个捷径,可以在一个新的克隆仓库中使用新的应用程序的Draft。通过使用draft up 命令,你将在一行中授权访问并构建一个动作。如果你需要修改一个动作,再使用generate-workflow 。最后,你可以使用draft update命令来启用AKS网络应用程序的路由。基于Nginx的入口控制器为你的应用程序增加了互联网访问,并支持AKS中的开放服务网格工具,以帮助保护你的代码。
很高兴看到微软把Draft带回来。诸如此类的工具是任何云原生迁移的一个重要步骤,它将代码和构建脚本和清单的过程自动化,以便在Kubernetes上运行。看到另一个Azure工具依赖GitHub的功能也很有趣,随着这两个组织在项目上的合作越来越多,这种方法在未来可能会变得更加普遍。