次の方法で共有


Aspire Kubernetes ホスティング統合

含まれるもの:ホスティング統合に含まれる ホスティング統合のみ — Client 統合は含まれませんClient 統合は含まれません

Aspire Kubernetes ホスティング統合を使用すると、Kubernetes アプリケーション モデルからAspire配置マニフェストを生成できます。 この統合により、使い慣れたAspire AppHost を使用してアプリケーションのインフラストラクチャとデプロイ構成を定義し、それを任意のKubernetes クラスターにデプロイするための Kubernetes YAML マニフェストとして発行できます。

ホスティング統合

Aspire Kubernetes ホスティング統合を開始するには、AppHost プロジェクトに 📦Aspire.Hosting.Kubernetes NuGet パッケージをインストールします。

dotnet add package Aspire.Hosting.Kubernetes

詳細については、「dotnet でのパッケージの追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

Kubernetes環境を追加する

パッケージをインストールした後、Kubernetes メソッドを使用して、AddKubernetesEnvironment環境を 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環境のプロパティを構成する

Kubernetesメソッドを使用して、WithProperties環境をカスタマイズできます。

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 リソースの生成に使用される Helm チャート名など、Kubernetesデプロイのさまざまな側面を構成できます。

Kubernetes マニフェストを生成する

Kubernetes アプリケーションからAspire マニフェストを生成するには、aspire publish コマンドを使用します。

aspire publish -o k8s-artifacts

詳細については、「 Aspire Publish コマンド リファレンス」を参照してください

このコマンドは、指定した出力ディレクトリに Kubernetes YAML マニフェストの完全なセットを生成します (この例ではk8s-artifacts )。 生成される成果物は次のとおりです。

  • アプリケーション サービスのDeploymentまたはStatefulSet
  • ネットワーク接続用のサービス
  • アプリケーション設定のためのConfigMaps
  • 機密データのシークレット
  • デプロイ管理を容易にする Helm チャート

サポートされているリソース

Kubernetes ホスティング統合では、さまざまなAspire リソースをKubernetesに変換できます。

  • プロジェクト リソース → デプロイメントまたはStatefulSets。
  • コンテナー リソース → デプロイメントまたはステートフルセット。
  • ConfigMap とシークレット→接続文字列
  • 環境変数 → ConfigMaps と Secrets.
  • エンドポイント →サービスとイングレス構成。
  • ボリューム→ PersistentVolumes と PersistentVolumeClaims です。

デプロイに関する考慮事項

Kubernetesにデプロイする場合は、次の点を考慮してください。

コンテナー イメージ

アプリケーション プロジェクトがコンテナー イメージをビルドするように構成されていることを確認します。 Kubernetesパブリッシャーは、プロジェクトのコンテナー イメージを参照します。 カスタム コンテナー イメージを指定していない場合、統合では、デプロイ中にオーバーライドできるパラメーター化された Helm 値が使用されます。

リソース名

Kubernetesのリソース名は、DNS の名前付け規則に従う必要があります。 統合により、 Aspire リソース名が有効な Kubernetes リソース名に自動的に変換されます。

  • 小文字への変換。
  • 無効な文字をハイフンに置き換えます。
  • 名前をハイフンで始めたり終わったりしないようにします。

環境固有の構成

開発環境と運用環境で異なる必要がある環境固有の値を構成するには、 外部パラメーター を使用します。

こちらも参照ください