1. Managed Cloudの設定

攻略

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

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

HorizonはSitecore Experience Platformの次世代エディターです。Horizonモジュールを追加するには、特定のDockerイメージを作成し、Azureコンテナレジストリ(ACR)に追加し、Mssqlコンテナを実行する前にアプリケーションリポジトリ内のアイテムを変更しなければなりません。また、Front Doorの設定に追加の公開サービス名を追加する必要があります。

このウォークスルーでは、既にデプロイされているManaged Cloudコンテナ環境の上にHorizonモジュールを展開したい場合に適用しなければならないインフラの変更について説明します。

このウォークスルーでは、以下の方法を説明します:

  • ドメイン名を登録する
  • 玄関の配置を拡張する
  • Dockerファイルを準備してください
  • イメージをAzureコンテナレジストリ(ACR)にプッシュしてください。
  • Horizonコンテナ展開パッケージをダウンロードしてください
  • 基本設定ファイルをコピー Horizon Kubernetes
  • Horizon構成オーバーレイを定義する
  • アプリケーションリポジトリ内のイメージを変更する
  • mssql_init_hrz容器を動かしてください
  • Ingressの設定
  • Horizonコンポーネントを有効にする
  • 変更を適用してください

ドメイン名を登録する

Horizonは別の公開サービスであるため、ドメイン名を登録する必要があります。

ドメイン名を登録するには:

  1. DNS名が管理されているポータルにアクセスしてください。

  2. HorizonのためにAzure Front Doorを指す追加のCNAMEレコードを作成します: {infrastructure_id}fdr.azurefd.net,

    infrastructureIdは環境識別子で始まるmccです。

  3. Azureポータルにアクセスし、環境のキーボールト内にシークレットを作成します:

    • 秘密の名前 - sitecore-hrz-host-name
    • 秘密値 - 前のステップで作成したHorizonのホスト名です。
    image1.png

玄関の配置を拡張する

フロントドアの設定には、公共向けのサービス名を追加で拡張する必要があります。

フロントドアの構成を拡張するには:

  1. frontdoor\backend-config.jsonに移動してHorizonバックエンド設定を定義します:

    { "name": "hrz-ingress", "probe_path": "/healthz/live", "backend_list": { "host_header": "hrz.sitecore" }

    }

  2. frontdoor\main.tfに移動し、localsセクションで新しい変数を追加"sitecore_hrz_host_name“:

    sitecore_hrz_host_name = data.azurerm_key_vault_secret.sitecore_hrz_host_name.value

  3. キーボールトからHorizonホスト名を取得するためのdataリソースを定義します:

    data "azurerm_key_vault_secret" "sitecore_hrz_host_name" { name = "sitecore-hrz-host-name" key_vault_id = data.azurerm_key_vault.this.id }

  4. "azurerm_frontdoor"リソースで、追加のrouting_ruleを定義します:

    routing_rule { name = "HTTPS-hrz" accepted_protocols = "Https" patterns_to_match = "/*" frontend_endpoints = "hrz-frontend-endpoint" forwarding_configuration { forwarding_protocol = "MatchRequest" backend_pool_name = "hrz-ingress" } }

  5. "azurerm_frontdoor"リソースでfrontend_endpointを定義します:

    frontend_endpoint { name = "hrz-frontend-endpoint" host_name = local.sitecore_hrz_host_name }

  6. HttpToHttpsをHTTPS-hrzルーティングルールをカバーするように調整してください:

    image7.png
  7. 次のステップを進める前に、プルリクエストでインフラリポジトリに変更を適用する必要があります。

  8. FrontDoorパイプラインを実行して変更を適用し、パイプラインが正常に実行されるまで待ちます。

  9. “azurerm_frontdoor_custom_https_configuration”リソースを定義する:

    resource "azurerm_frontdoor_custom_https_configuration" "hrz_https_configuration" { frontend_endpoint_id = azurerm_frontdoor.this.frontend_endpoints"hrz-frontend-endpoint" custom_https_provisioning_enabled = true

    custom_https_configuration { certificate_source = "AzureKeyVault" azure_key_vault_certificate_secret_name = data.azurerm_key_vault_certificate.sitecore_ingress_certificate.name azure_key_vault_certificate_vault_id = data.azurerm_key_vault.this.id azure_key_vault_certificate_secret_version = data.azurerm_key_vault_certificate.sitecore_ingress_certificate.version }

    depends_on = azurerm_frontdoor.this }

  10. インフラリポジトリへのプルリクエストで環境に変更を適用します。

    予想された結果:

    image9.png
  11. FrontDoorパイプラインを実行して変更を適用し、パイプラインが正常に実行されるまで待ちます。

Dockerファイルを準備してください

Horizonサービスで動作させるためのSitecoreプラットフォーム画像の準備:

  • Horizon統合アセットイメージをSitecoreコンテンツ管理(CM)およびMSSQL-INITイメージの上にインストールします。

対応するカスタムイメージの構築方法については、Sitecore HorizonのKubernetesデプロイメントガイド を参照してください。

イメージをAzureコンテナレジストリ(ACR)にプッシュしてください。

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

Horizonコンテナ展開パッケージをダウンロードしてください

Horizonモジュールを追加する前提条件は、Horizonコンテナデプロイメントパッケージです。

パッケージをダウンロードするには:

  1. dev.sitecore.net では、使用している特定のSitecoreバージョンのページに移動し、「ダウンロードオプション」セクションの**「コンテナデプロイメントパッケージ**」へ行きます。
  2. SitecoreHorizonContainerDeploymentzipパッケージをダウンロードしてローカルフォルダにアンアーカイブしてください。

基本設定ファイルをコピー Horizon Kubernetes

Horizonの設定ファイルをコピーするには:

  1. ローカルでアプリケーションリポジトリフォルダに移動し、次のパスでフォルダを作成します。

    roles\sitecore-{topology}\bases\components\horizon

  2. SitecoreHorizonContainerDeploymentパッケージから、先に作成したフォルダに以下のHorizonベース設定ファイルをコピーしてください:

    • k8s\ltsc2019\horizon\hrz.yaml

    • * k8s\ltsc2019\horizon\ patch-hrz-enable-dam.yaml

    • * k8s\ltsc2019\horizon\ patch-hrz-enable-sxa.yaml

    • overrides\{topology}\patch-cm.yaml

    • overrides\{topology}\patch-id.yaml

      !注*でマークされたファイルは任意です。SXAやDamとの統合を望む場合は必須です。SXA/Dam連携の詳細については Horizonの導入ガイドを参照してください。

    Horizon base files
  3. ステップ1で作成したフォルダで、以下の内容のkustomization.yamlファイルを作成します。

    apiVersion: kustomize.config.k8s.io/v1alpha1 kind: Component

    resources:

    • hrz.yaml

    patchesStrategicMerge:

    • patch-id.yaml
    • patch-cm.yaml

    Uncomment following line to enable DAM integration in the Horizon

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

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

    #- patch-hrz-enable-dam.yaml

    Uncomment following line to enable SXA integration in the Horizon

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

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

    #- patch-hrz-enable-sxa.yaml

Horizon構成オーバーレイを定義する

Horizonモジュール構成をManaged Cloud Containers環境と統合するには、Horizonベースの構成の上にオーバーレイレイヤーを定義する必要があります。この抽象化により、将来のリリースでHorizonモジュールのアップグレードでHorizonベースの構成を置き換えやすくなります。

