# 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. チャートの準備 ```bash # チャートディレクトリの作成 mkdir -p wordpress-nginx/templates # 必要なファイルをコピー # Chart.yaml, values.yaml, templates/* ``` ### 2. MySQLのデプロイ(必要な場合) ```bash # 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のデプロイ ```bash # デフォルト値でインストール 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での公開 ```bash helm install my-wordpress ./wordpress-nginx \ --set service.type=LoadBalancer \ --set wordpress.dbPassword=SecurePassword123 ``` ### Ingressでの公開 ```bash 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 ``` ### リソース制限のカスタマイズ ```bash helm install my-wordpress ./wordpress-nginx \ --set resources.nginx.limits.memory=1Gi \ --set resources.wordpress.limits.memory=2Gi ``` ## アップグレード ```bash # 設定を変更してアップグレード helm upgrade my-wordpress ./wordpress-nginx \ --set wordpress.dbPassword=NewPassword # values.yamlを使用してアップグレード helm upgrade my-wordpress ./wordpress-nginx -f custom-values.yaml ``` ## アンインストール ```bash helm uninstall my-wordpress ``` ## トラブルシューティング ### Podの状態確認 ```bash kubectl get pods -l app.kubernetes.io/name=wordpress-nginx kubectl describe pod kubectl logs -c nginx kubectl logs -c wordpress ``` ### データベース接続の確認 ```bash kubectl exec -it -c wordpress -- wp db check ``` ### 永続ボリュームの確認 ```bash kubectl get pvc kubectl describe pvc ``` ## セキュリティ考慮事項 本番環境では以下を必ず実施してください: 1. **データベースパスワードの保護**: Kubernetes Secretを使用 2. **HTTPS の有効化**: cert-manager等でTLS証明書を設定 3. **リソース制限の設定**: 適切なresources設定 4. **定期的なバックアップ**: PVCのスナップショット等 5. **セキュリティアップデート**: イメージの定期的な更新