1. Managed Cloudの構成

チュートリアル: Sitecore Publishing Serviceモジュールの追加

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Publishing Service (SPS) モジュールは、オプトイン パブリッシング サービスとの統合を提供し、大規模なSitecoreセットアップでの高パフォーマンスのパブリッシングをサポートします。SPSをクラウドベースのソリューションのコンテナーとしてデプロイするには、モジュールとサービスの両方をSitecoreソリューションの上にデプロイする必要があります。

このチュートリアルでは、既にデプロイされているマネージド クラウド コンテナー環境の上にSPSモジュールをデプロイする方法について説明します。次の方法について説明します。

  • Dockerイメージを準備する

  • イメージをAzure Container Registry (ACR) にプッシュする

  • Kubernetes仕様ファイルのダウンロード

  • 基本のSPS Kubernetes設定ファイルをコピーします

  • SPS設定オーバーレイの定義

  • アプリケーションリポジトリ内のイメージを変更する

  • mssql_init_spsコンテナを実行します。

    • ディザスタリカバリなし。

    • ディザスタリカバリで。

  • SPSコンポーネントの有効化

  • アプリケーションの変更を適用する

Dockerイメージを準備する

Dockerイメージを準備するには、次のようにします。

  • Sitecore CM、CD、MSSQL-INITカスタム イメージを準備して、SPSアセット イメージのすべてのリソース (ファイル、データベースなど) を含める必要があります。アセット画像は次のとおりです。

    • sxp/modules/sitecore-sps-integration-xm1-assets

    • sxp/modules/sitecore-sps-integration-xp1-assets

デプロイするトポロジのアセットイメージを使用する必要があります。アセット イメージの適用方法の詳細については、「 Sitecoreモジュールの追加 」および 「Sitecoreモジュール リファレンス」を参照してください。

対応するカスタム イメージの作成方法については、Sitecore Publishing Serviceコンテナ デプロイメント ガイド のドキュメントを参照してください。

イメージをAzure Container Registry (ACR) にプッシュする

画像をACRにプッシュするには:

  • PowerShellで、docker pushコマンドを実行します。すべてのSPSカスタムイメージ (CM、CD、MSSQL-INIT) を事前にプロビジョニングされたACRにプッシュする必要があります: {infrastructure_id}acr.

Kubernetes仕様ファイルのダウンロード

GitHub Sitecoreコンテナ デプロイメント リポジトリで、次のファイルを見つけてダウンロードします。

  • SitecorePublishingServiceContainerDeployment.10.1.0.{latest available build number}.zip

このファイルには、Sitecore XP 10.1.0のSitecore Publishing Service Kubernetes設定ファイルが含まれています。パッケージをローカルに解凍します。

基本のSPS Kubernetes設定ファイルをコピーします

ベースSPS Kubernetesファイルをコピーするには:

  1. アプリケーションリポジトリフォルダに移動し、spsフォルダを作成します。 roles\sitecore-{topology}\bases\components\sps

  2. 次のsps基本設定ファイルをフォルダにコピーします。

    • \k8s\ltsc2019\sps\patch-sps.yaml

    • \k8s\ltsc2019\sps\sps.yaml

    • \k8s\ltsc2019\overrides\{topology}\patch-cm.sps.yaml

  3. 前に作成したspsフォルダーに、次の内容のkustomization.yamlファイルを作成します。

    apiVersion: kustomize.config.k8s.io/v1alpha1
    kind: Component
    
    resources:
    - sps.yaml
    
    patchesStrategicMerge:
    - patch-sps.yaml
    - patch-cm.sps.yaml

SPS設定オーバーレイの定義

SPSモジュール設定をManaged Cloud Containers環境と統合するには、SPS基本設定の上にオーバーレイレイヤーを定義する必要があります。この抽象化により、将来のリリースのSPSモジュールアップグレード時にSPS基本構成のアップグレードプロセスが簡素化されます。

