Service Fabric リソース モデルの概要Introduction to Service Fabric Resource Model

Service Fabric リソース モデルには、Service Fabric Mesh アプリケーションを構成するリソースを定義する簡単な方法が示されています。The Service Fabric Resource Model describes a simple approach to define resources that comprise a Service Fabric Mesh application. 個々のリソースは任意の Service Fabric 環境にデプロイできます。Individual resources can be deployed to any Service Fabric environment. Service Fabric リソース モデルは、Azure Resource Manager モデルとも互換性があります。The Service Fabric Resource Model is also compatible with the Azure Resource Manager Model. 現在、このモデルでは次の種類のリソースがサポートされています。The following types of resources are currently supported in this model:

  • アプリケーションとサービスApplications and services
  • ネットワークNetworks
  • ゲートウェイGateways
  • シークレットとシークレット/値Secrets and Secrets/Values
  • ボリュームVolumes

各リソースは、リソース ファイルで宣言的に示されています。リソース ファイルは Mesh アプリケーションを示す簡単な YAML または JSON ドキュメントであり、Service Fabric プラットフォームによってプロビジョニングされます。Each resource is described declaratively in a resource file, which is a simple YAML or JSON document that describes the Mesh Application, and is provisioned by the Service Fabric platform.

アプリケーションとサービスApplications and Services

アプリケーション リソースは、Mesh アプリケーションのデプロイ、バージョン管理、有効期間の単位です。An Application resource is the unit of deployment, versioning, and lifetime of a Mesh application. マイクロサービスを表す 1 つまたは複数のサービス リソースで構成されています。It is composed of one, or more, Service resources that represent a microservice. さらに各サービス リソースは 1 つまたは複数のコード パッケージで構成されます。コード パッケージには、コード パッケージに関連付けられたコンテナー イメージの実行に必要なすべてが示されています。Each Service resource, in turn, is composed of one, or more, code packages that describe everything needed to run the container image associated with the code package.

アプリとサービス

サービス リソースでは以下を宣言します。A Service resource declares the following:

  • コンテナー名、バージョン、およびレジストリContainer name, version, and registry
  • 各コンテナーに必要な CPU およびメモリ リソースCPU and memory resources required for each container
  • ネットワーク エンドポイントNetwork endpoints
  • ネットワーク、ボリューム、シークレットなどの他のリソースへの参照References to other resources such as networks, volumes, and secrets

サービス リソースの一部として定義されたすべてのコード パッケージは、グループとしてまとめてデプロイおよびアクティブ化されます。All the code packages defined as part of a Service resource are deployed and activated together as a group. また、サービス リソースには、実行するサービスのインスタンス数も示され、それが依存する他のリソース (ネットワーク リソースなど) を参照します。The Service resource also describes how many instances of the service to run and also references other Resources (for example, Network resource) it depends upon.

Mesh アプリケーションが複数のサービスで構成されている場合、同じノード上で同時に動作することは保証されません。If a Mesh Application is composed of more than one Service, they are not guaranteed to run together on the same node. また、アプリケーションのアップグレード中に、単一のサービスのアップグレードが失敗すると、すべてのサービスが以前のバージョンにロールバックされます。Also, during an upgrade of the Application, failure of upgrading a single Service will result in all Services being rolled back to their previous version.

前述のように、各アプリケーション インスタンスのライフサイクルは個別に管理できます。As alluded earlier, the lifecycle of each Application instance can be managed independently. たとえば、1 つのアプリケーション インスタンスを他のアプリケーション インスタンスとは関係なくアップグレードすることができます。For example, one Application instance can be upgraded independently from the other Application instances. 通常、アプリケーションに含めるサービス数が多くなるほど、各サービスを個別に管理することが困難になるため、アプリケーション内のサービスはごく少数に抑えます。Typically, you keep the number of services in an application fairly small, as the more services you put into an application, the more difficult it becomes to manage each service independently.

ネットワークNetworks

ネットワーク リソースは、依存関係として参照している可能性があるアプリケーション リソースまたはサービス リソースとは関係なく、個別にデプロイできるリソースです。Network resource is individually deployable resource, independent of an Application or Service resource that may refer to it as their dependency. アプリケーション用のネットワークを作成するために使用されます。It is used to create a network for your applications. 異なるアプリケーションの複数のサービスは、同じネットワークに属することができます。Multiple Services from different Applications can be part of the same network. 詳細については、Service Fabric Mesh アプリケーションのネットワークに関するページを参照してください。For more information, read about networking in Service Fabric Mesh applications.

注意

現在のプレビューでは、アプリケーションとネットワーク間の 1 対 1 のマッピングのみをサポートしています。The current preview only supports a one to one mapping between applications and networks

ネットワークとゲートウェイ

ゲートウェイGateways

