CNE Kubernetes Ready: OpenShift開発者サンドボックスへのLiferay DXPのデプロイ
Red Hat Developer Sandbox は、 OpenShift 環境を無料で提供し、 liferay-default Helm チャートを使用して Kubernetes Ready デプロイメントを検証できます。
OpenShift Developer Sandbox に Liferay DXP をデプロイし、OpenShift Routeを介してルーティングを設定し、公開サンドボックスホスト名を介してアクセスを確認します。
デプロイメントではルート優先のアプローチを採用しています。Liferay をインストールする前に OpenShift ルート を作成し、Liferay が最初の起動時にデータベースを初期化するまでに最終的なホスト名が存在するようにします。
前提条件
以下のツールをローカルにインストールしてください。
| 道具 | 目的 |
|---|---|
oc | OpenShiftクラスターとのやり取り |
| Helm 3.8+ | liferay-default チャートをインストールします |
このチャートはOCIアーティファクトとして配布されるため、Helm 3.8以降が必要です。
OpenShift開発者サンドボックスを作成する
-
Red Hatアカウントでサインインしてください。
-
をクリックしてサンドボックスを開始してください。
-
プロビジョニングが完了したら、OpenShiftのWebコンソールを開いてください。
無料のサンドボックスプランには、以下のリソース制限が含まれています。
| リソース | 制限 |
|---|---|
| メモリ | プロジェクトあたり7 GiB |
| CPU | 専用vCPU 1基 |
| ストレージ | 5 GiBの永続ボリューム |
| セッション期間 | 30日間、更新可能 |
例示されているOpenShiftオーバーレイの値は、これらの制限内に収まります。
CLIからクラスターにログインします
-
OpenShift コンソールで、ユーザー名をクリックし、 ログインコマンドのコピー を選択します。
-
をクリックしてトークンを表示 します。
-
生成された
oc loginコマンドをコピーしてローカルで実行します。oc login --token=sha256~... \ --server=https://api.<sandbox>.openshiftapps.com:6443 -
アクティブなプロジェクトを確認してください:
oc project
ターミナルにサンドボックスプロジェクト名が表示されます。
Liferayをインストールする前にルートを作成する
OpenShift ルート は、バックエンド サービスが存在しない場合でも、作成直後にパブリック ホスト名を割り当てます。
システムは初回起動時にホスト名をLiferayデータベースに書き込むため、この手順はLiferayの起動前に実行する必要があります。 その時点で誤ったホスト名を使用すると、システムはそれを保持し、ルートを経由した後のリクエストは NoSuchVirtualHostException エラーで失敗します。
-
このマニフェストを
route.yamlとして保存します。apiVersion: route.openshift.io/v1 kind: Route metadata: name: liferay-default spec: to: kind: Service name: liferay-default port: targetPort: http tls: termination: edge insecureEdgeTerminationPolicy: Redirect -
ルートを適用する:
oc apply -f route.yaml -
生成されたホスト名を保存します。
ROUTE_HOST="$(oc get route liferay-default \ -o jsonpath='{.spec.host}')" echo "$ROUTE_HOST"
端末には、次のようなホスト名が表示されます。
liferay-default-your-user-dev.apps.rm3.7wse.p1.openshiftapps.com
ルートは、デプロイメントの後半でLiferayサービスが利用可能になるまで、HTTP 503エラーを返します。
Liferay仮想ホストの設定
Liferayは、最初の起動が完了する前に、最終的なOpenShift Routeホスト名を必要とします。 それ以外の場合、デフォルトの会社は localhost を仮想ホストとして初期化されます。
例 liferay-network ConfigMap は、必要なホスト名を Liferay 環境に挿入します。
-
このマニフェストを
liferay-network-cm.yamlとして保存し、REPLACE_WITH_ROUTE_HOSTを$ROUTE_HOSTに格納されている値で置き換えます。apiVersion: v1 kind: ConfigMap metadata: name: liferay-network data: LIFERAY_COMPANY_PERIOD_DEFAULT_PERIOD_VIRTUAL_PERIOD_HOST_PERIOD_NAME: REPLACE_WITH_ROUTE_HOST LIFERAY_COMPANY_PERIOD_DEFAULT_PERIOD_VIRTUAL_PERIOD_HOST_PERIOD_SYNC_PERIOD_ON_PERIOD_STARTUP: "true" -
ConfigMapを適用する:
oc apply -f liferay-network-cm.yaml -
ConfigMapを確認します。
oc get configmap liferay-network -o yaml
ConfigMapは以下のプロパティを提供します。
| プロパティ | 目的 |
|---|---|
company.default.virtual.host.name | OpenShiftルートのホスト名を設定します |
company.default.virtual.host.sync.on.startup=true | 起動時にホスト名を再適用します |
Liferayを初めて起動する前に、ConfigMapを作成してください。 Liferayは初期化時に、デフォルトの企業仮想ホストをデータベースに書き込みます。 その時点でホスト名がまだ localhost の場合、会社構成を手動で修正するまで、ルート経由のリクエストは NoSuchVirtualHostException エラーで失敗します。
Liferay Helm Chartをインストールします
このチャートはOCIアーティファクトとして公開されています。
oci://us-central1-docker.pkg.dev/liferay-artifact-registry/liferay-helm-chart/liferay-default
このオーバーレイを values-openshift.yaml として保存します。
podSecurityContext: {}
securityContext: {}
volumeClaimTemplates:
- metadata:
name: liferay-persistent-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
resources:
requests:
cpu: 500m
memory: 4Gi
limits:
cpu: 1000m
memory: 6Gi
startupProbe:
failureThreshold: 180
initialDelaySeconds: 120
readinessProbe:
failureThreshold: 6
initialDelaySeconds: 60
livenessProbe:
failureThreshold: 6
initialDelaySeconds: 120
customEnvFrom:
x-liferay-network:
- configMapRef:
name: liferay-network
OpenShiftオーバーレイ値を使用してチャートをインストールします。
helm upgrade -i liferay \
oci://us-central1-docker.pkg.dev/liferay-artifact-registry/liferay-helm-chart/liferay-default \
-f values-openshift.yaml
OpenShiftオーバーレイ構成
values-openshift.yaml オーバーレイは、OpenShift Developer Sandbox 環境の Helm チャート構成を調整します。
この表は、オーバーレイ設定項目について説明しています。
| 設定 | 目的 |
|---|---|
をリーフします。 securityContext は空です。 | OpenShift restricted-v2 SCC はランタイム UID を動的に割り当てます |
| リクエストを減らし、リソースを制限する | サンドボックスのメモリとCPUの制限(7 GiB / 1 vCPU)内に収まります。 |
| 健康調査を緩和する | 限られたリソースでの低速なコールドスタートに対応 |
liferay-network ConfigMap を参照します | ルートホスト名をLiferay環境に挿入します。 |
展開の様子をご覧ください
-
ポッドの起動状況を確認してください:
oc get pod -w
ポッドは、準備が整うまでにいくつかの初期化フェーズを経る。
-
Liferayのログをストリーミングする:
oc logs -f liferay-default-0
起動メッセージが表示されることを確認してください。
Server startup in [...] milliseconds
サンドボックス環境ではCPUとメモリのリソースが限られているため、初回起動には5分から15分かかります。
デプロイメントを確認する
-
ブラウザでルートホスト名を開きます。
https://$ROUTE_HOST/ -
をクリックしてサインイン をクリックしてください。
-
デフォルトの管理者アカウント認証情報を使用します。
項目 値 メール test@liferay.comパスワード Kubernetes Secretからの抜粋 -
生成されたパスワードを取得します。
oc extract secret/liferay-default \ --keys=LIFERAY_DEFAULT_PERIOD_ADMIN_PERIOD_PASSWORD \ --to=- -
初期パスワードリセット手順を完了してください。
ログイン後、Liferayコントロールパネルが正常に起動します。
展開を一時停止する
ポッドが停止しても、サンドボックス環境はアクティブなままです。
環境がアイドル状態のときは、StatefulSet のレプリカ数をゼロにスケールします。
oc scale statefulset liferay-default --replicas=0
後で規模を元に戻してください。
oc scale statefulset liferay-default --replicas=1
コールドスタートには数分かかります。
デプロイメントをクリーンアップする
Helmリリースを削除します。
helm uninstall liferay
永続的なボリューム要求を個別に削除します。
oc delete pvc liferay-persistent-volume-liferay-default-0
Helmは、偶発的なデータ損失を防ぐために、設計上、永続ボリュームを保持します。 環境を完全にリセットするには、PVCを手動で取り外す必要があります。