アプリ ランタイム

アプリ ランタイムとは、アプリが実行される環境です。

Buildpack アプリ コンテナ イメージ アプリ
システム ライブラリ スタックにより提供 コンテナで提供
ネットワーク アクセス Envoy サイドカーを通じた完全アクセス Envoy サイドカーを通じた完全アクセス
ファイル システム エフェメラル ストレージ エフェメラル ストレージ
言語ランタイム スタックまたは Buildpack により提供 コンテナに組み込み
ユーザー スタックにより指定 コンテナで指定
分離メカニズム Kubernetes Pod Kubernetes Pod
DNS Kubernetes による提供 Kubernetes による提供

環境変数

環境変数は、Kubernetes によってランタイム時にアプリに挿入されます。変数は次の順序で追加されます。ここで、後の値は同じ名前を持つ以前の値をオーバーライドします。

  1. スペース(管理者が設定)
  2. アプリ(デベロッパーが設定)
  3. システム(Kf が設定)

Kf には、次のシステム環境変数が用意されています。

変数 目的
CF_INSTANCE_ADDR アプリ インスタンスのクラスタ可視 IP:PORT。
CF_INSTANCE_GUID アプリ インスタンスの UUID。
INSTANCE_GUID CF_INSTANCE_GUID の別名。
CF_INSTANCE_INDEX アプリ インスタンスのインデックス番号。これは常に 0 です。
INSTANCE_INDEX CF_INSTANCE_INDEX の別名。
CF_INSTANCE_IP アプリ インスタンスのクラスタ可視 IP。
CF_INSTANCE_INTERNAL_IP CF_INSTANCE_IP の別名
VCAP_APP_HOST CF_INSTANCE_IP の別名
CF_INSTANCE_PORT アプリ インスタンスのクラスタ可視ポート。Kf では、PORT と同じです。
DATABASE_URL VCAP_SERVICES 認証情報で最初に見つかった URI。
LANG Buildpack でスクリプトの読み込み順序の一貫性を保つために必要。
MEMORY_LIMIT アプリが使用できる最大メモリ量(MB)。
PORT アプリがリクエストをリッスンするポート。
VCAP_APP_PORT PORT の別名。
VCAP_APPLICATION アプリのメタデータを含む JSON 構造体。
VCAP_SERVICES バインドされたサービスを指定する JSON 構造体。

バインドされたサービスのサービス認証情報は、VCAP_SERVICES 環境変数を介してアプリに挿入されます。環境変数は、次の構造の有効な JSON オブジェクトです。

VCAPServices

キーが Service ラベルで、値が VCAPService の配列の JSON オブジェクト。配列は、そのラベルを持つすべてのバインドされたサービスを表します。ユーザー提供のサービスは、user-provided ラベルの下に表示されます。

{
  "mysql": [...],
  "postgresql": [...],
  "user-provided": [...]
}

VCAPService

この型は、バインドされた単一のサービス インスタンスを表します。

{
  "binding_name": string,
  "instance_name": string,
  "name": string,
  "label": string,
  "tags": string[],
  "plan": string,
  "credentials": object
}

フィールド

フィールド タイプ 説明
binding_name string ユーザーがサービス バインディングに割り当てた名前。
instance_name string ユーザーがサービス インスタンスに割り当てた名前。
name string 存在する場合は binding_name、存在しない場合は instance_name
label string サービス パッケージの名前。
tags string[] アプリがサービス インスタンスを識別するために使用できる文字列の配列。
plan string[] サービス インスタンスの作成時に選択されたサービスプラン。
credentials object サービス インスタンスにアクセスするために必要なサービス固有の認証情報。

VCAP_APPLICATION

VCAP_APPLICATION 環境変数は、アプリに関するメタデータを含む JSON オブジェクトです。

{
  "application_id": "12345",
  "application_name": "my-app",
  "application_uris": ["my-app.example.com"],
  "limits": {
    "disk": 1024,
    "mem": 256
  },
  "name": "my-app",
  "process_id": "12345",
  "process_type": "web",
  "space_name": "my-ns",
  "uris": ["my-app.example.com"]
}

フィールド

フィールド タイプ 説明
application_id string アプリを識別する GUID。
application_name string push されたときにアプリに割り当てられた名前。
application_uris string[] アプリに割り当てられた URI。
limits object ディスク容量とアプリに許可されるメモリの上限。メモリとディスク容量の上限は、アプリをデプロイするときに、コマンドラインまたはアプリ マニフェストで指定します。ディスクとメモリの上限は整数で表され、単位は MB です。
name string application_name と同一。
process_id string プロセスを識別する UID。実行中のアプリコンテナにのみ存在します。
process_type string プロセスのタイプ。実行中のアプリコンテナにのみ存在します。
space_name string アプリがデプロイされている Space の、人が読める形式の名前。
uris string[] application_uris と同一。

欠落しているフィールド

現在、Kf では、Cloud Foundry にある VCAP_APPLICATION の一部のフィールドはサポートされていません。

CF 固有の非推奨フィールド(cf_apihostusers)を除き、Kf でサポートされていないフィールドは次のとおりです。

  • application_versionversion と同一)
  • organization_id
  • organization_name
  • space_id
  • startstarted_at と同一)
  • started_at_timestampstate_timestamp と同一)