你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

GitHub 如何加速云采用

概述

创新是当今竞争环境中的新货币。 拼车、流式传输内容、无人驾驶汽车和其他服务从根本上改变了人们的日常生活节奏,让市场产生了天翻地覆的变化,并展示了竞争环境从物理资产到数字体验的转移。

这些类型的高级数字体验带来了骚动,让老牌企业面临具有创新能力、可以更快向客户提供价值的公司的激烈竞争。 为了在竞争中获得优势和避免受到干扰,企业需要建立创新文化,并使用最优秀、最适合的工具和云服务。

GitHub 提供了一系列功能,可帮助公司:

  • 利用 Azure 服务和功能。
  • 对其做法进行现代化。
  • 在此文化转变期间提升灵活性和创新能力。

公司可以利用 GitHub 与开源社区的联系,并从已成功采用 Azure 服务的组织找到数千个可反复使用且可立即部署的增强型云解决方案示例。 他们可以轻松地借鉴和循环改进这些解决方案,进行定制以满足其业务需求。

GitHub 使组织能够轻松地在其团队中共享内容,从而更快地实现现代化并部署后续的应用程序或工作负载。 公司可以寻求 InnerSource(一个关键的创新原则)来借用共享和重用、协作和通信等最佳做法,以及开源社区中的更多内容,并将其应用到其组织内。

从保护开源包到日常编写的知识资产,保护整个软件供应链应该是每个公司的主要优先事项。 要实现此目标,需要可纳入整个生命周期并自动化的高级安全技术,而 GitHub Advanced Security 和 GitHub Actions 等本机 GitHub 功能提供了这种类型灵活性。

利用开源资产

高效的组织认为开源软件 (OSS) 是现代软件开发的必备(而不是可选)选项。 这些组织就其依赖的功能与开发人员社区合作,并使用安全的平台对 OSS 进行战略投资。 因此,这些组织可以实现快速创新,超越竞争者,削减成本并最大程度地降低风险。

虽然 OSS 可以解释为纳入应用程序的包、库、脚本和依赖项,但对于定义完善的 Azure 体系结构,也有无数的开源资产采用基础结构即代码 (IaC)、文档、指南和蓝图的形式。 这些蓝图由 Microsoft、合作伙伴、供应商、客户和个人投稿到 OSS 社区,在 GitHub 中随时可用。 可以轻松地对其进行修改、重用,并将其部署到特定的 Azure 环境。

基础结构即代码

基础结构即代码 (IaC) 即在描述性模型中管理基础结构(网络、虚拟机、负载均衡器和连接拓扑),与 DevOps 团队使用相同的版本控制系统来管理源代码。 与相同源代码生成相同二进制文件的原则相似,每次应用 IaC 模型时都会生成相同的环境。 IaC 是用于 持续交付 (CD) 的关键 DevOps 做法。

IaC 的出现是为了解决发布管道中环境偏差的问题。 如果没有它,团队必须维护各个部署环境的设置,而环境之间的不一致会导致部署过程中出现问题。 每个环境最终都会成为一片雪花,具有无法自动重现的独特配置。 使用雪花时,基础结构管理和维护需要手动流程,这些流程会导致错误,并且难以跟踪。使用 IaC 的基础结构部署是可重复的,并防止因配置偏移或缺少依赖项而导致的运行时问题。

通过 IaC,团队可以更改环境说明并对配置模型进行版本控制,这些操作通常以 JSON 等记录良好的代码格式进行;请参阅 Azure 资源管理器模板以了解详细信息。 开发人员可以在托管应用程序源代码的 GitHub 存储库中托管 IaC 代码以简化其工作流,并对由 GitHub Actions 提供的 IaC 采用相同的持续集成 (CI)/CD 做法。

请参阅 AzOps GitHub Action,了解有关如何在各种 Azure 范围部署自定义资源管理器模板的示例。 如果你不熟悉资源管理器模板或 IaC,还可浏览 GitHub 上的 azure-quickstart-templates repo,找到你想部署的模板,并选择“部署到 Azure”按钮以测试其效果。

Screenshot of a Deploy to Azure button.

云模式组件及最佳做法

下面的体系结构图重点介绍了在 GitHub DevSecOps 环境的 GitHub 和 Azure 组件中运行的安全检查:

An architecture diagram highlighting the security checks that run in the GitHub and Azure components of a GitHub DevSecOps environment.

  • GitHub 提供了一个代码托管平台,开发人员可用于在开源和 InnerSource 项目上进行协作。

  • Codespaces 是一个联机开发环境。 此工具由 GitHub 托管并由 Microsoft Visual Studio Code 提供支持,可在云中提供完整的开发解决方案。

  • GitHub Security 通过多种方式消除威胁。 代理和服务会标识存储库和依赖包中的漏洞。 它们还会将依赖项升级到最新安全版本。

  • GitHub Actions 是一些自定义工作流,它们直接在存储库中提供 CI/CD 功能。 由名为“运行器”的计算机承载这些 CI/CD 作业。

  • Microsoft Entra ID 是一种多租户基于云的标识服务,用于控制对 Azure 和其他云应用程序(如 Microsoft 365 和 GitHub)的访问。

  • Azure 应用服务提供了一个框架,用于构建、部署和缩放 Web 应用。 此平台提供内置基础结构维护、安全修补程序和缩放功能。

  • Azure Policy可帮助团队通过策略定义对云资源强制实施规则,从而管理和预防 IT 问题。 例如,如果项目将要部署具有无法识别的 SKU 的虚拟机,则 Azure Policy 将发送有关该问题的警报并停止部署。

  • Microsoft Defender for Cloud 跨混合云工作负载提供统一的安全管理和高级威胁防护。

  • Azure Monitor 会收集和分析性能指标、活动日志和其他应用程序遥测。 此服务会在识别到异常情况时向应用程序和相关人员发出警报。

