加速:高效能软件交付之道_【德】迈克尔·考夫曼_AZW3_MOBI_EPUB_PDF_电子书(无页码)_【德】迈克尔·考夫曼
内容节选
Chapter 9第9章部署到任何平台 前面的章节学习了如何使用GitHub Actions作为自动化引擎和GitHub Packages来轻松共享代码和容器,开发者可以通过自动化部署来完成持续集成/持续交付(CI/CD)的功能。 本章将展示如何以安全合规的方式轻松部署到任何云或平台。 本章包括如下主题: ●分阶段部署 ●自动化部署 ●如何部署到Azure App Service ●如何部署到AWS ECS ●如何部署到GKE ●基础设施即代码 ●衡量成功 CI/CDCI 意味着每次把代码修改推送到存储库时,代码都会被构建和测试,输出打包成一个构建工件。在CD中,每当创建一个新的构建工件时,会自动将该工件部署到指定环境中。 当执行CI/CD时,开发和交付阶段是完全自动化的,代码随时准备好部署到生产环境。 存在多种区分持续交付和持续部署(都属于CD)的定义,但是这些定义在文献中不一致,对该主题的价值几乎没有贡献。 分阶段部署 阶段或层是部署和执行软件的环境。典型的阶段包括开发、测试、暂存(或预生产)和生产。通常,暂存(或预生产)阶段是生产环境的完全镜像,有时它用于通过使用负载均衡切换两个环境的零停机部署,而接近生产的阶段需要手动批准才能部署。 如果一个企业使用功能标志(请参考第10章)和CD,则阶段的数量会减少。我们可以不谈阶段,而谈基于环形的部署或扩展单元。基于环形的部署的想法是,客户在不同的生产环,所以把更新部署到一个环中,并自动监控系统以查找意外的异常或不寻常的指标,如CPU或内存使用情况。此外,可以在生产环境中运行自动化测试。如果没有错误,发布过程是连续的,并部署到下一个环。在讨论基于环的部署时,通常意味着不涉及手动批准。但是,环间可以存在手动批准。 在GitHub中可以使用环境来进行阶段性部署和基于环的部署,用户可以在存储库的“Settings|Environments”下查看、配置或创建新的环境。 对于每个环境,可以定义以下内容: ●必要的审批者:这些包括最多5个用户或团队作为手动审批者,在执行部署前需要其中的一个审批者批准。 ●等待计时器:这是指部署在执行前等待的宽限期。最大的时间是43200分钟或30天。此外,如果在前一个阶段发现了任何错误,则可以使用API来取消部署。 ●部署分支:这里可以限制要部署到环境的分支,可选择所有受保护的分支或自定义模式,模式可以包含通配符(如release/*)。 ●环境密钥:环境中的密钥会覆盖存储库或组织范围内的密钥,只能在指定的审批者批准部署后加载密钥。 配置如图9-1所示。 图9-1 在GitHub中配置一个环境 在工作流文件中,可以在工作层面指定环境: 也可以指定一个URL,然后显示在概览页面上: 通过needs关键字可以定义作业之间的依赖关系,也可以定义环境之间的依赖关系(见图9-2)。 图9-2 阶段性部署的概览页面 环境的状态会显示在存储库主页上(见图9-3)。 如果读者想尝试相关操作,可以在https://github.com/wulfland/AccelerateDevOps/的分支中运行Staged Deployment工作流,并将自己添加为某些阶段的必要审批者。 图9-3 主页上的环境 自动化部署 当询问客户是否已经自动化了他们的部署时,通常得到的回答是肯定的。然而,自动化只意味着有一个脚本,或者有一个安装程序的文件,这只是部分自动化。只要有人登录到服务器创建账户或DNS记录,或手动配置防火墙,部署就不是自动的! 人类会犯错误,但机器不会!请确保自动化部署的所有步骤,而不仅仅是最后一步。由于GitHub Actions是完美的自动化引擎,因此让工作流执行所有自动化部署是一种好的做法。 如何部署到Azure App Service 为了让读者开始使用GitHub Actions的自动部署,本书创建了三个动手实践: ●部署到Azure App Service ●部署到AWS ECS ●部署到GKE 所有动手实践都假设读者在指定的云中设置了一个账户。如果读者有单一云策略,则可以直接跳到相关的实践步骤。 动手实践的步骤说明位于GitHub中(https://github.com/wulfland/AccelerateDevOps/blob/main/ch9_release/Deploy_to_Azure_App_Service.md)。建议读者按照网站的步骤进行,因为其提供的链接方便复制粘贴。本书将以逐步指导的方式讲解,重点是如何部署应用程序。 部署Azure资源 Azure资源的部署是在setup-azure.sh脚本中进行的。它创建了一个资源组、一个应用服务计划和一个应用服务。读者可以在工作流中轻松地执行这个脚本。部署完成后,从Web应用程序获取publish配置文......
- 信息
- 译者序
- 推荐序一
- 推荐序二
- 前言
- 作者简介
- 审校者简介
- 第一部分 精益管理与协作
- 第1章 重要的指标
- 第2章 计划、跟踪和可视化工作
- 第3章 团队合作与协作开发
- 第4章 异步工作:无处不在的协作
- 第5章 开源和内部开源对软件交付性能的影响
- 第二部分 工程DevOps实践
- 第6章 使用GitHub Actions实现自动化
- 第7章 运行工作流
- 第8章 使用GitHub Packages管理依赖
- 第9章 部署到任何平台
- 第10章 功能标记和功能生命周期
- 第11章 主干开发
- 第三部分 自信发布
- 第12章 使用左移测试来提高质量
- 第13章 左移安全和DevSecOps
- 第14章 代码保护
- 第15章 保护部署
- 第四部分 软件架构
- 第16章 松散耦合架构和微服务
- 第17章 团队赋权
- 第五部分 精益产品管理
- 第18章 精益产品开发与精益创业
- 第19章 实验与A/B测试
- 第六部分 GitHub企业版
- 第20章 GitHub:开发者的家园
- 第21章 迁移到GitHub
- 第22章 组织团队
- 第23章 企业转型