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. バックアップと復旧計画: 定期的なデータベースバックアップを実装し、データ損失時の回復策を準備します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