アーキテクチャ
Lizard は、デプロイするリソースを 3 層で管理します。マネージドアドオンはプロジェクトに追加します。
workspace
└── project
├── service (app) ← built from GitHub or an upload
├── service (worker) ← background job, no HTTP port
└── addons
├── postgres
├── redis
└── s3ワークスペース
ワークスペース は、アカウントや組織ごとに課金、メンバー、プロジェクトをまとめる単位です。ユーザーは少なくとも 1 つに所属します。アクセスできるワークスペースを一覧表示するには、次を実行します:
lizard workspace list
lizard whoami # shows your active workspace複数のワークスペースに同名のプロジェクトがある場合に区別できるよう、多くのコマンドは -w, --workspace <ws> を受け付けます。
プロジェクト
プロジェクト は、ワークスペース内で関連するサービスとアドオンをまとめる単位です。作業ディレクトリをプロジェクトに リンク すると、CLI はそのリンクを基に対象を選びます。リンクは ~/.lizard/config.json に保存します。
lizard init --name my-project # create or select a project, link the cwd
lizard link --project my-project # link to an existing project
lizard status # show the current directory's link
lizard unlink # remove the link
lizard project list # all projects in the workspaceヒント: プロジェクトにはリポジトリ名またはディレクトリ名を使い、サービスには用途がわかる名前(
api、worker、web)を使ってください。
サービス
サービス はデプロイの単位です。ソースは次のいずれかです:
github:接続された GitHub リポジトリ。追跡対象ブランチへの push により自動で再デプロイされます。upload:lizard upでアップロードされた tarball。
各サービスは 隔離された Pod で動作します。ネットワークポリシーはデフォルトで通信を拒否し、生成ドメイン <name>-<suffix>.onlizard.com(古いサービスは <words>.<region>.onlizard.com を維持)と自動 TLS が付属します。コンテナは利用者が用意し、Lizard が実行します。この container as a service という仕組みと、利用者が管理する範囲をブログで説明しています。サービスの確認と管理には次を使います:
lizard ps # list services with status + URL
lizard service show # full config as JSON
lizard service set <svc> --set <field>=<value>
lizard service rename <new-name> --service <svc>
lizard service delete --service <svc>サービスの設定フィールドは フラット で、API のスキーマに 1:1 で対応しています(例: repoUrl、branch、buildCommand、startCommand、containerPort、rootDirectory)。build.* / deploy.* のようなネストはありません。完全な一覧は lizard service を参照してください。
App と worker service
デフォルトのサービスは、ポート(既定値は 3000)で待ち受け、割り当てたドメインで公開する HTTP アプリ です。キューコンシューマー、reconciler、ポーリングループなど、ポートで待ち受けないサービスは、containerPort=0 を設定して worker mode で実行します。ワーカーはポートの注入、ポートのヘルスチェック、ロードバランサーへの登録を行いません。
マネージドアドオン
アドオン は、プロジェクトごとに作成する Managed Postgres、Managed Redis、および Managed Object Storage(S3 互換)です:
lizard add postgres redis s3各アドオンは決まった環境変数を公開し、サービスはそれらを 参照(${{<addon-name>.KEY}})によって利用します。Managed Addons を参照してください。
リソース間参照
サービスまたはアドオンの値は、別のリソースの環境変数から次の形式で参照できます:
${{<name>.<KEY>}}Lizard はデプロイ時に、参照先の環境変数を統合した値を使って参照を解決します。参照先は 現在の名前 で指定します。サービスやアドオンの名前を変えた場合は、古い名前を使う参照をすべて更新してください。参照先やキーが存在しない場合は空文字列になります(デプロイは失敗しません)。エラーになるのは循環参照の場合だけです。
# Wire a service to the project's Postgres
lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api参照の解決結果を確認してください。ビルドログには空の値になった参照の警告が出力され、secrets list には保存されている内容が表示されます:
lizard logs --build --service api
lizard secrets list --service api --showプラットフォーム注入変数
すべてのサービス は自動的に次の変数を受け取ります(これらは上書きできません):
| 変数 | 説明 |
|---|---|
PORT | アプリが待ち受けるべきポート(worker mode では省略) |
LIZARD_SERVICE_NAME | サービス名 |
LIZARD_PROJECT_ID | プロジェクト ID |
LIZARD_PUBLIC_DOMAIN | サービスの公開ドメイン(ドメインの割り当て時に設定) |
LIZARD_PRIVATE_DOMAIN | サービスのプライベートホスト名 <host>.lizard.internal。同じプロジェクトから到達できます |
独自の変数との関係と優先順位については 変数 & Secrets を参照してください。
更新日