Files
wordpress/README.md
2025-11-20 07:41:58 +00:00

184 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <pod-name>
kubectl logs <pod-name> -c nginx
kubectl logs <pod-name> -c wordpress
```
### データベース接続の確認
```bash
kubectl exec -it <pod-name> -c wordpress -- wp db check
```
### 永続ボリュームの確認
```bash
kubectl get pvc
kubectl describe pvc <pvc-name>
```
## セキュリティ考慮事項
本番環境では以下を必ず実施してください:
1. **データベースパスワードの保護**: Kubernetes Secretを使用
2. **HTTPS の有効化**: cert-manager等でTLS証明書を設定
3. **リソース制限の設定**: 適切なresources設定
4. **定期的なバックアップ**: PVCのスナップショット等
5. **セキュリティアップデート**: イメージの定期的な更新