LCP.jsonによる設定
Liferay Cloud 環境内の各サービスには、サービスを構成するために使用できる LCP.json ファイルがあります。 サービスID、メモリ、CPU数、環境変数、ボリュームなどのプロパティを設定できます。
この表は、 LCP.jsonに追加できるプロパティの一覧と説明です。
| 項目 | 種類 | デフォルト値 | 説明 |
|---|---|---|---|
id | 文字列 | ランダム | サービスID |
image | 文字列 | "" | Docker Hubからのサービスイメージ |
env | オブジェクト | 未分類 | 環境変数 |
loadBalancer | オブジェクト | {} | 公開ポートとドメインの宣言 |
cpu | 数字 | 1 | CPUの数 |
scale | 数字 | 1 | インスタンスの開始数 |
memory | 数字 | 512 | メモリ量(MB) |
volumes | オブジェクト | 未分類 | データを永続化するためのパス |
readinessProbe | オブジェクト | { "timeoutSeconds": 5 } | サービス準備状況の確認 |
livenessProbe | オブジェクト | { "timeoutSeconds": 5 } | サービスの生存確認 |
dependencies | 配列 | [] | 依存関係のデプロイメント順序 |
kind | 文字列 | Deployment | デプロイメントタイプ(例:デプロイメントまたはステートフルセット) |
strategy | オブジェクト | { "type": "RollingUpdate" } | デプロイ戦略(RollingUpdateやRecreateなど) |
ports | 配列 | [] | ポートとプロトコルの宣言 |
environments | オブジェクト | {} | 環境固有の構成 |
deploy | ブール値 | true | 指定された環境にサービスがデプロイされるかどうか。 このプロパティは、ルート レベルではなく、 環境 プロパティ内でのみ使用してください。 サンプル LCP.json ファイルを参照してください。 |
autoscale | オブジェクト | { "cpu": 80, "memory": 80 } | オートスケーリングでのCPUおよびメモリの目標平均使用率。 自動スケーリングでのこの動作の詳細については、 自動スケーリングを参照してください。 |
使用量
ここにすべてのプロパティを使用する LCP.json ファイルの例を示します。
{
"id": "myservice",
"image": "liferaycloud/example",
"env": {
"DB_USER": "root",
"DB_PASSWORD": "pass123"
},
"loadBalancer": {
"cdn": true,
"targetPort": 3000,
"customDomains": ["example.com"],
"ssl": {
"key": "...",
"crt": "..."
}
},
"cpu": 2,
"scale": 2,
"memory": 2048,
"volumes": {
"storage": "/opt/storage"
},
"livenessProbe": {
"timeoutSeconds": 5,
"httpGet": {
"path": "/status",
"port": 3000
},
"initialDelaySeconds": 40,
"periodSeconds": 5,
"successThreshold": 1
},
"readinessProbe": {
"timeoutSeconds": 5,
"exec": {
"command": ["cat", "/tmp/healthy"]
},
"initialDelaySeconds": 40,
"periodSeconds": 5
},
"dependencies": ["service1", "service2"],
"kind": "StatefulSet",
"strategy": {
"type": "RollingUpdate"
},
"ports": [
{
"port": 3400,
"targetPort": 7000,
"protocol": "TCP"
},
{
"port": 9000,
"targetPort": 8000,
"protocol": "TCP",
"external": true
}
],
"environments": {
"prd": {
"memory": 4096,
"cpu": 6
},
"dev": {
"deploy": false
}
},
"autoscale": {
"cpu": 90,
"memory": 90
}
}
環境 構成
環境 構成では、 LCP.json 構成に対して環境固有のオーバーライドが可能になります。
たとえば、CI サービスは infra 環境にのみデプロイされる必要があるため、この environments 構成は、特に infra 環境に対して動作 ("deploy": false) をオーバーライドします。
{
"id": "ci",
"memory": 8192,
"cpu": 4,
"deploy": false,
"environments": {
"infra": {
"deploy": true
}
}
}
JSONオブジェクトのオーバーライド
JSON オブジェクト構成 ( loadBalancer 構成など) の場合は、環境ごとにオーバーライドする特定のフィールドのみを指定します。 その他のフィールドは、デフォルトで既存の構成から継承されます。
この例では、 環境 構成により、 dev 環境の CDN が無効になりますが、すべての環境のターゲット ポート 80 が保持されます。
{
"id": "webserver",
"memory": 512,
"cpu": 2,
"loadBalancer": {
"targetPort": 80,
"cdn": true
},
"environments": {
"dev": {
"loadBalancer": {
"cdn": false
}
}
}
}
JSON配列のオーバーライド
JSON オブジェクトとは異なり、 環境 構成で JSON 配列をオーバーライドする場合は、オーバーライドで配列全体を定義する必要があります。 含まない配列の要素は、環境固有の結果に含まれない。
この例では、 ports 配列をオーバーライドし、 environments 構成によって、 uat 環境を 1 つのポートのみで構成します (他のすべての環境では 2 つのポート)。
{
"id": "database",
"memory": 1024,
"cpu": 2,
"ports": [
{
"port": 3306,
"external": false
},
{
"port": 3000,
"external": false
}
],
"environments": {
"uat": {
"ports": [
{
"port": 3306,
"external": true
}
]
}
}
}