Aspire Kubernetes 托管集成

包括:托管集成已包括仅限于—Client集成不包括Client集成不包括

通过 AspireKubernetes 托管集成,可以从应用程序模型生成 Kubernetes 部署清单 Aspire 。 通过此集成,可以使用熟悉 Aspire 的 AppHost 定义应用程序的基础结构和部署配置,然后将其作为 Kubernetes YAML 清单发布,以便部署到任何 Kubernetes 群集。

托管集成

若要开始AspireKubernetes托管集成,请在AppHost项目中安装📦Aspire.Hosting.Kubernetes NuGet 包。

dotnet add package Aspire.Hosting.Kubernetes

有关详细信息,请参阅 dotnet 添加包管理 .NET 应用程序中的包依赖性

添加 Kubernetes 环境

安装包后,使用 AddKubernetesEnvironment 方法将 Kubernetes 环境添加到 AppHost 项目中。

var builder = DistributedApplication.CreateBuilder(args);

// Add Kubernetes environment
var k8s = builder.AddKubernetesEnvironment("k8s");

// Add your application resources
var cache = builder.AddRedis("cache");

var apiService = builder.AddProject<Projects.ApiService>("apiservice")
                        .WithReference(cache);

builder.AddProject<Projects.Web>("webfrontend")
       .WithExternalHttpEndpoints()
       .WithReference(cache)
       .WithReference(apiService);


builder.Build().Run();

小窍门

分配了k8s变量后,可以将其传递给WithComputeEnvironment API,以消除定义多个方案时可能产生的计算资源歧义。 否则,不需要变量 k8s

配置 Kubernetes 环境属性

可以使用 WithProperties 方法自定义 Kubernetes 环境:

var builder = DistributedApplication.CreateBuilder(args);

var api = builder.AddProject<Projects.MyApi>("api");

builder.AddKubernetesEnvironment("k8s")
       .WithProperties(k8s =>
       {
           k8s.HelmChartName = "my-aspire-app";
       });

builder.Build().Run();

通过 WithProperties 方法,您可以配置 Kubernetes 部署的各个方面,包括用于生成 Kubernetes 资源的 Helm 图表名称。

生成 Kubernetes 清单

若要从Kubernetes应用程序生成Aspire清单,请使用aspire publish以下命令:

aspire publish -o k8s-artifacts

有关详细信息,请参阅 aspire publish 命令参考

此命令在指定的输出目录中生成一组 Kubernetes 完整的 YAML 清单(k8s-artifacts 在此示例中)。 生成的工件包括:

  • 应用程序服务的部署StatefulSet
  • 网络连接服务
  • 应用程序配置使用 ConfigMaps
  • 秘密用于保护敏感数据。
  • Helm 图表 可简化部署管理。

支持的资源

托管 Kubernetes 集成支持将各种 Aspire 资源转换为其 Kubernetes 等效资源:

  • 项目资源 →部署或 StatefulSet。
  • 容器资源 →部署或 StatefulSet。
  • 连接字符串 → ConfigMaps 和 Secrets。
  • 环境变量 → ConfigMaps 和密钥。
  • 终结点 →服务和入口配置。
  • → PersistentVolumes 和 PersistentVolumeClaims。

部署注意事项

部署到 Kubernetes时,请考虑以下事项:

容器映像

确保应用程序项目配置为生成容器映像。 发布工具 Kubernetes 将会引用您的项目所需的容器映像。 如果尚未指定自定义容器映像,集成将使用可在部署期间重写的参数化 Helm 值。

资源名称

资源 Kubernetes 名称必须遵循 DNS 命名约定。 集成会自动将 Aspire 资源名称通过以下方式转换为有效的 Kubernetes 资源名称:

  • 转换为小写。
  • 将无效字符替换为连字符。
  • 确保名称不以连字符开头或结尾。

环境特定的配置

使用 外部参数 来配置在开发环境和生产环境之间需要区分的环境特定值。

另请参阅