1. Managed Cloudの構成

チュートリアル : JSSモジュールの追加

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

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

Sitecore JavaScript SDK (JSS) は、最新のJavaScriptフレームワークを使用してSitecoreアプリを実装できるnpmパッケージのセットです。JSSモジュールを追加するには、特定のDockerイメージを作成してAzure Container Registry (ACR) にプッシュし、Mssqlコンテナーを実行する前にアプリケーション リポジトリで変更する必要があります。

このチュートリアルでは、次の方法について説明します。

  • Dockerイメージを準備する

  • 画像をACRにプッシュする

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

  • mssql-init-jssコンテナーを実行します。

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

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

Dockerイメージを準備する

カスタムJSSモジュールの作成方法については、「 Sitecoreモジュールの追加 」トピックを参照してください。

JSSアプリを操作できるようにするには、次のイメージを作成する必要があります。

  • cm-jss

  • cd-jss

  • mssql_init_jss

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

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

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

これで、JSS固有の命名イメージをアプリケーション リポジトリに追加できます。

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

  • アプリケーションリポジトリconfig/docker-imagesに移動し、次のようにdocker-images.jsonを編集します。

    • cm値をcm-jss画像参照URLに置き換えます。

    • cd値をcd-jss画像参照URLに置き換えます。

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

    例えば:

    {
        "sitecore":{
            "cm": "<newly built cm-jss image reference>",
            "cd": "<newly built cd-jss image reference>",
            "id": "scr.sitecore.com/sxp/sitecore-xml-id:10.1.0-ltsc2019",
            "mssql_init_jss": "<newly built mssql_init_jss image reference>",
        };
    ...

イングレスコントローラーのヘッダーのアンダースコアオプションを有効にします

Nginxイングレス コントローラーは、デフォルトでアンダースコアを含むリクエスト ヘッダーをドロップします。

JSSモジュールでは、アンダースコアを含む一部のヘッダーを使用します。したがって、この機能をサポートするには、underscores in headersオプションを有効にする必要があります。

underscores in headersオプションを有効にするには:

  1. roles/ に移動し、フォルダ構造roles/nginx-underscores/tasksを作成します。

  2. roles/nginx-underscores/tasksフォルダーに、次のコードを含むmain.yamlファイルを追加します。

    ---   
    - name: Customize
    nginx - enable underscores-in-headers
      k8s:
        definition:
          apiVersion: v1
          kind: ConfigMap
          metadata:
            name: ingress-nginx-controller
            namespace: nginx
          data:
            enable-underscores-in-headers: 'true'
        validate: 
          fail_on_error: yes
  3. リポジトリのルートディレクトリで、main.yamlファイルを開きます。

  4. 新しいnginx-アンダースコアロールを追加するには、セクションの後にあります。

          include_role:
            name: ingress-configuration

    以下を挿入します。

          include_role:
            name: nginx-underscores
  5. アプリケーション パイプラインを実行します。

ディザスター リカバリーなしでMssql-init-jssコンテナーを実行する

Mssql-init-jssコンテナを実行するには:

  1. roles\sitecore-{topology}\templates\ に移動し、mssql-init-spe-jssジョブ ファイルをmssql-init-jss.yamlという名前で追加します。例えば:

    ---
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: jss-mssql-init
    spec:
      template:
        spec:
          nodeSelector:
            kubernetes.io/os: windows
          imagePullSecrets:
            - name: sitecore-docker-registry
          containers:
          - name: mssql-init
            image: "{{ docker_images.sitecore.mssql_init_jss }}"
            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: jss
          restartPolicy: Never
      backoffLimit: 5
  2. mssql-init-jssジョブを実行するAnsibleタスクを追加するには、roles\sitecore-xm\tasks\init.yamlに移動し、ファイルの最後に次のスクリプトを追加します。

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

ディザスター リカバリーを使用してMssql-init-jssコンテナーを実行する

Mssql-init-jssコンテナを実行するには:

  1. roles\sitecore-{topology}\templates\ に移動し、mssql-init-spe-jssジョブ ファイルをmssql-init-jss.yamlという名前で追加します。例えば:

    ---
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: jss-mssql-init
    spec:
      template:
        spec:
          nodeSelector:
            kubernetes.io/os: windows
          imagePullSecrets:
            - name: sitecore-docker-registry
          containers:
          - name: mssql-init
            image: "{{ docker_images.sitecore.mssql_init_jss }}"
            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: jss
          restartPolicy: Never
      backoffLimit: 5
  2. カスタムinit.yamlファイル( custom-init.yamlなど)を作成し、/roles/sitecore-{topology}/tasksフォルダーの下に配置します。

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

    - name: Execute jss mssql-init jobs
      k8s:
        apply: true
        namespace: "{{ solution_id }}"
        state: present
        definition: "{{ lookup('template', 'mssql-init-jss.yaml') }}"
    
    - name: 'Wait - JSS Mssql-init job'
      k8s_info:
        kind: Job
        name: jss-mssql-init
        namespace: "{{ solution_id }}"
      register: jss_mssql_init_result
      until: (jss_mssql_init_result.resources[0].status.conditions[0].type | default('')) == 'Complete'
      retries: 60
      delay: 60
    
    - name: Get all JSS Mssql completed pods
      k8s_info:
        kind: Pod
        namespace: "{{ solution_id }}"
        label_selectors:
          - job-name = jss-mssql-init
      no_log: true
      register: jss_mssql_pod_list
    
    - name: Remove JSS Mssql job's pods
      k8s:
        kind: Pod
        name: "{{ item.metadata.name }}"
        namespace: "{{ solution_id }}"
        state: absent
      no_log: true
      with_items: "{{ jss_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 mail.yaml file, call the init.yaml file.
  5. アプリケーション パイプラインを実行します。

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

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