教程:通过 CI/CD 将容器应用程序部署到 Service Fabric 群集
本教程是一个系列的第二部分,介绍了如何使用 Visual Studio 和 Azure DevOps 为 Azure Service Fabric 容器应用程序设置持续集成和部署。 需要一个现有的 Service Fabric 应用程序,将使用将 Windows 容器中的 .NET 应用程序部署到 Azure Service Fabric 中创建的应用程序作为示例。
本系列教程的第二部分将介绍如何:
- 向项目中添加源代码管理
- 在 Visual Studio 团队资源管理器中创建生成定义
- 在 Visual Studio 团队资源管理器中创建发布定义
- 自动部署和升级应用程序
先决条件
在开始学习本教程之前:
- 在 Azure 上拥有一个群集,或者使用此教程创建一个群集
- 将容器化的应用程序部署到该群集
准备一个发布配置文件
现在,你已部署了一个容器应用程序,可以设置持续集成了。 首先,在应用程序中准备一个发布配置文件,供要在 Azure DevOps 中执行的部署进程使用。 应当将发布配置文件配置为以你之前创建的群集为目标。 启动 Visual Studio 并打开一个现有的 Service Fabric 应用程序项目。 在“解决方案资源管理器”中,右键单击该应用程序并选择“发布...”。
在应用程序项目中选择一个要用于持续集成工作流的目标配置文件,例如 Cloud。 指定群集连接终结点。 选中“升级应用程序”复选框,以便应用程序针对 Azure DevOps 中的每个部署进行升级。 单击“保存”超链接将设置保存到发布配置文件,然后单击“取消”关闭对话框。
将你的 Visual Studio 解决方案共享到一个新的 Azure DevOps Git 存储库
将你的应用程序源文件共享到 Azure DevOps 中的一个团队项目,以便可以生成内部版本。
通过在 Visual Studio 的右下角的状态栏中选择“添加到源代码管理”->“Git”为项目创建一个新的本地 Git 存储库。
在“团队资源管理器”中的“推送”视图中,在“推送到 Azure DevOps”下选择“发布 Git 存储库”按钮。
验证你的电子邮件地址并在“帐户”下拉列表中选择你的组织。 如果还没有组织,可能必须设置一个组织。 输入你的存储库名称并选择“发布存储库”。
发布存储库会在你的帐户中创建一个与本地存储库同名的新团队项目。 若要在现有团队项目中创建存储库,请单击“存储库名称”旁边的“高级”并选择一个团队项目。 可以通过选择“在 web 上查看”来在 web 上查看代码。
使用 Azure Pipelines 配置持续交付
Azure DevOps 生成定义所描述的工作流由一系列按顺序执行的生成步骤组成。 创建一个生成定义,以生成要部署到 Service Fabric 群集的 Service Fabric 应用程序包和其他项目。 详细了解 Azure DevOps 生成定义。
Azure DevOps 发布定义描述了将应用程序程序包部署到群集的工作流。 一起使用时,生成定义和发布定义将执行从开始到结束的整个工作流,即一开始只有源文件,而结束时群集中会有一个运行的应用程序。 详细了解 Azure DevOps 发布定义。
创建生成定义
打开新的团队项目,方法是:在 Web 浏览器中导航到 https://dev.azure.com ,选择你的组织,后跟新项目。
选择左面板上的“管道”选项,然后单击“新建管道” 。
注意
如果没有看到生成定义模板,请确保已关闭“新 YAML 管道创建体验” 功能。 此功能在 DevOps 帐户的“预览功能” 部分中配置。
选择 Azure Repos Git 作为源,然后选择团队项目名称、项目存储库,以及 master 默认分库或者手动的和计划的生成。 然后单击“继续” 。
在“选择模板”中,选择“支持 Docker 的 Azure Service Fabric 应用程序”模板,然后单击“应用” 。
在“任务”中,输入 Hosted VS2017 作为代理池。
单击“标记图像” 。
在“容器注册表类型”中,选择“Azure 容器注册表”。 选择一个 Azure 订阅,然后单击“授权”。 选择一个 Azure 容器注册表。
单击“推送映像”。
在“容器注册表类型”中,选择“Azure 容器注册表”。 选择一个 Azure 订阅,然后单击“授权”。 选择一个 Azure 容器注册表。
在“触发器”选项卡下,选中“启用持续集成”来启用持续集成。 在分支筛选器中,单击“+ 添加” ,分支规范将默认为“主” 。
在“保存生成管道和队列”对话框中,单击“保存并排队”以手动启动生成。
在推送或签入时也会触发生成。 若要检查生成进度,请切换到“生成”选项卡。在验证生成成功执行后,定义用于将应用程序部署到群集的发布定义。
创建发布定义
选择左面板上的“管道”选项,然后选择“发布”和“+ 新建管道” 。 在“选择模板”中,从列表中选择“Azure Service Fabric 部署”模板,然后单击“应用” 。
依次选择“任务”、“环境 1”和“+ 新建”来添加新的群集连接。
在“添加新的 Service Fabric 连接”视图中,选择“基于证书的”或“Microsoft Entra ID”身份验证。 指定连接名称“mysftestcluster”和群集终结点“tcp://mysftestcluster.chinaeast.cloudapp.chinacloudapi.cn:19000”(或要部署到的群集的终结点)。
对于基于证书的身份验证,添加用来创建群集的服务器证书的服务器证书指纹。 在“客户端证书”中,添加客户端证书文件的 base-64 编码。 有关如何获取证书的 base-64 编码表示形式的信息,请参阅有关该字段的帮助弹出项。 还需要添加证书的密码。 如果没有单独的客户端证书,可以使用群集或服务器证书。
对于 Microsoft Entra 凭据,请添加用来创建群集的服务器证书的服务器证书指纹,并在“用户名”和“密码”字段中添加要用来连接到群集的凭据。
单击“添加” 以保存群集连接。
在“代理阶段”下,单击“部署 Service Fabric 应用程序” 。 单击“Docker 设置” ,然后单击“配置 Docker 设置” 。 在“注册表凭据源” 中,选择“Azure 资源管理器服务连接” 。 然后,选择你的 Azure 订阅。
接下来,向管道添加一个生成项目,以便发布定义可以找到生成输出。 依次选择“管道”和“项目”->“+添加”。 在“源(生成定义)” 中,选择之前创建的生成定义。 单击“添加”以保存生成项目。
启用一个持续部署触发器,以便在生成完成时自动创建发布。 单击该项目中的闪电图标,启用该触发器,然后单击“保存” 以保存发布定义。
选择“+ 发布”->“创建发布”->“创建”以手动创建发布。 可以在“发布” 选项卡中监视发布进度。
验证部署是否已成功且应用程序是否正在群集中运行。 打开 Web 浏览器并导航到 http://mysftestcluster.chinaeast.cloudapp.chinacloudapi.cn:19080/Explorer/
。 记下应用程序版本,在本例中为“1.0.0.20170616.3”。
提交并推送更改,触发发布
通过将一些代码更改签入到 Azure DevOps 来验证持续集成管道是否正常工作。
在编写代码时,Visual Studio 会自动跟踪代码更改。 通过从右下角的状态栏中选择“挂起的更改”图标(),将更改提交到本地 Git 存储库。
在“团队资源管理器”中的“更改”视图中,添加一条消息来说明你的更新,然后提交更改。
在“团队资源管理器”中选择“未发布的更改”状态栏图标()或“同步”视图。 选择“推送”以更新 Azure DevOps 中的代码。
将更改推送到 Azure DevOps 会自动触发生成。 当生成定义成功完成时,会自动创建一个发布,并将开始升级群集上的应用程序。
若要检查生成进度,请在 Visual Studio 中切换到“团队资源管理器”中的“生成”选项卡。 在验证生成成功执行后,定义用于将应用程序部署到群集的发布定义。
验证部署是否已成功且应用程序是否正在群集中运行。 打开 Web 浏览器并导航到 http://mysftestcluster.chinaeast.cloudapp.chinacloudapi.cn:19080/Explorer/
。 记下应用程序版本,在本例中为“1.0.0.20170815.3”。
更新应用程序
在应用程序中进行代码更改。 按照前面的步骤保存并提交更改。
在应用程序升级开始后,可以在 Service Fabric Explorer 中观察升级进度:
应用程序升级可能要花费几分钟时间才能完成。 当升级完成后,应用程序将运行下一版本。 在本例中为“1.0.0.20170815.4”。
后续步骤
在本教程中,你了解了如何执行以下操作:
- 向项目中添加源代码管理
- 创建生成定义
- 创建发布定义
- 自动部署和升级应用程序