2025-11-20 07:56:42 +00:00
2025-11-20 07:56:42 +00:00
2025-11-20 07:47:16 +00:00
2025-11-20 07:41:58 +00:00
2025-11-20 07:54:19 +00:00

WordPress with Nginx Helm Chart

このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。

アーキテクチャ

  • Nginx: リバースプロキシおよび静的ファイル配信
  • WordPress (PHP-FPM): WordPressアプリケーション実行
  • 共有ボリューム: Nginx と WordPress 間でファイルを共有

前提条件

  • Kubernetes 1.19+
  • Helm 3.0+
  • PersistentVolume プロビジョナー(永続化を有効にする場合)
  • MySQL/MariaDB データベース(別途デプロイが必要)

インストール方法

1. チャートの準備

# チャートディレクトリの作成
mkdir -p wordpress-nginx/templates

# 必要なファイルをコピー
# Chart.yaml, values.yaml, templates/*

2. MySQLのデプロイ必要な場合

# Helm を使用して MySQL をデプロイ
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install mysql bitnami/mysql \
  --set auth.rootPassword=rootpassword \
  --set auth.database=wordpress \
  --set auth.username=wordpress \
  --set auth.password=changeme

3. WordPressのデプロイ

# デフォルト値でインストール
helm install my-wordpress ./wordpress-nginx

# カスタム値でインストール
helm install my-wordpress ./wordpress-nginx \
  --set wordpress.dbPassword=your-secure-password \
  --set service.type=LoadBalancer

# values.yaml を使用
helm install my-wordpress ./wordpress-nginx -f custom-values.yaml

設定パラメータ

基本設定

パラメータ 説明 デフォルト値
replicaCount レプリカ数 2
image.nginx.registry Nginxイメージレジストリ docker.io
image.nginx.repository Nginxイメージリポジトリ nginx
image.nginx.tag Nginxイメージタグ 1.29.3-alpine-perl
image.wordpress.registry WordPressイメージレジストリ docker.io
image.wordpress.repository WordPressイメージリポジトリ wordpress
image.wordpress.tag WordPressイメージタグ 6.8.3-php8.4-fpm-alpine

WordPress設定

パラメータ 説明 デフォルト値
wordpress.dbHost データベースホスト mysql-service
wordpress.dbName データベース名 wordpress
wordpress.dbUser データベースユーザー wordpress
wordpress.dbPassword データベースパスワード changeme
wordpress.tablePrefix テーブルプレフィックス wp_

Service設定

パラメータ 説明 デフォルト値
service.type Serviceタイプ LoadBalancer
service.port Serviceポート 80

Ingress設定

パラメータ 説明 デフォルト値
ingress.enabled Ingressを有効化 false
ingress.className IngressClass名 nginx
ingress.hosts ホスト設定 wordpress.example.com

永続化設定

パラメータ 説明 デフォルト値
persistence.enabled 永続化を有効化 true
persistence.storageClass StorageClass ""
persistence.accessMode アクセスモード ReadWriteOnce
persistence.size ストレージサイズ 10Gi

使用例

LoadBalancerでの公開

helm install my-wordpress ./wordpress-nginx \
  --set service.type=LoadBalancer \
  --set wordpress.dbPassword=SecurePassword123

Ingressでの公開

helm install my-wordpress ./wordpress-nginx \
  --set ingress.enabled=true \
  --set ingress.hosts[0].host=wordpress.example.com \
  --set ingress.hosts[0].paths[0].path=/ \
  --set ingress.hosts[0].paths[0].pathType=Prefix \
  --set service.type=ClusterIP

リソース制限のカスタマイズ

helm install my-wordpress ./wordpress-nginx \
  --set resources.nginx.limits.memory=1Gi \
  --set resources.wordpress.limits.memory=2Gi

アップグレード

# 設定を変更してアップグレード
helm upgrade my-wordpress ./wordpress-nginx \
  --set wordpress.dbPassword=NewPassword

# values.yamlを使用してアップグレード
helm upgrade my-wordpress ./wordpress-nginx -f custom-values.yaml

アンインストール

helm uninstall my-wordpress

トラブルシューティング

Podの状態確認

kubectl get pods -l app.kubernetes.io/name=wordpress-nginx
kubectl describe pod <pod-name>
kubectl logs <pod-name> -c nginx
kubectl logs <pod-name> -c wordpress

データベース接続の確認

kubectl exec -it <pod-name> -c wordpress -- wp db check

永続ボリュームの確認

kubectl get pvc
kubectl describe pvc <pvc-name>

セキュリティ考慮事項

本番環境では以下を必ず実施してください:

  1. データベースパスワードの保護: Kubernetes Secretを使用
  2. HTTPS の有効化: cert-manager等でTLS証明書を設定
  3. リソース制限の設定: 適切なresources設定
  4. 定期的なバックアップ: PVCのスナップショット等
  5. セキュリティアップデート: イメージの定期的な更新
Description
No description provided
Readme 358 KiB
Languages
Smarty 100%