phpMyAdmin with nginx Helm Chart
このHelmチャートは、nginx をリバースプロキシとして使用する phpMyAdmin をKubernetes上にデプロイします。
機能
- ✅ nginx (1.29.3-alpine-perl) + phpMyAdmin (5.2.3-fpm-alpine) のマルチコンテナ構成
- ✅ 本番環境対応のセキュリティ設定
- ✅ Horizontal Pod Autoscaler (HPA) サポート
- ✅ Pod Disruption Budget (PDB) による高可用性
- ✅ Network Policy によるネットワーク分離
- ✅ セッション永続化のための PersistentVolume サポート
- ✅ Ingress サポート (TLS対応)
- ✅ リソース制限の設定
- ✅ Liveness/Readiness プローブ
- ✅ Security Context による権限制御
前提条件
- Kubernetes 1.19+
- Helm 3.0+
- MySQL/MariaDB サーバー
インストール
基本的なインストール
カスタム設定でのインストール
values.yaml を使用したインストール
設定例
1. 複数のMySQLサーバーへの接続
2. Ingress の有効化 (TLS対応)
3. オートスケーリングの有効化
4. Network Policy の有効化
5. セッション永続化
パラメータ
グローバル設定
| パラメータ |
説明 |
デフォルト値 |
replicaCount |
レプリカ数 |
2 |
image.nginx.registry |
nginx イメージレジストリ |
docker.io |
image.nginx.repository |
nginx リポジトリ |
nginx |
image.nginx.tag |
nginx イメージタグ |
1.29.3-alpine-perl |
image.phpmyadmin.registry |
phpMyAdmin イメージレジストリ |
docker.io |
image.phpmyadmin.repository |
phpMyAdmin リポジトリ |
phpmyadmin |
image.phpmyadmin.tag |
phpMyAdmin イメージタグ |
5.2.3-fpm-alpine |
サービス設定
| パラメータ |
説明 |
デフォルト値 |
service.type |
Serviceタイプ |
ClusterIP |
service.port |
Serviceポート |
80 |
service.targetPort |
ターゲットポート |
8080 |
phpMyAdmin 設定
| パラメータ |
説明 |
デフォルト値 |
phpmyadmin.hosts[0].host |
MySQLホスト |
mysql.default.svc.cluster.local |
phpmyadmin.hosts[0].port |
MySQLポート |
3306 |
phpmyadmin.env.PMA_ARBITRARY |
任意サーバー接続許可 |
"0" |
phpmyadmin.env.UPLOAD_LIMIT |
アップロード制限 |
"128M" |
phpmyadmin.env.MEMORY_LIMIT |
メモリ制限 |
"512M" |
phpmyadmin.blowfishSecret |
Blowfish暗号化キー |
"" (自動生成) |
リソース設定
| パラメータ |
説明 |
デフォルト値 |
resources.nginx.requests.cpu |
nginx CPU要求 |
100m |
resources.nginx.requests.memory |
nginx メモリ要求 |
64Mi |
resources.phpmyadmin.requests.cpu |
phpMyAdmin CPU要求 |
250m |
resources.phpmyadmin.requests.memory |
phpMyAdmin メモリ要求 |
256Mi |
アンインストール
セキュリティに関する注意事項
- Blowfish Secret: 本番環境では必ず独自の blowfish secret を設定してください
- Network Policy: 本番環境では Network Policy を有効にしてアクセスを制限してください
- Ingress: 外部公開する場合は必ず TLS を有効にしてください
- 認証: phpMyAdmin への直接アクセスを制限し、VPN経由でのアクセスを推奨します
トラブルシューティング
Podが起動しない場合
MySQLに接続できない場合
- MySQLサーバーのホスト名とポートを確認
- Network Policyの設定を確認
- MySQLサーバーがリッスンしているか確認