开发套件

点击上图菜单显示详情,点击上图空白处取消选择

本页以 .NET 应用开发者的视角来梳理在以 GitOps 作为开发过程中可能使用到的技术。这里把技术分为两大类,其中过程技术是我们在构建 GitOps 流程时使用到的工具和技术,开发技术则是以 .NET 平台和 C# 语言作为讨论范围。

关于 GitOps 是什么以及它和 DevOps 的关系可以查看文章《从DevOps由来的故事到GitOps》

对于GitOps流程来说,最重要的两个方面就是 基于Git的源代码管理平台,和 基于Kubernetes的目标部署平台。了解这两个主要对象后,GitOps 的简单理解就是把源代码自动部署到目标平台上的过程,当然其中包含了很多技术细节。

Ⅰ.源代码管理

既然是 GitOps ,源代码管理都是基于 Git 的,这也是目前使用最广泛的源代码管理工具,目前主流的代码托管平台也都是基于 Git 的(你也可以搭建私有的代码托管平台)。

  • GitHub
  • GitLab
  • BitBucket
  • 码云/Gitee
  • Coding
  • 极狐
  • .....

代码托管平台在 GitOps 流程中提供以下功能,

  • 持续集成,利用 Git 的代码管理能力快速合并团队中提交的代码到主干。
  • 持续交付,利用 jenkins 或平台内置的工具运行生成,测试等脚本,并将生成的制品提交到制品仓库中。

除此之外一些平台也包含了连接到部署环境以提供持续部署的能力。

Ⅱ.部署平台

这里的部署平台特指 Kubernetes 云原生平台,基于这个平台提供的能力我们可以实现 IaC(代码即基础设施 Infrastructure as Code),让我们能够将整个部署以代码的方式保存在源代码中进行管理,并可“一键”同步到 Kubernetes 上,即实现所谓的持续部署/Continuous Deployment。

为了直观的理解整个流程,我制作了一个基于 K3S 的 GitOps 模板项目 k3s-gitops-project-template,以通过实践的方式理解整个过程以及它相对于传统软件开发为整个过程带来的提升。

.NET 作为 .NET Framework 的开源版本目前已经发展到了 .NET 8(2024年)。.NET 可以运行在各个平台上。

.NET 编程技术当然不是这么一个页面能说清楚的,本页只是列出在开发不同应用时所使用的到的.NET技术,以及不同技术的特点和适用场景,关于一些编程技术的内容可前往官方文档或我的知乎专栏

  • Web应用,在 .NET 平台上使用 ASP.NET Core 开发 Web 应用是主流,ASP.NET Core 包含了不同的技术分支来支持不同场景的 Web 应用开发,包括 MVC、Razor Page、WebAPI、Blazor。
  • 桌面应用,.NET 平台上的桌面应用主要是为 Windows 提供的 WPF 和 Windows Forms 两个框架,以及下面的 MAUI 框架。
  • 移动端应用,.NET 最新推出的 MAUI 框架可以让我们开发 iOS 和 Android 上的移动端本地应用以及 Mac 和 Windows 上的桌面应用。
  • 数据库访问,ADO.NET 是传统的数据库访问框架,Entity Framework Core 是目前流行的 ORM 风格数据库访问框架。
  • 机器学习,利用 ONNX 我们可以训练模型并使用现成模型进行推断,ML.NET 可以让我们快速的构建机器学习模型。