184 lines
5.3 KiB
Markdown
184 lines
5.3 KiB
Markdown
# 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. **セキュリティアップデート**: イメージの定期的な更新
|