2026年7月20日
2026年7月20日
WordPressのGKE(Google Kubernetes Engine)へのデプロイ
はじめに
WordPressの管理や更新作業は日々のウェブサイト運営において重要な役割を果たします。特に、高トラフィックなウェブサイトでは、スケーラビリティとセキュリティが求められます。Google Kubernetes Engine (GKE)を利用することで、これらの要件に対応することができます。
症状・背景
このテーマが必要になる主な場面:
- WordPressのトラフィック増加
- スキーマ変更やデータベースバックアップの頻繁な作業
- カスタムプラグインを使用し、より高度な機能を追加する必要がある場合
- 既存のシステムがスケーラブルでない場合
手順・設定方法
ステップ1: Google Cloud Consoleにログインしてプロジェクトを作成
# プロジェクト名を指定します。ここでは "my-wordpress-project" とします。
gcloud config set project my-wordpress-project
# GKEのリージョンを選択します。ここでは "asia-northeast1" を使用します。
gcloud config set compute/region asia-northeast1
ステップ2: Kubernetesクラスタを作成
# リソース制限とスケーラビリティを考慮したクラスターの作成。ここでは "wordpress-cluster" とします。
gcloud container clusters create wordpress-cluster --zone asia-northeast1-a --num-nodes=3
# クラスタに接続するためのkubectl認証情報を作成
gcloud container clusters get-credentials wordpress-cluster --zone asia-northeast1-a
ステップ3: WordPressとMySQLのデプロイメント定義ファイル作成
# デプロイメント用のYAMLファイルを生成またはコピーします。ここでは "wordpress.yaml" として保存します。
cat << EOF > wordpress.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: wp-deployment
spec:
replicas: 2
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress:5.8-php7.4-apache
env:
- name: WORDPRESS_DB_HOST
value: mysql-service:mysql
- name: WORDPRESS_DB_USER
valueFrom:
secretKeyRef:
name: wp-secrets
key: db-user
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: wp-secrets
key: db-password
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: wordpress-service
spec:
selector:
app: wordpress
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
EOF
# MySQL用のYAMLファイルを作成します。ここでは "mysql.yaml" として保存します。
cat << EOF > mysql.yaml
apiVersion: v1
kind: Secret
metadata:
name: wp-secrets
type: Opaque
data:
db-user: $(echo -n 'admin' | base64)
db-password: $(echo -n 'your-strong-passwd' | base64)
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
replicas: 2
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: wp-secrets
key: db-password
---
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
selector:
app: mysql
ports:
- protocol: TCP
port: 3306
ステップ4: WordPressとMySQLのデプロイ
# 作成したYAMLファイルを読み込んで、WordPressとMySQLをKubernetesクラスタにデプロイします。
kubectl apply -f wordpress.yaml mysql.yaml
注意事項
- 安全性のために、すべてのセキュリティシークレットは暗号化されて保存され、適切なアクセス制御が適用されているべきです。
- データベースバックアップとデータ復旧手順を計画し、実装する必要があります。
- WordPressインスタンス間でキャッシュ共有や負荷分散を行うために、適切なRedisやVarnish設定が必要となります。
まとめ
1. プロジェクトの初期化: Google Cloud Consoleへのログインから始まります。必要なリソースを作成します。
2. クラスタとサービスの作成: Kubernetesクラスターを立ち上げてWordPress用のServiceとDeploymentを作ります。
3. セキュリティ設定: データベースアクセスのためのシークレット作成やネットワークポリシーセットアップなどを行う。
4. バックアップと復旧計画: 定期的なデータベースバックアップを実装し、データ損失時の回復策を準備します。
関連記事: