eShopOnContainers を Azure にデプロイする
ヒント
このコンテンツは eBook の「Azure 向けクラウド ネイティブ .NET アプリケーションの設計」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。
eShopOnContainers アプリケーションは、さまざまな Azure プラットフォームにデプロイできます。 Azure Kubernetes Services (AKS) にアプリケーションをデプロイする方法をお勧めします。 Kubernetes デプロイ ツールである Helm は、デプロイの複雑さを軽減するために使用できます。 開発者は必要に応じて Kubernetes 用の Azure Dev Spaces を実装し、開発プロセスを効率化できます。
Azure Kubernetes Service
AKS で eShop をホストするには、最初に AKS クラスターを作成します。 Azure portal を使用すると、作成に必要な手順を実行できます。 また、Azure CLI からクラスターを作成して、ロールベースのアクセス制御 (RBAC) とアプリケーション ルーティングを有効にすることもできます。 eShopOnContainers のドキュメントでは、独自の AKS クラスターを作成する手順について詳しく説明しています。 作成が完了したら、Kubernetes ダッシュボードからクラスターにアクセスして管理できます。
これで、Helm を使用して eShop アプリケーションをクラスターにデプロイできるようになりました。
Helm を使用した Azure Kubernetes Service へのデプロイ
Helm は、Kubernetes と直接連携するアプリケーション パッケージ マネージャー ツールです。 Kubernetes アプリケーションの定義、インストール、アップグレードに役立ちます。 シンプルなアプリはカスタム CLI スクリプトやシンプルなデプロイ ファイルを使用して AKS にデプロイできますが、複雑なアプリには多数の Kubernetes オブジェクトを含めることができます。また、Helm によるメリットも得られます。
Helm を使用するアプリケーションには、Helm チャートと呼ばれるテキスト ベースの構成ファイルが含まれています。このファイルでは、Helm パッケージ内のアプリケーションと構成が宣言によって記述されます。 チャートでは、標準の YAML 形式のファイルを使用して、関連する Kubernetes リソースのセットを記述します。 これらは、記述されているアプリケーション コードと共にバージョン管理されます。 Helm チャートは、記述されているインストールの要件に応じて、シンプルなものから複雑なものまで多岐にわたります。
Helm はコマンド ライン クライアント ツールで構成されます。このツールは、Helm チャートを使用して、Tiller という名前のサーバー コンポーネントに対するコマンドを起動します。 Tiller は Kubernetes API と通信して、コンテナー化されたワークロードを適切にプロビジョニングします。 Helm は、Cloud Native Computing Foundation で管理されています。
次の yaml ファイルは、Helm テンプレートを示しています。
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.app.svc.marketing }}
labels:
app: {{ template "marketing-api.name" . }}
chart: {{ template "marketing-api.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ template "marketing-api.name" . }}
release: {{ .Release.Name }}
このテンプレートで、キーと値のペアの動的なセットがどのように記述されているかに注目してください。 テンプレートが呼び出されると、中かっこで囲まれた値が、他の yaml ベースの構成ファイルから取り込まれます。
eShopOnContainers の Helm チャートは、/k8s/helm フォルダーにあります。 図 2-6 は、アプリケーションのさまざまなコンポーネントを、デプロイの定義と管理のために Helm で使用されるフォルダー構造に編成する方法を示しています。
図 2-6。 eShopOnContainers の helm フォルダー。
個々のコンポーネントは、helm install
コマンドを使用してインストールされます。 eShop には、それぞれの Helm チャートを使用してコンポーネントをループまたはインストールする "すべてをデプロイ" スクリプトが含まれています。 結果として、反復可能なプロセスが生成されます。バージョン管理はソース管理でアプリケーションと共に行われます。これにより、チームのすべてのメンバーが 1 行のスクリプト コマンドを使用して AKS クラスターへのデプロイを行えるようになります。
Helm のバージョン 3 では Tiller サーバー コンポーネントが正式に不要になったことに注意してください。 この機能拡張の詳細については、ここを参照してください。
Azure Functions と Logic Apps (サーバーレス)
eShopOnContainers サンプルには、オンライン マーケティング キャンペーンの追跡のサポートが含まれています。 特定のキャンペーン ID のマーケティング キャンペーンの詳細を追跡するには、Azure 関数を使用します。 完全なマイクロサービスを作成する代わりに、Azure 関数を 1 つ使用すればシンプルかつ十分です。 Azure Functions には、Kubernetes で実行するように構成されている場合などに適した、シンプルなビルドおよびデプロイ モデルが用意されています。 関数のデプロイは、Azure Resource Manager (ARM) テンプレートと Azure CLI を使用してスクリプト化されます。 このキャンペーン サービスは顧客向けではなく、1 つの操作を呼び出します。この操作は Azure Functions に最適な候補になります。 この関数には、データベース接続文字列データやイメージ ベースの URI 設定などの最小限の構成が必要です。 Azure Functions は Azure portal で構成します。
.NET