# WordPress with Nginx Helm Chart このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 **bitnami/wordpress**のように、デプロイ後すぐに使用可能な状態で起動します。 ## 主な機能 **自動インストール**: 初回デプロイ時にWordPressを自動セットアップ **自動パスワード生成**: 管理者パスワードを指定しない場合は自動生成 **アップデート対応**: を更新

This commit is contained in:
2025-11-21 01:34:07 +00:00
parent bf6c233e26
commit 5037a15fc8

View File

@@ -1,6 +1,15 @@
# WordPress with Nginx Helm Chart # WordPress with Nginx Helm Chart
このHelmチャートは、Nginx + WordPress (PHP-FPM) 構成をKubernetes上にデプロイします。 この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.dbUser` | データベースユーザー | `wordpress` |
| `wordpress.dbPassword` | データベースパスワード | `changeme` | | `wordpress.dbPassword` | データベースパスワード | `changeme` |
| `wordpress.tablePrefix` | テーブルプレフィックス | `wp_` | | `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設定
@@ -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での公開 ### LoadBalancerでの公開
```bash ```bash
@@ -131,7 +192,37 @@ helm install my-wordpress ./wordpress-nginx \
--set resources.wordpress.limits.memory=2Gi --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 <release-name>-wordpress-nginx-secret \
-o jsonpath='{.data.admin-password}' | base64 -d
# または initContainer のログから確認(初回のみ)
kubectl logs <pod-name> -c wordpress-init
```
```bash ```bash
# 設定を変更してアップグレード # 設定を変更してアップグレード
@@ -150,26 +241,50 @@ helm uninstall my-wordpress
## トラブルシューティング ## トラブルシューティング
### Podの状態確認 ### 初期化ログの確認
```bash ```bash
kubectl get pods -l app.kubernetes.io/name=wordpress-nginx # initContainer のログを確認
kubectl describe pod <pod-name> kubectl logs <pod-name> -c wordpress-init
# メインコンテナのログ
kubectl logs <pod-name> -c nginx kubectl logs <pod-name> -c nginx
kubectl logs <pod-name> -c wordpress kubectl logs <pod-name> -c wordpress
``` ```
### 管理者パスワードの再確認
```bash
# Secretから取得
kubectl get secret my-wordpress-wordpress-nginx-secret \
-o jsonpath='{.data.admin-password}' | base64 -d && echo
```
### データベース接続の確認 ### データベース接続の確認
```bash ```bash
# WordPress コンテナで WP-CLI を実行
kubectl exec -it <pod-name> -c wordpress -- wp db check kubectl exec -it <pod-name> -c wordpress -- wp db check
kubectl exec -it <pod-name> -c wordpress -- wp db tables
``` ```
### 永続ボリュームの確認 ### 再初期化が必要な場合
```bash ```bash
kubectl get pvc # PVCを削除して再作成注意データが消えます
kubectl describe pvc <pvc-name> kubectl delete pvc <pvc-name>
helm uninstall my-wordpress
helm install my-wordpress ./wordpress-nginx
```
### ads.txt の確認
```bash
# Pod内でファイルを確認
kubectl exec -it <pod-name> -c nginx -- cat /var/www/html/ads.txt
# ブラウザまたはcurlでアクセス
curl http://your-site.com/ads.txt
``` ```
## セキュリティ考慮事項 ## セキュリティ考慮事項