次の方法で共有


eShopOnContainers を Azure にデプロイする

ヒント

このコンテンツは、Azure 用のクラウド ネイティブ .NET アプリケーションの設計に関する電子ブックからの抜粋であり、.NET Docs またはオフラインで読み取ることができる無料のダウンロード可能な PDF として入手できます。

Azure eBook 用の Cloud Native .NET アプリの表紙サムネイル。

eShopOnContainers アプリケーションは、さまざまな Azure プラットフォームにデプロイできます。 推奨される方法は、アプリケーションを Azure Kubernetes Services (AKS) にデプロイすることです。 Kubernetes デプロイ ツールである Helm を使用して、デプロイの複雑さを軽減できます。 必要に応じて、開発者は、開発プロセスを効率化するために、Kubernetes 用の Azure Dev Spaces を実装できます。

Azure Kubernetes サービス

AKS で eShop をホストするには、最初に AKS クラスターを作成します。 この作業を行うには、Azure portal を使用すると、必要な手順を案内してくれます。 Azure CLI からクラスターを作成し、Role-Based アクセス制御 (RBAC) とアプリケーション ルーティングを有効にするように注意することもできます。 eShopOnContainers のドキュメントでは、独自の AKS クラスターを作成するための手順について詳しく説明しています。 作成したら、Kubernetes ダッシュボードからクラスターにアクセスして管理できます。

Helm を使用して eShop アプリケーションをクラスターにデプロイできるようになりました。

Helm を使用した Azure Kubernetes Service へのデプロイ

Helm は、Kubernetes と直接連携するアプリケーション パッケージ マネージャー ツールです。 これは、Kubernetes アプリケーションの定義、インストール、アップグレードに役立ちます。 単純なアプリは、カスタム CLI スクリプトまたは単純なデプロイ ファイルを使用して AKS にデプロイできますが、複雑なアプリには多数の Kubernetes オブジェクトを含め、Helm の利点があります。

Helm を使用すると、アプリケーションには Helm チャートと呼ばれるテキストベースの構成ファイルが含まれ、Helm パッケージ内のアプリケーションと構成が宣言によって記述されます。 グラフでは、標準の YAML 形式のファイルを使用して、関連する Kubernetes リソースのセットを記述します。 これらは、記述したアプリケーション コードと共にバージョン管理されます。 Helm Chart は、説明するインストールの要件に応じて、単純なものから複雑なものまでさまざまです。

Helm はコマンド ライン クライアント ツールで構成され、Helm チャートを使用し、Tiller という名前のサーバー コンポーネントにコマンドを起動します。 Tiller は Kubernetes API と通信して、コンテナー化されたワークロードの正しいプロビジョニングを保証します。 Helm は、クラウドネイティブ・コンピューティング財団によって維持されています。

次の 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 によってデプロイを定義および管理するために使用されるフォルダー構造に編成される方法を示しています。

eShopOnContainers helm フォルダー 図 2-6。 eShopOnContainers の helm フォルダー。

個々のコンポーネントは、 helm install コマンドを使用してインストールされます。 eShop には、それぞれの Helm チャートを使用してコンポーネントをループしてインストールする "deploy all" スクリプトが含まれています。 結果は反復可能なプロセスであり、ソース管理のアプリケーションでバージョン管理され、チームの誰でも 1 行のスクリプト コマンドを使用して AKS クラスターにデプロイできます。

Helm のバージョン 3 では、Tiller サーバー コンポーネントが正式に不要になります。 この機能強化の詳細については、「 Helm 3 で Tiller が見つからない理由」を参照してください。

Azure Functions と Logic Apps (サーバーレス)

eShopOnContainers サンプルには、オンライン マーケティング キャンペーンの追跡のサポートが含まれています。 Azure 関数は、特定のキャンペーン ID のマーケティング キャンペーンの詳細を追跡するために使用されます。 完全なマイクロサービスを作成するのではなく、1 つの Azure 関数の方が単純で十分です。 Azure Functions には、特に Kubernetes で実行するように構成されている場合に、シンプルなビルドとデプロイ モデルがあります。 関数のデプロイは、Azure Resource Manager (ARM) テンプレートと Azure CLI を使用してスクリプト化されます。 このキャンペーン サービスは顧客向けではなく、1 つの操作を呼び出し、Azure Functions の候補として最適です。 この関数には、データベース接続文字列データやイメージの基本 URI 設定など、最小限の構成が必要です。 Azure Functions は Azure portal で構成します。