オーバーレイを定義するために:

  1. 以下の内容でroles\sitecore-{topology}\overlays\components\horizon\cm.yamlファイルを作成します:


    apiVersion: apps/v1 kind: Deployment metadata: name: cm spec: progressDeadlineSeconds: 3600 template: spec: containers:

    • name: sitecore-xp1-cm image: "{{ docker_images.sitecore.cm }}" env:
    • name: SITECORE_HOSTNAME_HRZ valueFrom: secretKeyRef: key: hrz name: sitecore-hostname
    • name: Sitecore_Horizon_ClientHost value: "https://$(SITECORE_HOSTNAME_HRZ)"
  2. 以下の内容でroles\sitecore-{topology}\overlays\components\horizon\id.yamlファイルを作成します:


    apiVersion: apps/v1 kind: Deployment metadata: name: id spec: progressDeadlineSeconds: 3600 template: spec: containers:

    • name: sitecore-xp1-id image: "{{ docker_images.sitecore.id }}" env:
    • name: SITECORE_HOSTNAME_CM valueFrom: secretKeyRef: key: cm name: sitecore-hostname
    • name: SITECORE_HOSTNAME_ID valueFrom: secretKeyRef: key: id name: sitecore-hostname
    • name: SITECORE_HOSTNAME_HRZ valueFrom: secretKeyRef: key: hrz name: sitecore-hostname
    • name: Sitecore_Sitecore__IdentityServer__AccountOptions__PasswordRecoveryUrl value: "https://$(SITECORE_HOSTNAME_CM)/sitecore/login?rc=1"
    • name: Sitecore_Sitecore__IdentityServer__Clients__DefaultClient__AllowedCorsOrigins__AllowedCorsOriginsGroup1 value: "https://$(SITECORE_HOSTNAME_CM)"
    • name: Sitecore_Sitecore__IdentityServer__PublicOrigin value: "https://$(SITECORE_HOSTNAME_ID)"
    • name: SITECORE_ENVIRONMENT_TYPE value: "{{ sitecore_environment_type }}"
    • name: Sitecore_Sitecore__IdentityServer__Clients__DefaultClient__AllowedCorsOrigins__AllowedCorsOriginsGroup2 value: "https://$(SITECORE_HOSTNAME_HRZ)"
  3. 以下の内容でroles\sitecore-{topology}\overlays\components\horizon\hrz.yamlファイルを作成します:


    apiVersion: apps/v1 kind: Deployment metadata: name: hrz spec: progressDeadlineSeconds: 3600 template: spec: containers:

    • name: sitecore-horizon image: "{{ docker_images.sitecore.hrz }}" env:
    • name: SITECORE_HOSTNAME_HRZ valueFrom: secretKeyRef: key: hrz name: sitecore-hostname
    • name: SITECORE_HOSTNAME_CM valueFrom: secretKeyRef: key: cm name: sitecore-hostname
    • name: SITECORE_HOSTNAME_ID valueFrom: secretKeyRef: key: id name: sitecore-hostname
    • name: Sitecore_Sitecore__Authentication__OpenIdConnectOptions__CallbackAuthority value: "https://$(SITECORE_HOSTNAME_HRZ)"
    • name: Sitecore_SitecorePlatform__ContentManagementInternalUrl value: http://cm.{{ solution_id }}.svc.cluster.local
    • name: Sitecore_SitecorePlatform__ContentManagementUrl value: "https://$(SITECORE_HOSTNAME_CM)"
    • name: Sitecore_Sitecore__Authentication__OpenIdConnectOptions__Authority value: "https://$(SITECORE_HOSTNAME_ID)"
    • name: Sitecore_Sitecore__Authentication__BearerAuthenticationOptions__Authority value: "https://$(SITECORE_HOSTNAME_ID)"
  4. 以下の内容でroles\sitecore-{topology}\overlays\components\horizon\kustomization.yamlファイルを作成します:


    apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization

    resources:

    • sitecore-roles.yaml

    patchesStrategicMerge:

    • cm.yaml
    • id.yaml
    • hrz.yaml
  5. オーバーレイを実行するには、roles\sitecore-{topology}\tasks\main.yamlに移動して以下を追加してください:

    • name: Copy Sitecore roles configuration into Horizon overlay template: src: roles/sitecore-xp/templates/sitecore-roles.yaml dest: roles/sitecore-xp/overlays/components/horizon/sitecore-roles.yaml

    • name: Run Kustomization for Horizon integration shell: | kustomize build roles/sitecore-xp/overlays/components/horizon > roles/sitecore-xp/templates/sitecore-roles.yaml

    予想された結果:

    image17.png

!注このコード例はXPトポロジーのためのものです。XMの場合は ‘sitecore-xp’ を ‘sitecore-xm’に置き換えてください。

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

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

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

  • アプリケーションリポジトリで、config/docker-imagesに移動して docker-images.jsonファイルを次のように編集してください:
    • cm画像を、先ほど作成したcm-hrzに置き換えてください。

    • 先ほど作成したmssql_init_hrzプロパティを追加してください。

    • hrzプロパティを追加し、Sitecoreバージョンに対応するサービスのパブリックイメージHorizonを指し示します。この値は、以前ダウンロードしたHorizonアーティファクトから見つけることができます。

      実際の画像名とタグを見つけるにはk8s\ltsc2019\horizon\kustomization.yamlに移動してください。例えば:

      image18.png