オーバーレイを定義して実行するには:

  1. 次の内容でroles\sitecore-{topology}\overlays\components\sps\kustomization.yamlファイルを作成します。

    ---
    
    apiVersion: kustomize.config.k8s.io/v1beta1
    
    kind: Kustomization
    
    
    resources:
    
    - sitecore-roles.yaml
    
    
    patchesStrategicMerge:
    
    - sps.yaml
    
  2. 次の内容でroles\sitecore-{topology}\overlays\components\sps\sps.yamlファイルを作成します。

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sps
    spec:
      progressDeadlineSeconds: 3600
      template:
        spec:
          containers:
          - name: sitecore-sps
            image: "{{ docker_images.sitecore.sps }}"
    
  3. オーバーレイを実行するには、roles\sitecore-{topology}\tasks\main.yamlに移動し、Run Kustomization for {topology} タスクの横にタスクを追加します。

    次の例は、XPトポロジを示しています。XMの場合は、sitecore-xpsitecore-xmに置き換える必要があります。

    - name: Copy Sitecore roles configuration into SPS overlay
      template:
        src: roles/sitecore-xp/templates/sitecore-roles.yaml
        dest: roles/sitecore-xp/overlays/components/sps/sitecore-roles.yaml
    
    - name: Run Kustomization for SPS integration
      shell: |
          kustomize build roles/sitecore-xp/overlays/components/sps > roles/sitecore-xp/templates/sitecore-roles.yaml
    

アプリケーションリポジトリ内のイメージを変更する

これで、SPS固有のイメージと2つの新しいプロパティをアプリケーションリポジトリに追加することができます。

アプリケーションリポジトリ内のイメージを変更するには:

  • アプリケーション リポジトリconfig/docker-imagesに移動し、docker-images.jsonファイルを編集して、次の変更を加えます。

    • cmイメージをcm-spsに置き換えます。

    • cdイメージをcd-spsに置き換えます。

    • mssql_init_spsプロパティを追加します。

    • spsプロパティを追加し、Sitecoreバージョンに対応するSPSサービスのパブリック イメージを指定します。

ディザスタリカバリなしでmssql_init_spsコンテナを実行する

mssql-init-spsコンテナを実行するには、次のようにします。

  1. roles\sitecore-{topology}\templates\に移動し、次の内容のmssql-init-sps.yamlジョブ ファイルを追加します。

    apiVersion: batch/v1
    kind: Job
    metadata:
     name: sps-mssql-init
    spec:
      template:
        spec:
          nodeSelector:
            kubernetes.io/os: windows
          imagePullSecrets:
            - name: sitecore-docker-registry
          containers:
          - name: mssql-init-sps
            image: "{{ docker_images.sitecore.mssql_init_sps }}"
            env:
            - name: sitecore_admin_password
              valueFrom:
                secretKeyRef:
                  name: sitecore-admin
                  key: sitecore-adminpassword.txt
            - name: SQL_ADMIN_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-databasepassword.txt
            - name: SQL_ADMIN_LOGIN
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-databaseusername.txt
            - name: SQL_SERVER
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-databaseservername.txt
            - name: SQL_ELASTIC_POOL_NAME
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-database-elastic-pool-name.txt
            - name: DATABASES_TO_DEPLOY
              value: sps
          restartPolicy: Never
      backoffLimit: 5
  2. Ansibleタスクを追加して、mssql-init-spsジョブを実行します。 roles\sitecore-{topology}\tasks\init.yamlに移動し、ファイルの最後に次のスクリプトを追加します。

    - name: Execute SPS mssql-init jobs
      k8s:
        apply: true
        namespace: "{{ solution_id }}"
        state: present
        definition: "{{ lookup('template', 'mssql-init-sps.yaml') }}"
    
    - name: 'Wait - SPS Mssql-init job'
      k8s_info:
        kind: Job
        name: sps-mssql-init
        namespace: "{{ solution_id }}"
      register: sps_mssql_init_result
      un-til: (sps_mssql_init_result.resources[0].status.conditions[0].type | default('')) == 'Complete'
      retries: 60
      delay: 60
    
    - name: Get all SPS Mssql completed pods
      k8s_info:
        kind: Pod
        namespace: "{{ solution_id }}"
        label_selectors:
          - job-name = sps-mssql-init
      no_log: true
      register: sps_mssql_pod_list
    
    - name: Remove SPS Mssql job's pods
      k8s:
        kind: Pod
        name: "{{ item.metadata.name }}"
        namespace: "{{ solution_id }}"
        state: absent
      no_log: true
      with_items: "{{ sps_mssql_pod_list.resources }}"
    
    
  3. アプリケーション パイプラインを実行します。