InnerSource

InnerSource 概述

许多公司都使用“InnerSource”这一术语来描述其工程团队协作处理代码的方式。 InnerSource 是一种开发方法,其中,工程师使用大规模开源项目(如 Kubernetes 或 Visual Studio Code)中的最佳做法生成专利软件。

大规模开源项目要求数千个参与者之间的协调和协作。 推动最成功的项目的,是未来的远景以及用户的日常需求:速度、可靠性和功能。 这些项目运营的规模提供了一些教训,可以帮助公司更快地使用 InnerSource 构建更好的软件。

通过 GitHub 的拉取请求和问题,协作和代码评审融入了开发流程。 内部团队和外包团队可以在一处共享工作、讨论更改并获得反馈。 这可以帮助组织在内部分享专业知识,并避免再次从头开发已为其他项目开发出来的解决方案。

InnerSource 项目剖析

个人、团队和资源的适当组合可以确保项目的成功。 很多开源项目都遵循类似的组织结构,这种结构可以帮助组织组建跨职能团队来管理 InnerSource 项目。 典型的开源项目包括以下几类人:

  • 维护人员:这些参与者负责推动愿景和管理项目的组织方面。 他们可能不是代码的原始所有者或作者。

  • 参与者: 这些人是向项目贡献了一些内容的人。

  • 社区成员: 这些是使用该项目的人员。 他们可能积极参与对话,或表达自己关于项目方向的观点。

更大的项目可能还有专注于不同任务(如工具、会审和社区调节)的次级委员会或工作组。 InnerSource 项目很可能遵循类似的结构。 许多工程组织将开发人员分为多个团队,例如应用程序工程、平台工程和 Web 开发。 采用这种方式构造组织可能留下盲点,让合格的人员无法参与。 组织由组织中各团队支持的核心决策组,有助于集结更快解决问题所需的专业知识。

在企业中,参与者是公司内的开发人员,而维护者是项目主管和关键决策者。

  • 维护人员: 负责推动项目愿景和管理日常贡献的公司内的开发人员、产品经理和其他关键决策者。

  • 参与者: 帮助推动软件前进的公司内的开发人员、数据科学家、产品经理、营销人员和其他角色。 参与者可能不是直接项目团队的成员,而是通过供给代码、提交 bug 修复等来帮助生成软件。

有关详细信息,请参阅白皮书 InnerSource 简介。

自动化

GitHub Actions 允许用户直接在其 GitHub 存储库中创建自定义工作流。 用户可以发现、创建和共享用于执行任何作业(包括 CI/CD)的操作,并将操作合并到完全自定义的工作流中。 他们还可以创建 CI 工作流,用于生成和测试用不同编程语言编写的项目。 GitHub Actions 指南中提供了相关示例。

GitHub Actions 可用于合并 IaC 概念和 CI/CD 方案,以便对整个端到端部署生命周期进行自动化,包括以可重复的方式预配或更新目标环境,以及打包和部署应用程序本身。

示例:

适用于 Azure 的 GitHub Actions 构建用于对面向 Azure服务(例如 Azure 应用服务、Azure Kubernetes 服务、Azure Functions 等)的部署过程进行自动化。 Azure 入门操作工作流存储库包括端到端工作流,用于生成任何语言和任何生态系统的 Web 应用,并将其部署到 Azure。 请访问 GitHub 市场以查看所有可用的操作。

安全性

GitHub 的左移安全功能

从开发的第一步开始,DevSecOps 就遵循安全方面的最佳做法。 DevSecOps 使用左移策略来重定向安全焦点。 它不是在结束时指向审核,而是在开始时转向开发。 这种快速失败方法不仅可以生成可靠的代码,还能在问题容易解决时解决它们。

GitHub 具有许多安全功能,提供可支持 DevSecOps 工作流的每个部分的工具:

  • 基于浏览器的 IDE,具有内置安全扩展插件
  • 代理,可持续监视安全建议,并替换易受攻击和过时的依赖项
  • 搜索功能,可扫描源代码是否存在漏洞
  • 基于操作的工作流,可自动执行开发、测试和部署的每个步骤
  • 交流空间,可用于私下讨论并解决安全威胁,然后再发布信息
  • 这些功能与 Azure 的监视和评估功能结合,提供了用于生成安全云解决方案的卓越服务

示例:

GitHub DevSecOps 安装涵盖许多安全方案。 可能包括以下情况:

  • 开发人员希望利用可提供安全功能的预配置环境。
  • 管理员必须随时可以查看按优先级排序的最新安全报告,以及有关受影响代码的详细信息和建议的修复措施。
  • 经过精简的组织需要具有一些系统,能够在代码中公开机密时自动获取未泄露的新安全设备。
  • 开发团队能够得益于在有更新或更安全的外部包版本可用时自动升级。

有关详细信息,请参阅:

后续步骤

  • 选择你的实施团队(通常是一个开发人员经理和已定义为管理员的一些开发人员),并部署 GitHub。
  • 了解常见及高级 Git 工作流,以增强 GitHub 的使用方法。

以下链接提供有关 GitHub 的详细信息。