diff --git a/README.md b/README.md index 79af2ab..26720fb 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ - ✅ nginx (1.29.3-alpine-perl) + phpMyAdmin (5.2.3-fpm-alpine) のマルチコンテナ構成 - ✅ 本番環境対応のセキュリティ設定 +- ✅ **自動バックアップ機能(CronJob)** + - 定期的なMySQLデータベースバックアップ + - PVCまたは外部NFSへの保存対応 + - 圧縮・世代管理機能 - ✅ Horizontal Pod Autoscaler (HPA) サポート - ✅ Pod Disruption Budget (PDB) による高可用性 - ✅ Network Policy によるネットワーク分離 @@ -125,6 +129,70 @@ persistence: size: 1Gi ``` +### 6. 自動バックアップの有効化(PVC使用) + +```yaml +backup: + enabled: true + # 毎日午前2時にバックアップ + schedule: "0 2 * * *" + + # MySQL接続情報はphpmyadmin.hostsから自動取得 + mysql: + user: "backup_user" + password: "your-backup-password" + + # 特定のデータベースのみバックアップ + databases: + - myapp_db + - analytics_db + + # バックアップの圧縮 + compression: + enabled: true + level: 6 + + # 30日以上古いバックアップを自動削除 + retention: + enabled: true + days: 30 + + # PVCストレージ設定 + persistence: + storageClass: "standard" + accessMode: ReadWriteMany + size: 50Gi +``` + +### 7. 自動バックアップの有効化(NFS使用) + +```yaml +backup: + enabled: true + schedule: "0 2 * * *" + + # MySQL接続情報はphpmyadmin.hostsから自動取得 + mysql: + existingSecret: "mysql-backup-credentials" + + # NFSストレージ設定 + nfs: + enabled: true + server: "nfs-server.example.com" + path: "/exports/mysql-backups" +``` + +### 8. 既存のSecretを使用したバックアップ + +```yaml +backup: + enabled: true + mysql: + existingSecret: "mysql-backup-secret" + userKey: "username" + passwordKey: "password" +``` + ## パラメータ ### グローバル設定 @@ -167,6 +235,27 @@ persistence: | `resources.phpmyadmin.requests.cpu` | phpMyAdmin CPU要求 | `250m` | | `resources.phpmyadmin.requests.memory` | phpMyAdmin メモリ要求 | `256Mi` | +### バックアップ設定 + +| パラメータ | 説明 | デフォルト値 | +|----------|------|------------| +| `backup.enabled` | バックアップ機能の有効化 | `false` | +| `backup.schedule` | Cronスケジュール | `"0 2 * * *"` | +| `backup.mysql.user` | MySQLバックアップユーザー | `""` | +| `backup.mysql.password` | MySQLパスワード | `""` | +| `backup.mysql.existingSecret` | 既存Secret使用 | `""` | +| `backup.databases` | バックアップ対象DB(空=全DB) | `[]` | +| `backup.compression.enabled` | 圧縮有効化 | `true` | +| `backup.compression.level` | 圧縮レベル (1-9) | `6` | +| `backup.retention.enabled` | 世代管理有効化 | `true` | +| `backup.retention.days` | 保持日数 | `30` | +| `backup.persistence.size` | バックアップPVCサイズ | `50Gi` | +| `backup.nfs.enabled` | NFS使用 | `false` | +| `backup.nfs.server` | NFSサーバー | `""` | +| `backup.nfs.path` | NFSパス | `""` | + +**注意**: MySQL接続情報(host、port)は `phpmyadmin.hosts[0]` から自動的に取得されます。 + ## アンインストール ```bash @@ -199,3 +288,44 @@ kubectl logs -l app.kubernetes.io/name=phpmyadmin-nginx -c phpmyadmin ```bash kubectl exec -it -c phpmyadmin -- nc -zv mysql.default.svc.cluster.local 3306 ``` + +### バックアップジョブの確認 + +```bash +# CronJobの確認 +kubectl get cronjob + +# 実行されたJobの確認 +kubectl get jobs -l app.kubernetes.io/component=backup + +# バックアップジョブのログ確認 +kubectl logs job/ + +# バックアップファイルの確認(PVC使用時) +kubectl exec -it -- ls -lh /backup/ + +# 手動でバックアップジョブを実行 +kubectl create job --from=cronjob/ manual-backup-$(date +%s) +``` + +### バックアップの復元方法 + +```bash +# バックアップPodに接続 +kubectl exec -it -c phpmyadmin -- /bin/bash + +# バックアップファイルの確認 +ls -lh /backup/ + +# 復元実行(例) +gunzip -c /backup/20241120/mydb_20241120_020001.sql.gz | \ + mysql -h mysql.default.svc.cluster.local -u root -p mydb +``` + +## ライセンス + +このHelmチャートはMITライセンスの下で公開されています。 + +## サポート + +問題が発生した場合は、GitHubのIssuesページで報告してください。 \ No newline at end of file