つばろぐ

主に C#, .NET, Azure の備忘録です。たまに日記。

Tyeの構成ファイルの tye.yaml のスキーマ定義を見てみる

これまで書いたProject Tyeの記事はこちら。

tsubalog.hatenablog.com

tsubalog.hatenablog.com


マイクロサービス開発ツールであるTyeはYamlファイルで構成を定義します。ファイル名は tye.yaml です。
今回はこの tye.yamlスキーマについて学びます。

tye.yamlスキーマGitHubで管理されており、誰でも閲覧することができます。
https://github.com/dotnet/tye/blob/master/docs/reference/schema.md

Visual Studio Codetye.yaml を書く準備

こちらのドキュメントに沿って環境を整えることで、Visual Studio Codetye.yaml を書く際にインテリセンスが表示されるようになります。
https://github.com/dotnet/tye/blob/master/src/schema/README.md

  1. Visual Studio CodeYaml拡張機能をインストールする
  2. Visual Studio Codeの設定画面を起動する (Ctrl+,)
  3. Yaml: Schemas」の設定を探し、settings.jsonを編集する
  4. "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 プロパティ

ドキュメントには「サービスによって公開されるバインディングのリスト」とあります。
該当のサービスが公開(実行)されるときのプロトコルに関する設定です。

args プロパティ

サービスの起動時に使用するコマンドライン引数となります。


他にも https://github.com/dotnet/tye/blob/master/docs/reference/schema.md には、スキーマ定義が記述されているため気になるものは後日検証してみようと思います。