CNE AWS Ready: Configuring the Cloud Native Experience
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

CNE AWS Ready: オーバーレイを使用したOSGiモジュールまたはクライアント拡張機能の追加

Cloud Native Experience (CNE) ツールキットは、オーバーレイを使用して標準的な Liferay デプロイメントをカスタマイズします。 プロジェクト内のすべての環境で共有されるプロジェクトレベルのS3バケットにカスタムファイル(OSGiモジュール、クライアント拡張機能、構成ファイル、サイト初期化ファイルなど)をアップロードし、各環境がPodの起動時にそれらを適用するように設定します。

このアプローチにより、カスタムのLiferayビルドが不要になり、標準コンテナの上に変更が適用され、GitOpsを通じて完全に管理されます。

重要

CNEオーバーレイバケットは、各環境ごとではなく、プロジェクトごとにスコープが設定されます。 GitOpsリポジトリに project.yaml ファイルがない場合、または環境の liferay.yaml オーバーレイブロックがまだ bucketName 値を設定している場合は、古い環境ごとのモデルを使用しています。 古い環境ごとのバケットは自動的に移行されないため、古いモデル用に構築されたオーバーレイ構成は、移行が完了するまで機能しなくなります。 オーバーレイバケットのプロビジョニング を参照してください。

CNEは、オーバーレイを介してOSGiモジュールまたはクライアント拡張機能をデプロイするための2つの方法をサポートしています。

  1. 手動 オーバーレイ: 場合によっては、モジュールを AWS のオーバーレイ バケットに直接アップロードし、GitOps 構成を手動で更新する必要があります。 このワークフローは、テスト、デバッグ、または単発のデプロイメントに役立ちます。

  2. 自動化された オーバーレイ: ブートストラップ プロセスと GitOps 同期により、リポジトリに変更がコミットされるたびにモジュールのデプロイが自動的に処理されます。 これは、ほとんどの運用環境において推奨されるアプローチです。

オーバーレイバケットのプロビジョニング

どちらのワークフローも、プロジェクトレベルのオーバーレイバケットに依存しています。 どちらのワークフローを実行する前にも、一度プロビジョニングを行ってください。

環境ごとのモデルから移行するには、4 つの変更が必要です。 project.yamlでバケットを有効にし、 base/infrastructure.yamlで環境アクセスを付与し、各環境の liferay.yamlのオーバーレイ ブロックから bucketName を削除し、アーティファクトを新しいバケットに再アップロードします。 以下の手順1と手順2では、最初の2つの変更について説明します。

  1. オーバーレイバケットを有効にします。

    liferay/projects/<projectId>/project.yamlで、 overlay.enabled を true に設定します。

    オーバーレイ:
      有効: true
    

    この設定のデフォルト値は false です。 project.yamlでこの設定を `true`に設定すると、S3 バケット、バケットのライフサイクル設定、パブリックアクセスブロック、バージョン管理、アップロード専用の IAM ポリシー、CI アップローダー用の IAM ユーザー、ユーザーポリシーの添付、および Kubernetes シークレットに保存されたアクセスキーがプロビジョニングされます。

    注記

    アップロード専用の IAM ポリシーでは、 s3:DeleteObject および s3:DeleteObjectVersionが明示的に拒否されるため、CI のアップロードでは、バケットから既存のオーバーレイ コンテンツを削除できません。

  2. 環境にバケットへのアクセス権を付与します。

    liferay/projects/<projectId>/base/infrastructure.yamlで、 overlay.enabled を true に設定します。

    オーバーレイ:
      有効: true
    

    この設定もデフォルトで false になります。 base/infrastructure.yaml はプロジェクト内のすべての環境に適用されるため、ここで設定すると、すべての環境が一度にバケットへの読み取り専用アクセスを許可されます。 あるプロジェクトのPodは、別のプロジェクトのオーバーレイバケットにアクセスできません。 個々の環境が兄弟環境とは異なるオーバーレイアクセスを持つ必要がある場合(たとえば、オプトアウトする場合)、その環境自身の infrastructure.yaml の値を上書きします。

    注記

    この設定は project.yamlの設定と同じ名前ですが、2 つの設定は独立しています。 project.yaml の値はバケットをプロビジョニングし、 base/infrastructure.yaml の値は環境にバケットへのアクセスを許可します。 両方設定してください。

  3. 決意を固め、変革を推進しよう。

    Argo CD は、プロジェクトのリソース アプリケーション (名前空間 liferay-<projectId>-resources、例えば liferay-acme-resources) を同期し、バケットとその IAM リソースをプロビジョニングします。 バケット名は自動的に生成されるため、自分で設定する必要はありません。