ディザスタリカバリを使用してmssql_init_spsコンテナを実行する

mssql-init-spsコンテナを実行するには、次のようにします。

  1. roles\sitecore-{topology}\templates\に移動し、次の内容のmssql-init-sps.yamlジョブ ファイルを追加します。

    apiVersion: batch/v1
    kind: Job
    metadata:
     name: sps-mssql-init
    spec:
      template:
        spec:
          nodeSelector:
            kubernetes.io/os: windows
          imagePullSecrets:
            - name: sitecore-docker-registry
          containers:
          - name: mssql-init-sps
            image: "{{ docker_images.sitecore.mssql_init_sps }}"
            env:
            - name: sitecore_admin_password
              valueFrom:
                secretKeyRef:
                  name: sitecore-admin
                  key: sitecore-adminpassword.txt
            - name: SQL_ADMIN_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-databasepassword.txt
            - name: SQL_ADMIN_LOGIN
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-databaseusername.txt
            - name: SQL_SERVER
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-databaseservername.txt
            - name: SQL_ELASTIC_POOL_NAME
              valueFrom:
                secretKeyRef:
                  name: sitecore-database
                  key: sitecore-database-elastic-pool-name.txt
            - name: DATABASES_TO_DEPLOY
              value: sps
          restartPolicy: Never
      backoffLimit: 5
  2. カスタムinit.yamlファイル( custom-init.yamlなど)を作成し、/roles/sitecore-{topology}/tasksフォルダーの下に配置します。

  3. mssql-init-spsジョブをファイルに追加するには、次のコードを追加します。

    - name: Execute SPS mssql-init jobs
      k8s:
        apply: true
        namespace: "{{ solution_id }}"
        state: present
        definition: "{{ lookup('template', 'mssql-init-sps.yaml') }}"
    
    - name: 'Wait - SPS Mssql-init job'
      k8s_info:
        kind: Job
        name: sps-mssql-init
        namespace: "{{ solution_id }}"
      register: sps_mssql_init_result
      un-til: (sps_mssql_init_result.resources[0].status.conditions[0].type | default('')) == 'Complete'
      retries: 60
      delay: 60
    
    - name: Get all SPS Mssql completed pods
      k8s_info:
        kind: Pod
        namespace: "{{ solution_id }}"
        label_selectors:
          - job-name = sps-mssql-init
      no_log: true
      register: sps_mssql_pod_list
    
    - name: Remove SPS Mssql job's pods
      k8s:
        kind: Pod
        name: "{{ item.metadata.name }}"
        namespace: "{{ solution_id }}"
        state: absent
      no_log: true
      with_items: "{{ sps_mssql_pod_list.resources }}"
  4. カスタムinit.yamlファイルを呼び出すには、/roles/sitecore-{topology}/tasks/main.yamlに移動し、ファイルの末尾に次のロールを追加します。

    - name: Execute custom init jobs 
      include_tasks: custom-init.yaml
    In the main.yaml file, call the init.yaml file.
  5. アプリケーション パイプラインを実行します。

  6. カスタムジョブが正常に作成された場合は、Execute custom init jobsロールをコメントアウトします。

SPSコンポーネントの有効化

SPSコンポーネントを有効にするには:

  • アプリケーションリポジトリで、roles\sitecore-{topology}\overlays\platform\kustomization.yamlファイルに移動し、components要素を使用してSPSを有効にし、spsモジュール設定スクリプトフォルダを指定します。

components:
-  ../../bases/components/sps

アプリケーションの変更を適用する

アプリケーションの変更を環境に適用するには:

  • アプリケーション リポジトリへのプル要求を作成して完了します。

この記事を改善するための提案がある場合は、 お知らせください!