Sitecore on Azure Kubernetes Service - AKS に展開

公開日 :

Sitecore を Azure Kubernetes Service に展開するための準備としてこれまで2回に分けて紹介をしてきました。今回は準備が整っている状況ですので、Sitecore を Azure 上に展開していきます。

これまでの記事は以下の通りです。

まず最初に AKS クラスターを作成していきます。以前にチュートリアルに関して紹介しているので、手順に関しては以下の記事を参考にしてください。

今回は Azure CLI を利用してコマンドラインで作業をしていくため若干手順が異なります。参考となるページは Azure CLI となります。

リソースグループの作成

まず最初にリソースをまとめるためのリソースグループを作成します。コマンドラインでログインをして、利用したいサブスクリプションを指定します。

az login
az account set --subscription "Your Subscription"

続いてリソースグループを作成します。リソースグループおよびデータセンターは利用したい値を記載してください。

az group create --name jpn-tokyo-shin-aksxm1 --location japaneast

Azure ポータルでアクセスをすると、リソースグループが作成できていることを確認できます。

random desc

AKS クラスターの作成

続いて AKS クラスターを作成します。ユーザー名を指定します。

az aks create --resource-group jpn-tokyo-shin-aksxm1 --name SitecoredemoCluster --node-count 2 --enable-addons monitoring --generate-ssh-keys --windows-admin-username aksdemo --vm-set-type VirtualMachineScaleSets --network-plugin azure

上記のコマンドを実行すると、パスワードの入力、および確認が実行されます。パスワードは 14 文字以上となっているため、多少長いパスワードを設定してください。コマンドが正しく実行されると、Running という形で作成となるため、数分完了するのを待ちます。

random desc

完了すると、リソースグループに Kubernetes サービスが追加されています。

random desc

このタイミングで、リソースグループ一覧を見に行くと MC\_ がついているリソースグループが追加されています。

random desc

リソースグループの中を見ると、いくつかのリソースが追加されているのがわかります。

random desc

Windows Server ノードプールの作成

展開する予定のノードプールを作成します。引き続きコマンドで実行する場合は次のようになります。

az aks nodepool add --resource-group jpn-tokyo-shin-aksxm1 --cluster-name SitecoredemoCluster --os-type Windows --name npwin --node-count 3

しばらくするとノードプールが追加されます。Azure ポータルサイトに行くと、以下のように確認ができます。

random desc

作成をした設定を、ローカルで利用できるようにクレデンシャルを取得します。

az aks get-credentials --resource-group jpn-tokyo-shin-aksxm1 --name SitecoredemoCluster

これにより Kubectl が作成をした AKS クラスターを利用することができるようになりました。

Ingress コントローラーの展開

Kubernetes 環境用ロードバランサーとして利用できる Ingress コントローラーを展開していきます。ここでは helm コマンドを利用していきます。

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

続いて、 NGINX ingress コントローラーをインストールします。インストール前の設定は以下の通りです。

random desc

インストールは以下のコマンドを実行します。

helm install nginx-ingress ingress-nginx/ingress-nginx --set controller.replicaCount=2 --set controller.nodeSelector."kubernetes\.io/os"=linux --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux

インストール完了後、管理画面に行くと サービスとイングレス の中に項目が増えているのがわかります。

random desc

最後にホスト名などの値を設定するために、以下のコマンドを実行します。

kubectl apply -k ./ingress-nginx/

結果としては、構成の中に2つのレコードが増えていることがわかります。sitecore-hostnames にはサーバーのホスト名が記載されていることも確認出来ます。

random desc

最後に、設定をしている各種パラメーターを適用します。

kubectl apply -k ./secrets/

random desc

非本番環境向けの External Service の起動

本番環境の場合は別途 SQL Database などを準備する必要がありますが、今回は展開の練習でもあるため個別に準備しないで展開したいと思います。まず External の構成ファイルを使用して、選択したノードにスケジューリングされる Pod を作成します。

kubectl apply -k ./external/

random desc

Pod が選択したノード上で実行されているをことを確認します。

kubectl get pods -o wide

ステータスが Running になっていれば完了です。

random desc

完了に関して確認をするためのコマンドは以下の通りです。

kubectl wait --for=condition=Available deployments --all --timeout=900s
kubectl wait --for=condition=Ready pods --all

管理画面を見ると、サービスとイングレスに項目が増えているのを確認することができます。

random desc

続いて初期データを適用していきます。

kubectl apply -k ./init/

Job の状況は以下のコマンドで確認することができます。

kubectl get jobs -o wide

random desc

完了を確認する際には以下のコマンドで簡単に確認ができます。

kubectl wait --for=condition=Complete job.batch/solr-init --timeout=900s
kubectl wait --for=condition=Complete job.batch/mssql-init --timeout=900s

永続的ストレージをマウントする記載は以下の通りとなります。

kubectl apply -f ./volumes/azurefile

ストレージを確認しに行くと、作成されていることがわかります。

random desc

Sitecore を起動する

一通り準備が完了したところで、Sitecore の Pod を展開していきます。コマンドは以下の通りです。

kubectl apply -k ./

random desc

展開状況に関しては、これまでと同じように以下のコマンドになります。

kubectl get pods -o wide

random desc

以下のコマンドで起動状況を確認することもできます。

kubectl wait --for=condition=Available deployments --all --timeout=1800s

すべて起動するとコマンドラインは以下のように表示されます。

random desc

テスト環境にアクセスする

すでに Sitecore が起動している状況です。とはいえ接続するためのサーバーの情報をまずは確認します。

kubectl get ingress

以下のように結果が返ってきました。

random desc

localhost に IP アドレスとサーバー名を記載してください。記載後、ブラウザで https://cm.sitecoredemo.jp/sitecore にアクセスをします。以下のようにログイン画面が表示されます。

random desc

ログインをすると Sitecore の管理画面が表示されます。

random desc

これでインストールが完了です。

まとめ

Docker を利用してコンテナベースで Sitecore を動かす手順をこれまで紹介していましたが、3 回に分けて手順を紹介していきましたが Azure Kubernetes Service で動作させることが出来ました。まず起動するところまで、というところで3回目で区切りをつけますが、今後は起動している環境を利用して構成をすこしづつ変更していきたいと思います。