试用Azure开发者CLI

310 阅读7分钟

微软新的Azure开发者工具简化了Azure云中的开发,从部署开发环境到运行CI/CD。

当涉及到新技术和新项目时,我们经常谈论学习曲线,想象着一个最初陡峭但平滑的曲线,最终平缓下来。当然,在实践中,它更像是一系列的步骤,其中一些就像悬崖。其中最高的一个步骤是建立目标环境,并通过我们需要的库、SDK和先决条件获得代码支架。

每一步都是一种拖延--当我们可以写代码和解决问题的时候,却要拖延数小时甚至数天。这个问题在我们自己的开发设备上已经够难的了,但当我们与云原生平台合作时就变得更加复杂,因为我们现在要负责提供虚拟基础设施和建立容器协调。我们可能不负责基础设施,但如果我们要快速有效地交付现代代码,我们需要了解平台和应用运营,特别是如果我们将来要把这些代码交给运营团队。

我们需要一种方法来快速建立我们需要的工具和服务来支持我们的开发平台。我们需要一种在基础设施和安全环境方面都体现出最佳实践的方法。作为开发者,我们没有接受过思考这些事情的训练;我们依靠运营和安全团队来为我们实现这些。如果我们能让这个过程变成自助服务,那么这些昂贵的资源就能更好地专注于构建和部署开发环境之外的事情;他们可以集中精力运行和保护实时服务。

引入Azure开发者CLI

微软最近宣布了一个公开预览版的工具,旨在做到这一点,这是一个熟悉的Azure CLI的伴侣,其行为很像专注于Kubernetes的Draft,建立了你开始编码所需的所有功能。与Draft不同的是,Azure Developer CLI走得更远,它通过支持编码、构建过程、部署和应用监控的工具,以及在Azure DevOps上设置和运行CI/CD(持续集成和持续交付)来支持你完成整个软件开发生命周期,以确保你的代码在更新时被部署。

你甚至可以选择使用一个命令来建立和运行普通的应用程序,另一个命令是在不再需要时删除任何部署的资源。由于它是一个命令行工具,Azure Developer CLI将在你有终端的任何地方运行,使用你的开发者PC的终端、Azure的云外壳,甚至是内置于Visual Studio Code等编辑器或Visual Studio等流行IDE中的终端。没有必要为每个环境学习不同的东西。无论你在哪里运行这些命令都是一样的。

引擎盖下是一个YAML模板语言,描述应用程序和资源,以及基于Bicep的基础设施作为代码来配置你的Azure环境。微软最初为Python、JavaScript和C#等常用语言提供了样本,并为常见的Azure平台服务提供配置。计划对Java进行支持,希望能将Azure的Spring工具带入其中。微软在GitHub上保留了一份当前模板的清单,包括在Azure Cosmos DB上构建C#代码或在Azure Container Apps中设置Dapr微服务。

目前,该工具支持Azure App Service、Functions、Azure Container Apps和Azure Static Web Apps,Azure Kubernetes Service即将推出。在这一点上,它不是一个用于构建Azure平台能力之外的基础设施的工具,尽管没有理由不使用其Bicep支持来部署完整的基础设施和网络。目前,它最好被认为是一种工具,用于快速建立针对普通Azure功能的开发者环境。如果你想做得更多,你需要将自己的资源添加到它为你创建的任何资源组中。

使用Azure Developer CLI

开始使用Azure Developer CLI是很容易的。如果你正在构建现代应用程序,你应该已经在你的开发电脑上安装了大部分先决条件。这包括最新版本的Git和GitHub CLI、Azure CLI和包括npm的Node.js环境。有趣的是,还支持Visual Studio Code的开发容器(Docker容器中的完整开发环境,包括远程编辑和调试)和GitHub Codespaces。对最近宣布的DevBox环境的支持尚未公布,但它们是托管开发容器的合理场所,在用于构建Azure应用程序时,可以用Azure开发CLI进行预配置。

有了所有的先决条件,通过Windows的PowerShell或macOS和Linux的curl安装Azure开发CLI。像这样的工具是跨平台的,这一点很重要;微软的策略是,开发者在哪里,就去哪里,支持所有常用的开发操作系统是这个策略的关键。

你的第一次构建应该是使用其中一个预建的模板,使用azd up 命令创建你的目标资源来尝试服务。CLI会提示你为承载你的开发环境的Azure资源组取一个名字,创建它的Azure位置,以及用于计费的Azure订阅。值得研究这些模板的内容,因为它们是建立你自己的模板的有用教程。

CLI将建立必要的资源,从链接的GitHub存储库加载和启动任何代码。最后,它将显示它所创建的资源的列表,以及Azure门户中相关内容的链接。如果部署的代码包括端点或Web UI,这些都会被列出,给你提供链接,准备进行应用测试。存储库将被克隆到你的开发环境中,就在你运行 azd up 命令的目录中。然后你可以在本地处理代码,使用git将代码合并到相应的GitHub分支。要关闭服务并清理你的本地和Azure环境,请使用azd down 命令。

构建你自己的应用程序模板

现有的项目可以用来建立你自己的模板。Azure Developer CLI模板文件有一个独特的结构,很容易让人想起Deis Lab的WebAssembly使用的bindle格式。如果它最终使用bindles与需要不同部署的不同开发环境合作,特别是围绕资源受限的边缘应用,这将是很有趣的。

首先建立一个项目目录,并将任何应用程序的源代码添加到其中。一旦到位,Azure Developer CLI可以为你的代码和基础设施创建一个空模板。这包含了目标环境的细节。你可以用你的Azure订阅和目标位置的细节来预先填充产生的.env文件,以自动部署。接下来,创建一个名为infra的新目录,它将包含一个基于先前创建的.env文件的配置文件,以及你的应用程序将使用的各种服务的Bicep文件,例如,为你的代码容器配置一个Azure容器应用环境。

最后,创建一个YAML文件,将你的项目定义文件集中到一个模板中。然后,你可以采取该模板并在GitHub行动中使用它,将生成的azure-dev.yml 文件作为工作流程的一部分,并在提交到存储库时将更改部署到你的Azure环境。使用Azure Developer CLI的azd pipeline config 命令来设置一个行动。一旦到位,任何提交到GitHub的本地修改都会存储在你的仓库中,然后部署到你的Azure环境,准备测试。

微软已经做了很多工作,使Azure开发者CLI适合现有的工具链。它并不完美,依赖于GitHub行动,而不是与Azure DevOps管道整合。然而,这显然是一项正在进行的工作,微软计划以相对较快的节奏增加新的功能,所以我们可以期待看到开发人员的反馈,指导团队快速交付云原生应用程序的需要,以及它如何帮助从最初的模板部署到实时应用程序:例如,增加对代码生成器的支持,如Yeoman和Draft,以及ASP.NET或Spring等常用框架。

这个首次公开预览肯定是一个有希望的开始。看看微软是否能保持这种势头,同时又不偏离支持软件开发生命周期的核心:让代码启动、运行并为生产部署做好准备,这将是很有趣的。