設定

ランタイム設定

実行中のアプリがどこから来るか、どのデータベースを使うか、そしてデプロイメントが宣言しなければならない起動時の判断。

対応エディション

ランタイム設定は 3 つの問いに答えます。

  1. 実行中のアプリはどこから来るか?
  2. どのデータベースを使うか?
  3. このデプロイメントは何であることが許されているか:接続されているか切り離されているか、組織は 1 つか複数か。

このページは、それらの判断の形について扱います。変数の名前とその正確な契約は環境変数にあり、コピーする値はリリースとともに提供されるデプロイバンドルにあります。

アプリはどこから来るか

有効なソースは常にちょうど 1 つで、どれであるかはデプロイメントが宣言します。

モード使う場面アプリの届き方
設定で作成出荷時の形:1 つのアプリ、評価、エアギャップ、ほとんどの本番デプロイメントランタイムは、イメージ内で作成されたメタデータと、そこにインストールされたものを提供します
成果物に固定アプリが、ランタイムのイメージとは独立した独自の周期でリリースされる1 つの変数が、公開された成果物を URL で指定します。この経路では、イメージ自身の設定は読み込まれません
合成分離の壁の内側にある複数の組織が 1 つのデータベースを共有し、公開されたアプリを実行する同じ成果物の参照を、デプロイメント自身の設定から読み込むので、エンタープライズのプラグインがそれとともに読み込まれます。エアギャップライセンスでのみ可能で、それ以外では起動時に拒否されます

公開されたアプリのアップグレードは、成果物の参照の変更と再起動であり、イメージの再ビルドはありません。ロールバックは以前の URL で同じ操作をすることで、以前のオブジェクトが同じバイト列のまま存在している場合にだけ機能します。それはランタイムではなく公開の仕方の性質なので、このモードには 3 つのルールが伴います。

  • 変更不可能で、バージョン名の付いたオブジェクトを公開します。 公開済みの成果物を決して上書きせず、動く名前には決して公開しないでください。変更可能な名前では、デプロイのイベントなしに実行中のアプリが変わりうるうえ、ロールバックが不可能になり、「14:05 に何が実行されていたか」という監査上の答えが失われます。
  • 書き込みアクセスは公開パイプラインにだけ与えます。 人が書き込める成果物ストアは、レビューのない本番デプロイの経路です。
  • 本番ではダイジェストを固定します。 参照は省略可能な完全性の固定を持てます。それがあれば、不一致のときに起動を拒否し、期待したダイジェストと実際のダイジェストを示します。それがなければ、ランタイムはホストが返したものを何でも起動し、再公開された成果物と差し替えられた成果物を区別できません。

file:// の参照は、成果物のホストなしで同じ経路を試せます。そのため、デプロイメントのリハーサルにはこれが適しています。本番のコマンドは、リハーサルしたものとちょうど 1 か所だけが異なることになります。

成果物の経路でのマイグレーション

この経路での「アプリのアップグレード」は環境の変更と再起動であり、スキーマとメタデータが初めて食い違いうる瞬間に、誰もターミナルの前にいません。そのため、この経路では(そしてこの経路だけは)安全なスキーマ変更を自動的に適用し、破壊的な変更では起動を拒否します。その際、すべての変更と、それを解決するコマンドを示します。それ以外のすべての起動では、スキーマを決して自動的に変更しない、常設の本番ポリシーが維持されます。

ランタイムが推測しない起動時の判断

一部の設定は、設定が読み込まれるときにチェックされ、機能を落として動くのではなく拒否されます。拒否されると、食い違っている設定を示す致命的なエラーが出力され、終了します。

  • ライセンスのモードとクラウドの方式は結び付いています。 通常のライセンスはコントロールプレーンに対してオンラインで検証され、エアギャップライセンスはネットワーク通信なしにローカルで検証されます。通常のライセンスと「コントロールプレーンなし」の組み合わせは、機能を落として動くのではなく不可能であり、検証が試みられる前に拒否されます。完全な対応表はエアギャップにあります。
  • クラウドの方式を未設定のままにすることは「クラウドなし」ではありません。 未設定は公開のコントロールプレーンに解決されます。どこにも通信しないつもりのデプロイメントは、そのことを明示しなければなりません。
  • 複数組織の方式にはライセンスが必要です。 さらに 2 つの判断が必須になります。新しいサインアップが何に参加するか、そしてどの AI エージェントをマウントするかです。どちらも、利用可能な値のいずれかを宣言すれば受け付けられますが、決めないことは受け付けられません。単一組織のデプロイメントには、どちらのチェックもありません。
  • クラスタードライバーを使うと、共有のシークレットキーが 1 つ必須になります。 すべてのレプリカで同じものです。クラスタードライバーがなければ各レプリカが独自のキーを生成しますが、レプリカ間ではそれらが黙って食い違ってしまうので、ランタイムは代わりに起動を拒否します。

コントロールプレーンに接続する

コントロールプレーンは、マーケットプレイスのカタログを提供し、通常のライセンスを検証するものです。接続は貼り付けた認証情報ではなくバインディングです。デプロイメントはコントロールプレーンに一度バインドされ、ランタイムは発行されたトークンを永続化して、以降のすべての呼び出しでそれを提示します。配布したり手でローテーションしたりするデプロイメントの API キーはありません。

バインドされ、クラウドに接続されたデプロイメントも、やはり単一環境のデプロイメントです。コントロールプレーンに接続しても、1 つのデプロイメントが複数になることはありません。

データベース

本番では、デプロイメントをマネージドデータベースに向け、同梱のデータベースサービスをスタックから取り除きます。同梱のものは初回の実行を動かすためにあるもので、本番の構成ではなく、コンテナローカルのストレージは業務データを置く場所ではありません。

ドライバーは接続 URL のスキームから推測されます。明示的に上書きするのは、スキームがその情報を表せない場合だけにしてください。サポートされていない値は、推測にフォールバックせずに失敗します。

出荷時のスタックは、スキーマのマイグレーションを、どのアプリケーションのレプリカが起動するよりも前に完了する一回限りのステップとして実行するので、並行するレプリカが互いにスキーマ変更を実行し合うことはありません。ほかのオーケストレーターでは、この順序を再現しなければなりません。追加のデータソースの宣言についてはデータソースを、復元の側についてはバックアップを参照してください。

認証のシークレット

セッションは基本のシークレットから署名され、それはすべてのレプリカで同一でなければなりません。ローテーションすると既存のすべてのセッションが無効になり、保存されている署名キーも宙に浮きます。そのためローテーションは設定の微調整ではなく計画的な作業であり、ローテーションに必要な追加のステップ 1 つは、デプロイバンドルのテンプレートに記載されています。シークレットはシークレットマネージャーに保管し、決してイメージには入れないでください。