CNE: 自動環境ライセンス
DXPオペレーターは、Liferayの顧客ポータルであるOne Liferayのプロビジョニングサービスを通じて、Liferay DXP環境のライセンスを自動的に取得できます。ライセンスを有効にすると、オペレーターはアクティベーションコードを使用して環境をアクティブ化し、ライセンスを取得し、デフォルトでは10分ごとにライセンスを再確認します。小切手一枚一枚は、心臓の鼓動のようだ。
デフォルトでは、オペレーターはオンラインで環境のライセンスを取得し、 https://api.one.liferay.com への発信HTTPSアクセスが必要です。環境がプロビジョニング・サービスに直接アクセスできない場合は、代わりにアクティベーション・バンドルを使用してオフラインでライセンスを付与することができます。
環境とは、独自のKubernetesネームスペース内に存在する、1つの論理的なLiferay DXPクラスタのことです。オペレーターは環境を名前空間ごとに識別するため、各名前空間では1つの環境のみを実行してください。環境の LiferayEnvironment リソース、短縮名 lenvには、その設定とオペレーターが報告するステータスが保持されます。
- 環境のライセンスを確認してエラーを修正するには、 CNE: 環境ライセンスの確認とトラブルシューティング を参照してください。
license.xmlを保存してマウントすることにより、環境を手動でライセンスするには、 CNE Kubernetes Ready: Configuring External Dependencies、 CNE AWS Ready: Managing Secrets and Licenses、または CNE GCP Ready: Managing Secrets and Licenses を参照してください。
この例では、名前空間 liferay と LiferayEnvironment 名前 liferay-default を使用しています。 liferay-default-activation などのシークレット名を含め、独自のものに置き換えてください。
オペレーターのインストール
インフラストラクチャプロバイダーチャート1.1.0以降では、CNE AWS ReadyおよびCNE GCP Readyがオペレーターを自動的にインストールします。
Kubernetes Readyでは、オペレーターを自分でインストールしてください。 liferay-default チャートでライセンスを有効にする前にインストールしてください。そうしないと、チャートの Helm インストールまたはアップグレードが失敗します。オペレーターをインストールするには、クラスター管理者権限とKubernetes 1.30以降が必要です。
-
liferay-dxp-operatorチャートをインストールします。helm upgrade --install dxp-operator \ oci://us-central1-docker.pkg.dev/external-assets-prd/liferay-helm-chart/liferay-dxp-operator \ --create-namespace \ --namespace dxp-operator-system \ --set fullnameOverride=dxp-operator \ --version 0.1.2 -
オペレーターが実行されていることを確認してください。
kubectl --namespace dxp-operator-system rollout status deployment/dxp-operator
kubectlの代わりにアクティベーション ワークフローを使用して環境をアクティブ化する場合は、 helm upgrade --install コマンドを Argo ワークフローを使用したアクティブ化 で指定した値で再実行してください。
マーケットプレイスの音量をオンにする
事業者は、マーケットプレイスのアドオンとオフラインアクティベーションバンドルを、自社のマーケットプレイスボリュームに保存します。ボリュームがないと、アドオンのダウンロードは失敗します。 AWSとGCPのインフラストラクチャプロバイダーチャートは、自動的に有効になります。 Kubernetes Ready では、サブスクリプションに Marketplace アドオンが含まれている場合、または ライセンスをオフライン で使用している場合は、これを有効にしてください。
ボリュームには、 ReadWriteMany アクセス モードを持つ PersistentVolumeClaim が dxp-operator-system 名前空間に必要です。クレームはご自身で作成するか、オペレーターに既存のストレージボリューム上に作成してもらうことができます。 2 番目のオプションでは、以下のコマンドに --set フラグを追加して、 marketplace.csi.driver、 marketplace.csi.volumeHandle、および CSI ドライバーに必要な marketplace.csi.volumeAttributes を指定します。
マーケットプレイスの値に加えて、以前に設定した値も加えて、オペレーターのインストールコマンドを再実行してください。[クレーム名] を、ご自身のクレーム名、またはチャートが作成するクレーム名に置き換えてください。
helm upgrade --install dxp-operator \
oci://us-central1-docker.pkg.dev/external-assets-prd/liferay-helm-chart/liferay-dxp-operator \
--create-namespace \
--namespace dxp-operator-system \
--set fullnameOverride=dxp-operator \
--set marketplace.enabled=true \
--set marketplace.claimName="[claim name]" \
--version 0.1.2
ライセンスの有効化
ライセンス の値には、インストールするチャートのバージョン 2.0.1 以降が必要です: liferay-default、 liferay-aws、または liferay-gcp。 license.enabled は liferay-default チャートで false がデフォルトで有効になっています。これを trueに設定すると、チャートは LiferayEnvironment という名前 liferay-defaultを作成するか、チャートの nameOverride 値に基づいて名前を付けます。
Kubernetes Ready では、 liferay-default チャートの値ファイルでライセンス値を設定します。クラスターで Argo Workflows が実行されている場合、またはチャートが 3.0.0 より古い場合は、 licensing.enabled を true に設定してください。
licensing:
enabled: true
クラスターで Argo Workflows が実行されておらず、チャートが 3.0.0 以降の場合は、 licensing.onlineActivationWorkflow.enabled を falseに設定してください。そうしないと、Helm のインストールまたはアップグレードが失敗します。
licensing:
enabled: true
onlineActivationWorkflow:
enabled: false
次に、値ファイルを使用してリリースをアップグレードします。
CNE AWS Ready および CNE GCP Ready では、 license の liferay-default キーの下に値を設定して、 liferay/projects/[projectId]/base/liferay.yamlまたは liferay/projects/[projectId]/environments/[environmentId]/liferay.yaml に追加して、1 つの環境でのみライセンスを有効にします。
liferay-default:
licensing:
enabled: true
次に、変更内容をコミットしてGitOpsリポジトリにプッシュします。
Liferay DXP イメージの名前が liferay/dxpでない場合は、 licensing.dxpVersion を、ビルド元の liferay/dxp イメージのタグに設定してください。
liferay-default チャートなしでのライセンス
liferay-default チャートを使用せずに Liferay DXP をデプロイする場合は、 LiferayEnvironment を自分で作成してください。この例では、StatefulSet liferay を環境のワークロードとして指定し、Secret liferay-activation内のアクティベーションコードを参照し、2 つのレプリカを要求します。
apiVersion: licensing.liferay.com/v1alpha1
kind: LiferayEnvironment
metadata:
name: liferay
namespace: liferay
spec:
activationCodeSecretRef:
name: liferay-activation
key: activationCode
desiredReplicas: 2
workloadRef:
name: liferay
activationCodeSecretRef (Secret の 名前 と キー) および workloadRef (StatefulSet の 名前) が必要です。その他の項目は任意です。
desiredReplicas: ライセンスの ノード制限 に制限される、必要なレプリカ数。
dxpVersion: プロビジョニング サービスに報告された DXP バージョン。空の場合、オペレーターは StatefulSet 上の liferay/dxp イメージのタグからそれを読み取ります。
environmentName: 環境の表示名。
オフライン および offlineActivationBundle: オフライン モード 設定。
チャートがないと、ライセンスをLiferay DXPにマウントできません。オペレーターが書き込む Secret から license.xml を、リソース名と -entitlementsを添えて、Liferay DXP の deploy フォルダーにマウントします。 Liferay DXPは、このようにマウントされたファイルを起動時にのみコピーするため、ライセンス更新後は毎回Podを再起動してください。
kubectl を使用して、この環境を有効にしてください。アクティベーション ワークフローではそれをアクティブ化できません。なぜなら、ワークフローが実行されるサービス アカウントを作成するのは liferay-default チャートだけだからです。
環境の活性化
各オンライン環境は、One Liferayから入手できる使い捨ての認証コードで有効化されます。
アクティベーションコードは license.xml ではありません。オペレーターはそのコードを使って、あなたのためにライセンスを取得します。
オペレーターは、キー activationCode の下のアクティベーション シークレット liferay-default-activationからコードを読み取ります。別のシークレットまたはキーを使用するには、 license.activationCodeSecretName または license.activationCodeSecretKey を liferay-default チャートに設定し、以下の手順でシークレット名とキーを使用します。 kubectlを使用してシークレットを作成するか、 アクティベーション ワークフロー を送信して作成します。
kubectl でアクティベートする
kubectl を使用して有効化するには、
-
環境の名前空間にシークレットを作成します。
kubectl --namespace liferay create secret generic liferay-default-activation \ --from-literal=activationCode="[activation code]" -
ACTIVATED列がTrueとなり、VALID-UNTIL列に将来の有効期限が表示されるまで環境を監視してください。kubectl --namespace liferay get lenv liferay-default --watchACTIVATEDがTrueにならない場合は、Activated条件の理由をkubectl describe lenvで読み、 トラブルシューティング で調べてください。
Argo Workflows を使用したアクティベーション
アクティベーションワークフローは、アクティベーションコードをアクティベーションシークレットに書き込み、オペレーターに環境を即座にアクティベートするよう要求します。クラスター内に 個の Argo ワークフロー と、以下のチャート値が必要です。
onlineActivationWorkflow.enabled on the liferay-dxp-operator chart: ワークフローのクラスタ テンプレートをインストールします。デフォルト値は false で、CNE AWS Ready および CNE GCP Ready でも同様です。
licensing.onlineActivationWorkflow.enabled on the liferay-default chart: ワークフローのリソースを環境の名前空間にインストールします。デフォルト値は true です。
Kubernetes Ready では、オペレーターのインストール コマンドを onlineActivationWorkflow.enabled=true で再実行します。 helm upgrade コマンドで省略された値はすべてリセットされるため、以前に設定した値をすべて含めてください。
helm upgrade --install dxp-operator \
oci://us-central1-docker.pkg.dev/external-assets-prd/liferay-helm-chart/liferay-dxp-operator \
--create-namespace \
--namespace dxp-operator-system \
--set fullnameOverride=dxp-operator \
--set onlineActivationWorkflow.enabled=true \
--version 0.1.2
CNE AWS ReadyおよびCNE GCP Readyでは、ワークフローにインフラストラクチャプロバイダーチャート1.1.2以降が必要です。 onlineActivationWorkflow.enabled を liferay-dxp-operator キーの下に設定します。 liferay/system/infrastructure-provider.yaml:
liferay-dxp-operator:
onlineActivationWorkflow:
enabled: true
次に、変更内容をコミットしてGitOpsリポジトリにプッシュします。
チャート3.0.0以降
バージョン 3.0.0 以降、 liferay-default、 liferay-aws、および liferay-gcp チャートは、名前空間付きテンプレート online-activation-workflow-template を各環境の名前空間に追加し、Secret online-activation-user-token にログイントークンを追加します。
Argo Workflows UI から環境をアクティブ化するには、
-
環境の名前空間内のシークレットを読み取ることができる認証情報を使用して、ログイントークンを読み取ります。
echo "Bearer $(kubectl --namespace liferay get secret online-activation-user-token \ --output jsonpath='{.data.token}' | base64 --decode)" -
Argo Workflowsサーバーのポートを転送してください。 CNE AWS Ready および CNE GCP Ready では、サーバーは
argo-workflows-serverであり、argo-workflows-system名前空間に属します。kubectl port-forward --namespace argo-workflows-system svc/argo-workflows-server 2746:2746Kubernetes Readyでは、Argo Workflowsサーバーの名前空間とサービス名を使用してください。
-
http://localhost:2746を開きます。 Kubernetes Ready では、Argo Workflows サーバーが TLS を使用している場合は、httpsを使用します。 -
ステップ 1 の出力全体 (
Bearerを含む) をクライアント認証ボックスに貼り付け、その下の Login ボタンをクリックします。 -
ワークフローテンプレートを開き、環境の名前空間を名前空間フィルターに入力します。
-
online-activation-workflow-templateを選択し、 送信 をクリックします。 -
アクティベーションコードパラメーターにアクティベーションコードを入力し、 送信 をクリックします。ワークフローのすべてのステップが成功すると、環境がアクティブ化されます。
代わりにコマンドラインから送信するには、 argo CLI を使用します。 ARGO_SERVER 環境変数を設定せずに実行すると、ログイン トークンではなく、 kubeconfig 認証情報が使用されます。これらの認証情報は、名前空間内でワークフローを作成し、名前空間テンプレートおよびそれが呼び出すクラスタテンプレートを読み取ることができるものでなければなりません。名前空間付きテンプレートを送信してください。
argo submit \
--from workflowtemplate/online-activation-workflow-template \
--namespace liferay \
-p activation-code="[activation code]" \
--watch
バージョン3.0.0以前のチャート
liferay-default 3.0.0 より前に、クラスター テンプレートを argo CLI を使用して送信します。クラスター管理者資格情報など、環境の名前空間で ClusterWorkflowTemplate リソースを読み取り、ワークフローを作成できる資格情報を使用します。 LiferayEnvironmentの名前を liferay-environment-name パラメータに渡します。
argo submit \
--from clusterworkflowtemplate/online-activation-cluster-workflow-template \
--namespace liferay \
-p activation-code="[activation code]" \
-p liferay-environment-name="liferay-default" \
--watch
ノード制限
ライセンスのノード制限とは、環境内で実行できるLiferay DXPポッドの最大数を指し、Kubernetesノードの数ではありません。 kubectl get lenv は MAX 列に表示されます。
自動スケーリングが無効になっていて、StatefulSet を手動でスケーリングした場合、有効なライセンスを確認する次のハートビートで、オペレーターはレプリカ数をリセットします。カウントを liferay-default チャートの replicaCountにリセットするか、 replicaCount が大きい場合はノード制限にリセットします。環境にライセンスが付与されると、Kubernetes は StatefulSet を制限を超えて拡張するような変更を拒否します。
replicaCount を制限値以下に保ってください。 autoscaling.enabledがtrue の場合、オートスケーラーの最大値を制限値以下に保つようにしてください。具体的には、autoscaling.typeがhpa の場合はautoscaling.hpa.maxReplicas を、keda の場合はautoscaling.keda.maxReplicaCountを上限とします。 Kubernetes Ready はデフォルトで hpa を使用し、CNE AWS Ready と CNE GCP Ready は keda を使用します。両方の最大値はデフォルトで 100 になります。
オペレーター構成リファレンス
これらの liferay-dxp-operator チャート値は、管理する環境ごとにオペレーターのタイミングを調整します。 Kubernetes Ready では、 --set を使用して、オペレーターのインストール コマンドにそれらを追加します。 CNE AWS Ready および CNE GCP Ready では、 liferay-dxp-operator キーの下に設定します。 liferay/system/infrastructure-provider.yaml。
| チャート値 | デフォルト | コントロール |
|---|---|---|
heartbeatInterval | 10m | オペレーターが各環境のライセンスをどのくらいの頻度で確認するか |
gracePeriod | 168h | プロビジョニングサービスが到達不能な状態がどれくらい続くと、オペレーターがステートフルセットをレプリカ1つにスケールダウンするか |
retry.initialDelay | 30s | 通話失敗後の最初の再試行遅延 |
retry.maxDelay | 30m | 最長の再試行遅延時間 |
downloadPollInterval | 15s | オペレーターが進行中のアドオンのダウンロードをポーリングする頻度 |