mssql_init_hrz容器を動かしてください

mssql-init-horizonコンテナを実行するには:

  1. roles\sitecore-{topology}\templates\に移動し、mssql-init-horizonの求人ファイルを「mssql-init-horizon.yaml」という名前で追加し、以下の内容を記載します。

    apiVersion: batch/v1 kind: Job metadata: name: horizon-mssql-init spec: template: spec: nodeSelector: kubernetes.io/os: windows imagePullSecrets:

    • name: sitecore-docker-registry containers:
    • name: mssql-init-horizon image: "{{ docker_images.sitecore.mssql_init_hrz }}" 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: hrz restartPolicy: Never backoffLimit: 5
  2. mssql-init-horizonジョブを実行するAnsibleタスクを追加するには、roles\sitecore-{topology}\tasks\init.yamlに移動し、ファイルの最後に以下のスクリプトを追加してください。

    • name: Execute horizon mssql-init jobs k8s: apply: true namespace: "{{ solution_id }}"

    state: present definition: "{{ lookup('template', 'mssql-init-horizon.yaml') }}"

    • name: 'Wait - Horizon Mssql-init job' k8s_info: kind: Job name: horizon-mssql-init namespace: "{{ solution_id }}"

    register: horizon_mssql_init_result until: (horizon_mssql_init_result.resources0.status.conditions0.type | default('')) == 'Complete' retries: 60 delay: 60

    • name: Get all Horizon Mssql completed pods k8s_info: kind: Pod namespace: "{{ solution_id }}"

    label_selectors:

    • job-name = horizon-mssql-init no_log: true register: horizon_mssql_pod_list

    • name: Remove Horizon Mssql job's pods k8s: kind: Pod name: "{{ item.metadata.name }}" namespace: "{{ solution_id }}"

    state: absent no_log: true with_items: "{{ horizon_mssql_pod_list.resources }}"

Ingressの設定

次に、Ingress構成を定義し適用し、秘密を定義します。

Ingressの設定:

  1. アプリケーションリポジトリでroles\sitecore-{topology}\templates\ フォルダに移動し、以下の内容のingress-hrz.yamlファイルを作成します。


    kind: Service apiVersion: v1 metadata: name: hrz-external spec: type: ExternalName externalName: hrz.{{ solution_id }}.svc.cluster.local ports:

    • port: 80

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: sitecore-hrz-ingress annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/force-ssl-redirect: "false" nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/proxy-buffering: "on" nginx.ingress.kubernetes.io/proxy-buffers-number: "4" nginx.ingress.kubernetes.io/proxy-buffer-size: "256k" spec: rules:

    • host: "hrz.sitecore" http: paths:
    • path: / backend: serviceName: hrz-external servicePort: 80
  2. 秘密を定義するには、roles\sitecore-{topology}\templates\secrets.yamlに移動してsitecore-hrz-host-name秘密をsitecore-secret-providerで定義します。

  3. sitecore-hostname秘密を広げましょう:

    • key: hrz objectName: sitecore-hrz-host-name

    予想された結果

    image24.png
  4. sitecore-hrz-host-nameをsecret-providerパラメータとして加えます:

    • | objectName: sitecore-hrz-host-name objectType: secret

    予想された結果:

    image26.png
  5. 新しいタスクをroles\sitecore-{topology}\tasks\main.yamlに追加:

    • name: Install external horizon ingress service k8s: apply: true namespace: "nginx" state: present definition: "{{ lookup('template', 'ingress-hrz.yaml') }}" validate: fail_on_error: yes

Horizonコンポーネントを有効にする

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

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

    components:

    • ../../bases/components/horizon

変更を適用してください

Horizonモジュールを追加するために必要なすべての変更が完了したので、その変更を適用する必要があります。

変更を適用するために:

  1. アプリケーションの変更を、プルリクエストでアプリケーションリポジトリに適用します。
  2. HorizonドキュメントのKubernetesデプロイメントガイドに従って、デプロイ後にSolrCloudの検索インデックスを設定してください。
この記事を改善するための提案がある場合は、 お知らせください!