定期バックアップ機能の追加
Some checks failed
Helm Chart Release / release-chart (push) Failing after 10s

This commit is contained in:
2026-02-06 23:11:49 +00:00
parent 1fb2701f53
commit c17fbc9fd4

130
README.md
View File

@@ -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 <pod-name> -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/<job-name>
# バックアップファイルの確認PVC使用時
kubectl exec -it <backup-pod-name> -- ls -lh /backup/
# 手動でバックアップジョブを実行
kubectl create job --from=cronjob/<cronjob-name> manual-backup-$(date +%s)
```
### バックアップの復元方法
```bash
# バックアップPodに接続
kubectl exec -it <pod-name> -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ページで報告してください。