皆さま、こんにちは。神村です。
前回はローカル PC(Windows 10 Pro)にインストールした Docker Desktop 上で、Sitecore のコンテナを起動、開発するための流れをご紹介しました。
コンテナを利用すると、とても簡単に Sitecore の開発が進められる、ということをわかっていただけたと思います。
今回は、開発したコンテナを、Azure(AKS:Azure Kubernetes Service)へデプロイ(反映)する流れをご紹介させていただきます。
前回より少し難しくなりますが、実際にお客様がご利用になられる Sitecore のサーバー環境が、コンテナの場合だとこんな流れで構築されているんだな、というのをお伝えできればと思っています。
前回までの記事をもしまだ読まれていない方は、事前にご一読ください。
Sitecore をコンテナで導入するメリット
Sitecoreを Docker で構築する
まずは Azure サブスクリプションへコンテナを展開するにあたって使用するツールをローカル PC にインストールします。
実際に構築するにあたって、Chocolatey や Terraform は必須ではありませんが、今回の手順では構築を楽に行うために使用しています。
▼Chocolatey
https://chocolatey.org/
Windows 用のパッケージ管理ソフトウェアです。
様々なツールをコマンドでインストールすることができます。
▼Azure CLI
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli
Azure リソースを管理するためのコマンド群です。
Chocolatey を使用すると、コマンドでインストールすることができます。
▼Terraform
https://www.terraform.io/
インフラ構築や設定作業をコード化し、自動構築を行うための IaC ツールです。
このツールも Chocolatey を使用すると、コマンドでインストールすることができます。
▼kubectl
https://kubernetes.io/ja/docs/reference/kubectl/overview/
Kubernetes クラスタを管理するためのコマンド群です。
このツールも Chocolatey を使用すると、コマンドでインストールすることができます。
▼Helm
https://helm.sh/ja/
Kubernetes クラスタへのアプリケーションのデプロイを自動実行するためのツールです。
このツールも Chocolatey を使用すると、コマンドでインストールすることができます。
ツールをインストールしたら、Sitecore のコンテナを Azure 上で稼働させるために必要な Azure リソースを作成します。Azure CLIや Azure ポータルから作成ができますが、今回は IaC ツール(Terraform)を使って Azure リソースの展開を行います。
ローカル PC で、Terraform が使用する IaC ファイル(AKSや SQL Database、Redis などの構成ファイル)を準備したら、Terraform の init / apply コマンドを実行することで Azure リソースを作成することができます。
コマンドの実行例は省きますが、以下が、必要なリソースを作成したあとの Azure ポータル画面です。
Azure リソースの準備が整ったら、kubectl コマンドを使って AKS(Azure Kubernetes Service)へコンテナの展開を行います。
なお、今回はすでに展開する Sitecore のコンテナイメージが ACR(Azure Container Registry)へ格納されている状態で行います。
また、展開に必要な設定ファイル(マニフェスト)については、サイトコア社が管理する GitHub (※1)で公開されています。今回の記事ではマニフェストのダウンロードや編集に関する詳細な説明は割愛しますが、ダウンロードしたマニフェストに対して以下のような編集を行う必要があります。
上記の編集を行ったマニフェストを用意したら、kubectl コマンドを実行して AKS へコンテナを展開することができます。
今回の記事では Sitecore が管理している GitHub で公開されている Kubernetes マニフェストのうち、Sitecore 10.1 xp1をデプロイしています。以降のコマンドは、ダウンロードした Sitecore 10.1 xp1のディレクトリ(※2)で実行していきます。
※1. https://github.com/Sitecore/container-deployment/tree/master/k8s
※2. https://github.com/Sitecore/container-deployment/tree/master/k8s/sxp/10.1/ltsc2019/xp1
$subscriptionId = "" # Azure サブスクリプションの ID を指定 $resourceGroupName = "" # 展開した リソース グループ名を指定 $aksClusterName = "" # 展開した AKS クラスタ名を指定 az login az account set --subscription $subscriptionId az aks get-credentials ` --resource-group $resourceGroupName ` --name $aksClusterName ` --overwrite-existing
kubectl apply -k ./secrets/
kubectl apply -k ./external/
Solrができたことが確認できます。
※本番運用環境ではコンテナではなく SearchStax 等の外部サービスを利用する必要があります
kubectl apply -k ./init/
データ初期化ジョブが完了しました。
Database が作成されていることも確認できます。
kubectl apply -f ./volumes/azurefile/sumbit-queue.yaml
submit-queueが作成されました。
kubectl apply -k ./
30分ほど待つと、Sitecore の各ロールが展開されていることが確認できます。
# 下記のサンプルのように Helm に NGINX Ingress Controller を追加します。 helm repo add stable https://kubernetes.github.io/ingress-nginx helm repo update # 下記のサンプルのように Helm を使用して NGINX Ingress Controller をデプロイします。 helm install nginx-ingress stable/ingress-nginx ` --set controller.replicaCount=2 ` --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux ` --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux ` --set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=linux ` --set-string controller.config.proxy-body-size=10m kubectl wait --for=condition=Ready Pods --selector app.kubernetes.io/instance=nginx-ingress ` --field-selector metadata.namespace=sitecore-xp --all-namespaces # デプロイしたいトポロジーのルートフォルダーから下記のコマンドを実行します。 kubectl apply -k ./ingress-nginx/
IngressController が作成されました。
上記が完了したら、IngressController のパブリックIPをローカル PC の hosts ファイルへ登録(※)します。
※本番運用環境では DNS に登録する形になります
ここまでの手順を完了すると、Sitecore の画面へアクセスできるようになります。
設定したドメインへアクセスし、ログインができるか確認します。
ログインして管理画面を開くことができました。
以上で、AKS へデプロイする流れの説明は終了です。
コンテナを AKS へ展開する流れについていかがでしたでしょうか。
IaC ファイルやマニフェストファイルの記述に関する説明は割愛しましたが、準備が整うと、Azure リソースやコンテナのデプロイが容易に行えるようになります。
コンテナの展開はコンテナイメージから行われるので、すぐに新しいコンテナへ差し替えることも可能ですし、新しく環境を立て直すのも簡単になります。
今回の記事は少し技術的な内容が多かったので、難しく感じる読者の方もいらっしゃったと思いますが、興味を持っていただけましたら是非お問い合わせください。
Sitecore のコンテナに関する連載はこれで最後になります。
ここまで読んでくださった皆様、ありがとうございました!
なお、今回紹介した手順は、以下のサイトコア社のマニュアルを参考にしています。
Installation Guide for Production Environment with Kubernetes
https://dev.sitecore.net/Downloads/Sitecore_Experience_Platform/101/Sitecore_Experience_Platform_101.aspx
関連ブログ記事
Sitecore をコンテナで導入するメリット
|
関連ページ導入からデジタルマーケティングのコンサルティングまでご支援 - Sitecore on Cloud |