手動オーバーレイワークフロー(AWS UI)

  1. オーバーレイバケットを探してください。

    AWSコンソールで、プロジェクトに関連付けられているS3バケットを検索してください。 プロジェクト内のすべての環境がこのバケットを共有します。 オーバーレイ バケット名には、 -overlay- に続いてプロジェクト ID と生成されたサフィックスが含まれます。たとえば、 my-deployment-overlay-acme-2225eb のようになります。

  2. モジュールまたは拡張機能をアップロードしてください。

    バケット内にオーバーレイリソースを保存するための最上位フォルダを作成し、そこにOSGiモジュール、クライアント拡張機能、または設定ファイルをアップロードしてください。

  3. GitOpsでオーバーレイを有効にする。

    環境固有の liferay.yaml (liferay/projects/<projectId>/environments/<environmentId>/liferay.yaml) で、オーバーレイ セクションを設定してリソースを参照します。

    liferay-default:
       overlay:
          copy:
             - from: overlay_test_1/osgi/client-extensions/*
               into: osgi/client-extensions
          enabled: true
    
  4. 変更をコミットしてプッシュする。

    Argo CDは環境を同期し、オーバーレイリソースをLiferayデプロイメントに適用します。

自動化されたオーバーレイワークフロー(GitOpsとCI)

  1. オーバーレイバケットを探してください。

    プロジェクトのリソース名前空間に切り替えます。

    kubens liferay-<projectId>-リソース
    

    オーバーレイバケットリソースを一覧表示して、S3バケット名を見つけます。

    kubectl get buckets.s3.aws.m.upbound.io --selector component=overlay
    

    EXTERNAL-NAME 列の値をコピーします。 これは、プロジェクトのオーバーレイリソースを保存するために使用されるS3バケット名です。

  2. CIアップローダーの認証情報を取得します。

    プロジェクトのリソース名前空間(liferay-<projectId>-resources)にとどまり、CI アップローダー ユーザーを特定します。

    kubectl get users.iam.aws.m.upbound.io --selector aws.liferay.com/username
    

    CIアップローダーのアクセスキーは、バケット名と同じ名前のシークレットに保存されます。 前のステップで取得した EXTERNAL-NAME の値を使用します。

    OVERLAY_BUCKET_NAME=my-deployment-overlay-acme-2225eb
    
    AWS_ACCESS_KEY_ID=$(kubectl get secret "${OVERLAY_BUCKET_NAME}-ci-uploader-access-key" -o jsonpath='{.data.username}' | base64 -d)
    AWS_ACCESS_KEY_SECRET=$(kubectl get secret "${OVERLAY_BUCKET_NAME}-ci-uploader-access-key" -o jsonpath='{.data.password}' | base64 -d)
    
  3. カスタマイズを作成してアップロードする。

    以下のGitHub Actionsシークレットを設定してください。

    • AWSリージョン
    • AWS_S3_バケット名
    • AWS_ACCESS_KEY_ID
    • AWS_ACCESS_KEY_SECRET

    ワークフローの例:

    名前: CNE Workspace Build
    
    on: [push]
    
    jobs:
       build:
          runs-on: ubuntu-latest
    
          steps:
             - uses: actions/checkout@v2
             - name: Set up JDK 11
               uses: actions/setup-java@v2
               with:
                  java-version: '11'
                  distribution: 'adopt'
             - name: Build with Gradle
               run: cd workspace/ && ./gradlew build deploy
             - name: Configure AWS Credentials
               uses: aws-actions/configure-aws-credentials@v1
               with:
                  aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
                  aws-secret-access-key: ${{ secrets.AWS_ACCESS_KEY_SECRET }}
                  aws-region: ${{ secrets.AWS_REGION }}
             - name: カスタマイズを S3 バケットにアップロードします
               run: |
                  aws s3 cp \
                     --recursive \
                     --region ${{ secrets.AWS_REGION }} \
                     workspace/bundles/osgi/ \
                     s3://${{ secrets.AWS_S3_BUCKET_NAME }}/workspace_build_${{ github.run_number }}/osgi/
    
  4. GitOpsでオーバーレイを有効にする。

    環境固有の liferay.yaml (liferay/projects/<projectId>/environments/<environmentId>/liferay.yaml) で、アップロードされたアーティファクトを使用するようにオーバーレイを設定します。

    liferay-default:
       overlay:
          copy:
             - from: "workspace_build_<build-number>/osgi/client-extensions/*"
               into: osgi/client-extensions
          enabled: true
    
    ヒント

    YAML の解析の問題を避けるため、パス から を常に引用符で囲みます。たとえば、 workspace_build_1/osgi/client-extensions/*のように記述します。

    変更内容をコミットして、GitOpsリポジトリにプッシュしてください。 Argo CDは環境を同期し、オーバーレイ構成を適用します。

    注記

    各ビルドは、以前の成果物を上書きしないように、固有のフォルダを使用します。 オーバーレイは、initコンテナを介してPodの起動時に適用されます。 GitOpsを通じてオーバーレイ構成を管理する。

  5. オーバーレイの展開状況を確認してください。

    Liferayポッド内のinitコンテナログを確認してください。

    kubectl logs liferay-default-0 -c liferay-overlay
    

    初期化コンテナは各ステップを JSON 行としてログに記録し、 rclone を --use-json-logとともに呼び出します。そのため、コピー操作自体もこの 2 行の間に JSON でログに記録されます。 出力例:

    {"メッセージ": "\":s3,env_auth=true:my-deployment-overlay-acme-2225eb/workspace_build_1/osgi/client-extensions\" から \"/temp/osgi/client-extensions\"へコピーしています。"、 "スクリプト": "overlay-sync.sh"、 "重要度": "INFO"、 "タイムスタンプ": "2026-01-01T00:00:00Z"}
    ...
    {"メッセージ": "コピーが正常に完了しました。"、 "スクリプト": "overlay-sync.sh"、 "重要度": "INFO"、 "タイムスタンプ": "2026-01-01T00:00:01Z"}
    
    注記

    オーバーレイファイルは、ポッドの起動時に適用されます。 新しいオーバーレイコンテンツを適用するには、ポッドを再起動してください。