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

CNE AWS Ready: シークレットとライセンスの管理

Liferay Cloud Native Experience (CNE) は、外部のシークレットプロバイダーから機密値を取得します。 この方法により、認証情報、証明書、ライセンスがGitOpsリポジトリに保存されることを防ぎます。

External Secrets Operatorは、設定済みのVaultからKubernetesにシークレットを同期し、CNEはデプロイ時にそれらを利用します。

シークレット保管庫の設定

CNE AWS Readyは、複数のシークレットプロバイダーをサポートしています。 デフォルトでは、このプラットフォームはAWS Secrets Managerと統合されています。

AWS Secrets Manager(デフォルト)

AWS Secrets Managerは、デフォルトのシークレット保管庫です。 Cloud Native のブートストラップ プロセスは、Kubernetes ワークロードがシークレットを取得できるように、サービス アカウント (IRSA) に必要な IAM ロールを構成します。

デフォルトのIAMポリシーでは、以下のシークレットパスへのアクセスが許可されます。

{
   "Statement": [
      {
         "Action": [
            "secretsmanager:DescribeSecret",
            "secretsmanager:GetSecretValue"
         ],
         "Effect": "Allow",
         "Resource": [
            "arn:aws:secretsmanager:<region>:<accountid>:secret:liferay/certificates/*",
            "arn:aws:secretsmanager:<region>:<accountid>:secret:liferay/licenses/*",
            "arn:aws:secretsmanager:<region>:<accountid>:secret:liferay/credentials/gitops*"
         ]
      }
   ],
   "Version": "2012-10-17"
}

これらのパスにより、CNEはデプロイ中にTLS証明書、ライセンス、およびGitOps認証情報を取得できます。

カスタムシークレット保管庫の使用

HashiCorp Vault、Azure Key Vault、Google Secret Managerなどの代替シークレットプロバイダーを設定することもできます。

カスタムプロバイダーを使用するには:

  1. 保管庫から秘密情報を読み取る権限を持つサービスアカウントを作成してください。

  2. Terraform の設定ファイル (gitops/resources/terraform.tfvars) で external_secret_store_provider_hcl 変数を定義します。

HashiCorp Vaultの設定例:

external_secret_store_provider_hcl={
   vault={
      auth={
         tokenSecretRef={
            key="token"
            name="vault-token"
         }
      }
      path="secret"
      server="http://my.vault.server:8200"
      version="v2"
   }
}

追加の設定オプションについては、 外部シークレット演算子 を参照してください。

GitOpsリポジトリ認証情報

CNEは、デプロイメント構成を保存するGitOpsリポジトリにアクセスするための認証情報を必要とします。

これらの認証情報は、設定済みのシークレット保管庫に保存してください。 デフォルトのシークレット名は liferay/credentials/gitops です。

カスタムシークレット名を使用するには、config.jsongit_repo_configセクションのcredentials_secret_nameフィールドを更新します。

デフォルトではなく company/credentials/gitops に秘密情報を保存する場合、設定は次のようになります。

{
   "provider": "aws",
   "variables": {
      "deployment_name": "deployment-name",
      "liferay_git_repo_url": "https://github.com/your-org/your-gitops-repo",
      "liferay_helm_chart_version": "0.1.90",
      "region": "us-east-2",
      "liferay_git_repo_config": {
         "auth": {
            "credentials_secret_name": "company/credentials/gitops"
         },
         "source_paths": {},
         "target": {}
      }
   }
}

設定で指定したAWSリージョンと同じリージョンにシークレットが存在することを確認してください。

秘密鍵の構造は認証方法によって異なります。

個人アクセストークン(HTTPS)

以下のキーと値のペアを含むシークレットを作成してください。

キー説明
git_machine_user_idGitユーザー名またはマシンアカウント名
git_access_token個人アクセストークン(PAT)

例:

秘密の名前liferay/認証情報/gitops
キー
git_machine_user_idユーザー
git_access_tokenghp_abc…WxYZ

SSH認証

このキーと値のペアを含むシークレットを作成します。

キー説明
git_ssh_private_keyBase64エンコードされたSSH秘密鍵

例:

秘密の名前liferay/認証情報/gitops
キー
git_ssh_private_keyLS0t…LSo=

TLS証明書

TLS証明書をシークレット保管庫に保存する際は、以下の名前プレフィックスを使用してください。

liferay/certificates/

各証明書の秘密情報には以下が含まれている必要があります。

キー説明
tls.crtBase64エンコードされた証明書
tls.keyBase64エンコードされた秘密鍵

例:

秘密の名前liferay/certificates/mydomain
キー
tls.crtLS0t…LSo=
tls.keyLS0t…LQo=

証明書ファイルをエンコードする際、行折り返しを無効にする:

base64 -w 0 domain.cert.pem
base64 -w 0 private.key.pem

Liferayライセンス

先に進む前に、Liferay .xml のアクティベーションキーがあることを確認してください。 詳細については、 Liferay DXP のアクティベーション を参照してください。

CNEは、デプロイ時に設定済みのシークレットボールトからLiferayライセンスを取得します。

ライセンスはプレフィックス liferay/licenses/ を使用して保存します。

各秘密には以下が含まれていなければならない。

キー説明
license.xmlBase64エンコードされたライセンスファイル

例:

秘密の名前liferay/licenses/mylicense
キー
license.xmlPD94…Pg==

ライセンスファイルを改行なしでエンコードします。

base64 -w 0 license.xml

Liferayライセンスの設定

ライセンスを保存した後、CNEを設定して、Liferayデプロイメントでライセンスを取得してマウントします。

外部シークレット参照の設定

ライセンス参照を infrastructure.yaml に追加します。

license:
   externalSecretName: "liferay/licenses/mylicense"
   targetSecretName: "liferay-license"
  • externalSecretName は、保管庫内のシークレットを識別します。
  • targetSecretName は、クラスターで作成された Kubernetes シークレットを定義します。

Liferayがライセンスを使用するように設定する

環境の liferay.yaml ファイルを更新して、ライセンス シークレットを Liferay コンテナにマウントします。 ライセンスを提供する際は、Liferayがマウントされたライセンスを使用するように、デフォルトの試用版ライセンスを無効にしてください。

customEnv:
   x-license:
      - name: LIFERAY_DISABLE_TRIAL_LICENSE
         value: "true"

customVolumeMounts:
   x-license:
      - mountPath: /etc/liferay/mount/files/deploy
         name: license

customVolumes:
   x-license:
      - name: license
         secret:
            secretName: liferay-license
            items:
               - key: license.xml
                  path: license.xml

secretName、はinfrastructure.yamlで定義されているtargetSecretNameと一致しなければならない。

これらの変更をコミットした後、外部シークレットオペレーターはライセンスを保管庫から同期し、デプロイ中にLiferayコンテナにマウントします。