ゲートウェイ リソースで 2 つのネットワークが接続され、トラフィックがルーティングされます。A Gateway resource connects two networks and routes traffic. ゲートウェイによってサービスは外部クライアントと通信できるようになります。また、ゲートウェイはサービスへの入り口として機能します。A gateway allows your services to communicate with external clients and provides an ingress into your service(s). ゲートウェイは、Mesh アプリケーションとお客様の既存の仮想ネットワークを接続する場合にも使用できます。A gateway can also be used to connect your Mesh application with your own, existing virtual network. 詳細については、Service Fabric Mesh アプリケーションのネットワークに関するページを参照してください。For more information, read about networking in Service Fabric Mesh applications.

ネットワークとゲートウェイ

シークレットSecrets

シークレット リソースは、依存関係として参照されている可能性があるアプリケーション リソースまたはサービス リソースとは関係なく、デプロイできます。Secrets resources are deployable independent of an application or service resource that may refer to it as their dependency. アプリケーションに安全にシークレットを配信するために使用されます。It is used to securely deliver Secrets to your applications. 異なるアプリケーションの複数のサービスが同じシークレットの値を参照できます。Multiple services from different applications can reference values of the same Secret.

ボリュームVolumes

多くの場合、コンテナーは一時ディスクを利用可能にしています。Containers often make temporary disks available. 一時ディスクは一時的なので、コンテナーがクラッシュすると、新しい一時ディスクを取得され、情報は失われます。Temporary disks are ephemeral, however, so you get a new temporary disk and lose the information when a container crashes. また、一時ディスク上の情報を他のコンテナーと共有することは困難でもあります。It is also difficult to share information on temporary disks with other containers. ボリュームは、コンテナー インスタンス内にマウントされ、状態を保持するために使用できるディレクトリです。Volumes are directories that get mounted inside your container instances that you can use to persist state. ボリュームを利用することで、汎用目的のファイル ストレージが与えられ、通常のディスク I/O ファイル API を利用してファイルを読み書きできます。Volumes give you general-purpose file storage and allow you to read/write files using normal disk I/O file APIs. ボリューム リソースは、ディレクトリのマウント方法とそのバッキング ストレージを示す宣言的な方法です (Azure Files Volume または Service Fabric Reliable Volume)。The Volume resource is a declarative way to describe how a directory is mounted and the backing storage for it (either Azure Files Volume or Service Fabric Reliable Volume). 詳細については、状態の格納に関するページを参照してください。For more information, read storing state.

ボリューム

プログラミング モデルProgramming models

サービス リソースは、リソースに関連付けられたコード パッケージで参照されているコンテナー イメージのみを実行する必要があります。Service resource only requires a container image to run, which is referenced in the code package(s) associated with the resource. コンテナー内の任意のフレームワークを使用して、任意の言語で記述した任意のコードを実行できます。Service Fabric Mesh 固有の API を理解したり使用したりする必要はありません。You can run any code, written in any language, using any framework inside the container without requiring to know, or use, Service Fabric Mesh specific APIs.

Service Fabric Mesh の外部でもアプリケーション コードは移植性があり、サービスの実装に使用される言語やフレームワークに関係なく、アプリケーションのデプロイは一貫したままです。Your application code remains portable even outside of Service Fabric Mesh and your application deployments remain consistent regardless of the language or framework used to implement your services. アプリケーションが ASP.NET Core、Go、または一連のプロセスとスクリプトのいずれであっても、Service Fabric Mesh リソースのデプロイ モデルは変わりません。Whether your application is ASP.NET Core, Go, or just a set of processes and scripts, the Service Fabric Mesh Resource deployment model remains the same.

パッケージとデプロイPackaging and deployment

リソース モデルに基づく Service Fabric Mesh アプリケーションは Docker コンテナーとしてパッケージ化されています。Service Fabric Mesh applications based on the resource model are packaged as Docker containers. Service Fabric Mesh は共有されたマルチテナント環境であり、コンテナーによって高いレベルの分離を実現できます。Service Fabric Mesh is a shared, multi-tenant environment and containers give you a high level of isolation. これらのアプリケーションは、JSON 形式または YAML 形式 (この場合は JSON に変換されます) を使用して記述されます。These applications are described using a JSON format or a YAML format (which is then converted to JSON). Mesh アプリケーションを Azure Service Fabric Mesh にデプロイすると、アプリケーションの記述に使用された JSON は Azure Resource Manager テンプレートになります。When deploying a Mesh application to Azure Service Fabric Mesh, the JSON used to describe the application is an Azure Resource Manager template. リソースは Azure リソースにマップされます。Resources are mapped to Azure resources. Mesh アプリケーションを Service Fabric クラスター (スタンドアロンまたは Azure ホスト式) にデプロイすると、アプリケーションの記述に使用された JSON は Azure Resource Manager テンプレートと似た形式になります。When deploying a Mesh application to a Service Fabric cluster (standalone or Azure-hosted), the JSON used to describe the application is a format similar to an Azure Resource Manager template. デプロイ後は、Mesh アプリケーションを HTTP インターフェイスまたは Azure CLI を介して管理できます。Once deployed, Mesh applications can be managed through HTTP interfaces or the Azure CLI.

次の手順Next steps

Service Fabric Mesh の詳細については、以下の概要ページを参照してください。To learn more about Service Fabric Mesh, read the overview: