これまで書いたProject Tyeの記事はこちら。
マイクロサービス開発ツールであるTyeはYamlファイルで構成を定義します。ファイル名は tye.yaml です。
今回はこの tye.yaml のスキーマについて学びます。
tye.yaml のスキーマはGitHubで管理されており、誰でも閲覧することができます。
https://github.com/dotnet/tye/blob/master/docs/reference/schema.md
Visual Studio Codeで tye.yaml を書く準備
こちらのドキュメントに沿って環境を整えることで、Visual Studio Codeで tye.yaml を書く際にインテリセンスが表示されるようになります。
https://github.com/dotnet/tye/blob/master/src/schema/README.md
- Visual Studio CodeにYaml拡張機能をインストールする
- Visual Studio Codeの設定画面を起動する (
Ctrl+,) - 「Yaml: Schemas」の設定を探し、settings.jsonを編集する
"yaml.schemas"にTyeのスキーマファイルを指定する
{ "yaml.schemas": { "https://raw.githubusercontent.com/dotnet/tye/master/src/schema/tye-schema.json": [ "tye.yaml" ] } }
スキーマの定義
過去記事のサンプルアプリケーションで使用している tye.yaml を例に説明します。
https://github.com/tsubakimoto/project-tye-sample/blob/master/tye.yaml
name: microservice registry: tsubakimoto services: - name: backend project: backend\backend.csproj - name: frontend project: frontend\frontend.csproj - name: redis image: redis bindings: - port: 6379 connectionString: "${host}:${port}" - name: redis-cli image: redis args: "redis-cli -h redis MONITOR"
name プロパティ
Tyeでのアプリケーションの名前となります。このプロパティが使われることはほとんどないですが、Kubernetesにデプロイした場合はラベル名に使用されます。
このプロパティが指定されない場合は tye.yaml のあるディレクトリ名(小文字)が使用されます。
registry プロパティ
コンテナーレジストリの名前を指定します。DockerHubもしくはAzure Container Registryの名前を指定することができます。
ここで指定したコンテナーレジストリに、イメージやタグがプッシュされます。
namespace プロパティ
Kubernetesへのデプロイ時に、Kubernetesの名前空間(namespace)として使用されます。
以前のサンプルアプリケーションでは namespace プロパティを使用していないので、後日検証してみようと思います。
services プロパティ
アプリケーションを構成するサービスを指定します。少なくとも1つは必要です。
services プロパティでは以下のプロパティを定義することができます。
name プロパティ
サービス名となり、DNS名として利用可能な文字種である必要があります。
- 最大63文字
- 英数字または「-」のみ
- 英数字で始まる
- 英数字で終わる
project プロパティ
.csproj ファイル、もしくは .fsproj ファイルのパスを指定します。ファイルパスは tye.yaml からの相対パスです。
このプロパティに指定されたプロジェクトは、ローカルでのビルドや実行の対象となり、パッケージ化の対象となります。
image プロパティ
Dockerイメージを使用する場合にイメージ名とタグを指定します。
上記のサンプルの image: redis は、redis というイメージの latest タグとなります。
bindings プロパティ
ドキュメントには「サービスによって公開されるバインディングのリスト」とあります。
該当のサービスが公開(実行)されるときのプロトコルに関する設定です。
portプロパティ- ポートバインディングに使用するポート番号。
connectionString- サービスにバインドされる接続文字列。参照元のサービス側でどのように解釈されるかはサービスディスカバリという仕組みがあるみたいです。
args プロパティ
サービスの起動時に使用するコマンドライン引数となります。
他にも https://github.com/dotnet/tye/blob/master/docs/reference/schema.md には、スキーマ定義が記述されているため気になるものは後日検証してみようと思います。