4.7 KiB
4.7 KiB
Nginx Redirect Helm Chart
セキュアなAlpineベースのNginxリダイレクト専用サーバーのHelmチャートです。
特徴
- セキュリティ重視: 管理画面なし、読み取り専用ファイルシステム、非rootユーザー実行
- 3つのリダイレクトモード: パス維持、ルートのみ、カスタムパス
- 完全な設定管理: すべての設定をvalues.yamlで管理
- 高可用性: Pod Disruption Budget、Anti-Affinity設定
- Kubernetes標準: Ingress自動統合
インストール
helm install my-redirect ./nginx-redirect -f custom-values.yaml
リダイレクトモード
1. パス維持モード (path-preserve)
元のパスを維持したまま新しいドメインにリダイレクトします。
例: https://old-domain.com/products/item1 → https://new-domain.com/products/item1
redirect:
mode: "path-preserve"
statusCode: 301
targetDomain: "https://new-domain.com"
2. ルートのみモード (root-only)
すべてのパスを無視して、指定したURLにリダイレクトします。
例: https://old-domain.com/any/path → https://new-domain.com
redirect:
mode: "root-only"
statusCode: 301
targetDomain: "https://new-domain.com"
3. カスタムモード (custom)
個別のパスごとに異なる転送先を指定できます。
redirect:
mode: "custom"
statusCode: 301
customPaths:
- path: "/old-page"
target: "https://new-domain.com/new-page"
- path: "/products"
target: "https://shop.example.com/products"
- path: "/blog/*"
target: "https://blog.example.com"
fallbackTarget: "https://default-domain.com"
パスの種類:
- 固定パス:
/old-page→ 完全一致 - ワイルドカード:
/blog/*→/blog/以下のすべてのパスにマッチし、サブパスを保持
セキュリティ機能
- 非rootユーザー実行: UID/GID 101 (nginx)
- 読み取り専用ルートファイルシステム
- 権限昇格の防止
- すべてのケーパビリティをドロップ
- Seccompプロファイル適用
- セキュリティヘッダー自動付与
- X-Frame-Options
- X-Content-Type-Options
- X-XSS-Protection
- Referrer-Policy
設定例
例1: サイトリニューアルでドメイン変更
redirect:
mode: "path-preserve"
statusCode: 301
targetDomain: "https://new-company-site.com"
ingress:
hosts:
- host: old-company-site.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: old-site-tls
hosts:
- old-company-site.com
例2: ランディングページから特定URLへ
redirect:
mode: "root-only"
statusCode: 302
targetDomain: "https://campaign.example.com/special-offer"
ingress:
hosts:
- host: promo.example.com
例3: 複数サービスへの振り分け
redirect:
mode: "custom"
statusCode: 301
customPaths:
- path: "/shop/*"
target: "https://shop.example.com"
- path: "/blog/*"
target: "https://blog.example.com"
- path: "/support"
target: "https://help.example.com"
- path: "/contact"
target: "https://main-site.com/contact-us"
fallbackTarget: "https://main-site.com"
HTTPステータスコード
- 301: 恒久的なリダイレクト (推奨: SEO評価を引き継ぐ)
- 302: 一時的なリダイレクト (推奨: テストやキャンペーン用)
リソース要件
デフォルト設定:
- CPU: 50m (リクエスト) / 100m (上限)
- メモリ: 64Mi (リクエスト) / 128Mi (上限)
高トラフィック環境では調整してください:
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
ヘルスチェック
/health エンドポイントで稼働状態を確認できます:
curl http://your-domain.com/health
# 出力: healthy
アップグレード
helm upgrade my-redirect ./nginx-redirect -f custom-values.yaml
アンインストール
helm uninstall my-redirect
トラブルシューティング
リダイレクトが機能しない
-
Podのログを確認:
kubectl logs -l app.kubernetes.io/name=nginx-redirect -
ConfigMapの内容を確認:
kubectl get configmap <release-name>-nginx-redirect -o yaml -
Ingressの設定を確認:
kubectl describe ingress <release-name>-nginx-redirect
SSL/TLS証明書の問題
cert-managerが正しく動作しているか確認:
kubectl get certificate
kubectl describe certificate nginx-redirect-tls
ライセンス
MIT License