diff --git a/# WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 **bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 ## 主な機能 ✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ ✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 ✅ **アップデート対応**: b/# WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 **bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 ## 主な機能 ✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ ✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 ✅ **アップデート対応**: deleted file mode 100644 index 7743ad2..0000000 --- a/# WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 **bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 ## 主な機能 ✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ ✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 ✅ **アップデート対応**: +++ /dev/null @@ -1,298 +0,0 @@ -# WordPress with Nginx Helm Chart - -このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 -**bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 - -## 主な機能 - -✅ **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ -✅ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 -✅ **アップデート対応**: 既存のDBがある場合は初期化をスキップ -✅ **ads.txt対応**: values.yamlから ads.txt を配置可能 -✅ **本番環境対応**: セキュアなSecret管理、HA構成 - -## アーキテクチャ - -- **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_` | -| `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設定 - -| パラメータ | 説明 | デフォルト値 | -|-----------|------|-------------| -| `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` | - -## 使用例 - -### 基本的なインストール(パスワード自動生成) - -```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 -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 -``` - -## 初期化の動作 - -### 新規インストール時 -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 -# 設定を変更してアップグレード -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 -``` - -## トラブルシューティング - -### 初期化ログの確認 - -```bash -# 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 -# 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 -``` - -## セキュリティ考慮事項 - -本番環境では以下を必ず実施してください: - -1. **データベースパスワードの保護**: Kubernetes Secretを使用 -2. **HTTPS の有効化**: cert-manager等でTLS証明書を設定 -3. **リソース制限の設定**: 適切なresources設定 -4. **定期的なバックアップ**: PVCのスナップショット等 -5. **セキュリティアップデート**: イメージの定期的な更新