diff --git a/README.md b/# WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 **bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 ## 主な機能 ✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ ✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 ✅ **アップデート対応**: similarity index 55% rename from README.md rename to # WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 **bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 ## 主な機能 ✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ ✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 ✅ **アップデート対応**: index 659eb8b..7743ad2 100644 --- a/README.md +++ b/# WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 **bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 ## 主な機能 ✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ ✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 ✅ **アップデート対応**: @@ -1,6 +1,15 @@ # WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 +**bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 + +## 主な機能 + +✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ +✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 +✅ **アップデート対応**: 既存のDBがある場合は初期化をスキップ +✅ **ads.txt対応**: values.yamlから ads.txt を配置可能 +✅ **本番環境対応**: セキュアなSecret管理、HA構成 ## アーキテクチャ @@ -77,6 +86,13 @@ helm install my-wordpress ./wordpress-nginx -f custom-values.yaml | `wordpress.dbUser` | データベースユーザー | `wordpress` | | `wordpress.dbPassword` | データベースパスワード | `changeme` | | `wordpress.tablePrefix` | テーブルプレフィックス | `wp_` | +| `wordpress.siteTitle` | サイトタイトル | `My WordPress Site` | +| `wordpress.siteUrl` | サイトURL | `http://localhost` | +| `wordpress.adminUser` | 管理者ユーザー名 | `admin` | +| `wordpress.adminPassword` | 管理者パスワード(空=自動生成) | `""` | +| `wordpress.adminEmail` | 管理者メール | `admin@example.com` | +| `wordpress.adsTxt.enabled` | ads.txtを有効化 | `false` | +| `wordpress.adsTxt.content` | ads.txtの内容 | `""` | ### Service設定 @@ -104,6 +120,51 @@ helm install my-wordpress ./wordpress-nginx -f custom-values.yaml ## 使用例 +### 基本的なインストール(パスワード自動生成) + +```bash +helm install my-wordpress ./wordpress-nginx \ + --set wordpress.dbPassword=SecurePassword123 \ + --set wordpress.siteUrl=http://my-wordpress.example.com \ + --set wordpress.siteTitle="My Blog" \ + --set wordpress.adminEmail=admin@example.com + +# パスワードの取得 +kubectl get secret my-wordpress-wordpress-nginx-secret \ + -o jsonpath='{.data.admin-password}' | base64 -d +echo +``` + +### パスワードを指定してインストール + +```bash +helm install my-wordpress ./wordpress-nginx \ + --set wordpress.dbPassword=SecurePassword123 \ + --set wordpress.adminPassword=AdminPass456 \ + --set wordpress.siteUrl=https://blog.example.com \ + --set wordpress.adminUser=myadmin +``` + +### ads.txt を配置 + +```bash +helm install my-wordpress ./wordpress-nginx \ + --set wordpress.dbPassword=SecurePassword123 \ + --set wordpress.adsTxt.enabled=true \ + --set-string wordpress.adsTxt.content="google.com, pub-1234567890, DIRECT, f08c47fec0942fa0" +``` + +または values.yaml に記述: + +```yaml +wordpress: + adsTxt: + enabled: true + content: | + google.com, pub-1234567890, DIRECT, f08c47fec0942fa0 + adserver.com, 9876, RESELLER +``` + ### LoadBalancerでの公開 ```bash @@ -131,7 +192,37 @@ helm install my-wordpress ./wordpress-nginx \ --set resources.wordpress.limits.memory=2Gi ``` -## アップグレード +## 初期化の動作 + +### 新規インストール時 +1. WordPressファイルをコピー +2. wp-config.phpを生成(セキュアな Salt キー自動生成) +3. データベース接続を確認 +4. テーブルが存在しない場合: + - WP-CLIを使用してWordPressをインストール + - 管理者アカウントを作成 + - パスワードが未指定の場合は16文字のランダム生成 +5. ads.txtが有効な場合は配置 + +### アップデート/再起動時 +1. 既存のwp-config.phpを検出 +2. データベーステーブルの存在を確認 +3. テーブルが存在する場合: + - 初期化処理をスキップ + - コアバージョンの更新確認 + - 必要に応じてデータベーススキーマをアップデート +4. 既存データを保持したまま起動 + +### 管理者パスワードの確認方法 + +```bash +# Secretから取得 +kubectl get secret -wordpress-nginx-secret \ + -o jsonpath='{.data.admin-password}' | base64 -d + +# または initContainer のログから確認(初回のみ) +kubectl logs -c wordpress-init +``` ```bash # 設定を変更してアップグレード @@ -150,26 +241,50 @@ helm uninstall my-wordpress ## トラブルシューティング -### Podの状態確認 +### 初期化ログの確認 ```bash -kubectl get pods -l app.kubernetes.io/name=wordpress-nginx -kubectl describe pod +# initContainer のログを確認 +kubectl logs -c wordpress-init + +# メインコンテナのログ kubectl logs -c nginx kubectl logs -c wordpress ``` +### 管理者パスワードの再確認 + +```bash +# Secretから取得 +kubectl get secret my-wordpress-wordpress-nginx-secret \ + -o jsonpath='{.data.admin-password}' | base64 -d && echo +``` + ### データベース接続の確認 ```bash +# WordPress コンテナで WP-CLI を実行 kubectl exec -it -c wordpress -- wp db check +kubectl exec -it -c wordpress -- wp db tables ``` -### 永続ボリュームの確認 +### 再初期化が必要な場合 ```bash -kubectl get pvc -kubectl describe pvc +# PVCを削除して再作成(注意:データが消えます) +kubectl delete pvc +helm uninstall my-wordpress +helm install my-wordpress ./wordpress-nginx +``` + +### ads.txt の確認 + +```bash +# Pod内でファイルを確認 +kubectl exec -it -c nginx -- cat /var/www/html/ads.txt + +# ブラウザまたはcurlでアクセス +curl http://your-site.com/ads.txt ``` ## セキュリティ考慮事項