2026年9月1日
2026年9月1日
WordPressのAKS(Azure Kubernetes Service)へのデプロイ
はじめに
ここでは、Azure Kubernetes Service (AKS) を使用して WordPress をデプロイする方法を紹介します。高度なスケーラビリティと可用性が要求される大規模なWordPressサイトやアプリケーションには特に適しています。
症状・背景
この記事が必要になる主な場面:
- サイトのトラフィック増加によるパフォーマンス問題
- クラスタリングやロードバランシングを必要とする高可用性要件
- CI/CDパイプラインの統合
- データベースとアプリケーションの分離
手順・設定方法
ステップ1: AKSクラスターの作成
# Azure CLI を使用して新しいクラスターを作成します。
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 3 --enable-addons monitoring --generate-ssh-keys
ステップ2: Kubernetes ネームスペースとサービスアカウントの作成
# デプロイメント用にネームスペースを作成します。
kubectl create namespace wordpress
# WordPressのためのServiceAccountを生成します。
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: wordpress
namespace: wordpress
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: wordpress-full-access
subjects:
- kind: ServiceAccount
name: wordpress
namespace: wordpress
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
EOF
ステップ3: MySQLのPersistentVolumeとPersistentVolumeClaimを設定
# MySQL用のPersistentVolumeとPersistentVolumeClaimを定義します。
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
namespace: wordpress
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
EOF
ステップ4: WordPressとMySQLのデプロイメントファイルを作成
# MySQLとWordPressのPodを定義します。
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-credentials
key: root-password
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-persistent-storage
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: wordpress
spec:
ports:
- port: 3306
selector:
app: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wp-deployment
namespace: wordpress
spec:
replicas: 2
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- image: wordpress:latest
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: mysql:3306
- name: WORDPRESS_DB_USER
valueFrom:
secretKeyRef:
name: wp-credentials
key: user
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: wp-credentials
key: password
ports:
- containerPort: 80
EOF
ステップ5: WordPressのロードバランサーサービスを作成
# ロードバランサーとして外部にアクセス可能なWordPressサービスを定義します。
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: wordpress-loadbalancer
namespace: wordpress
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: wordpress
EOF
注意事項
- デプロイメントの前に、必ずKubernetesクラスターが正常に動作していることを確認してください。
- MySQLのPersistentVolumeClaimとPersistentVolumeはテスト環境でのみ使用可能です。生産環境ではネットワークディスクを使用することを検討してください。
- WordPressとMySQL用のSecretsファイルを作成し、それらを適切な場所に配置します。
まとめ
1. AKSクラスターの作成: AKSクラスターはAzure CLIを使用して迅速に作成できます。
2. ネームスペースとServiceAccountの設定: Kubernetesのリソース隔離とアクセス制御のために、必要なネームスペースとServiceAccountを事前に準備します。
3. PersistentVolumeの設定: MySQLデータベース用に永続的なストレージを確保し、その上でPersistentVolumeClaimを作成します。
4. MySQLとWordPressのデプロイメント: データベースとアプリケーションのPodは、定義された環境変数を使用して実行されます。
5. ロードバランサーサービスの作成: WordPressサービスを外部からアクセス可能にするために、LoadBalancerタイプのKubernetes Serviceを作成します。
関連記事: