# YOURLS with NGINX Helm Chart このHelmチャートは、YOURLS (Your Own URL Shortener) をNGINXとPHP-FPMの構成でKubernetesにデプロイします。 ## 特徴 - NGINX (1.29.3-alpine-perl) + YOURLS (1.10.2-fpm-alpine) のマルチコンテナPod構成 - MySQL/MariaDBのサブチャートによるデータベース管理 - 永続ボリュームによるデータ保存 - Ingressサポート (オプション) - セキュアな環境変数管理 - リソース制限とヘルスチェック ## 前提条件 - Kubernetes 1.19+ - Helm 3.0+ - PersistentVolumeプロビジョナーのサポート (永続化を有効にする場合) ## ディレクトリ構造 ``` yourls-nginx/ ├── Chart.yaml ├── values.yaml ├── templates/ │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── service.yaml │ ├── configmap.yaml │ ├── secret.yaml │ ├── pvc.yaml │ ├── ingress.yaml │ └── NOTES.txt └── README.md ``` ## インストール ### 1. 依存関係の更新 ```bash helm dependency update ``` ### 2. 基本インストール ```bash helm install my-yourls ./yourls-nginx ``` ### 3. カスタム設定でインストール ```bash helm install my-yourls ./yourls-nginx \ --set yourls.config.site=https://短縮.example.com \ --set yourls.config.username=admin \ --set yourls.config.password=SecurePassword123 \ --set mysql.auth.password=SecureMySQLPassword ``` ### 4. values.yamlをカスタマイズしてインストール ```bash # values.yamlを編集 vim values.yaml # インストール helm install my-yourls ./yourls-nginx -f values.yaml ``` ## 設定項目 ### イメージ設定 | パラメータ | 説明 | デフォルト値 | |-----------|------|-------------| | `image.nginx.registry` | NGINXイメージのレジストリ | `docker.io` | | `image.nginx.repository` | NGINXイメージのリポジトリ | `nginx` | | `image.nginx.tag` | NGINXイメージのタグ | `1.29.3-alpine-perl` | | `image.yourls.registry` | YOURLSイメージのレジストリ | `docker.io` | | `image.yourls.repository` | YOURLSイメージのリポジトリ | `yourls` | | `image.yourls.tag` | YOURLSイメージのタグ | `1.10.2-fpm-alpine` | ### YOURLS設定 | パラメータ | 説明 | デフォルト値 | |-----------|------|-------------| | `yourls.config.site` | YOURLSのサイトURL | `https://yourls.example.com` | | `yourls.config.username` | 管理者ユーザー名 | `admin` | | `yourls.config.password` | 管理者パスワード | `admin` | | `yourls.config.cookiekey` | Cookieの暗号化キー | `modify_this_random_string` | | `yourls.persistence.enabled` | データの永続化 | `true` | | `yourls.persistence.size` | PVCのサイズ | `1Gi` | ### MySQL設定 | パラメータ | 説明 | デフォルト値 | |-----------|------|-------------| | `mysql.enabled` | MySQLサブチャートの有効化 | `true` | | `mysql.auth.database` | データベース名 | `yourls` | | `mysql.auth.username` | データベースユーザー名 | `yourls` | | `mysql.auth.password` | データベースパスワード | `yourls` | | `mysql.primary.persistence.size` | PVCのサイズ | `8Gi` | ### Ingress設定 | パラメータ | 説明 | デフォルト値 | |-----------|------|-------------| | `ingress.enabled` | Ingressの有効化 | `false` | | `ingress.className` | Ingress class名 | `nginx` | | `ingress.hosts[0].host` | ホスト名 | `yourls.example.com` | ## アップグレード ```bash helm upgrade my-yourls ./yourls-nginx -f values.yaml ``` ## アンインストール ```bash helm uninstall my-yourls ``` ## セキュリティに関する注意事項 1. **デフォルトパスワードの変更**: インストール後すぐにデフォルトの管理者パスワードを変更してください 2. **COOKIEKEY**: `yourls.config.cookiekey`をランダムな文字列に変更してください 3. **データベースパスワード**: 本番環境では強力なパスワードを設定してください 4. **HTTPS**: 本番環境では必ずIngressでTLS/HTTPSを有効にしてください ## トラブルシューティング ### Podの状態確認 ```bash kubectl get pods -l app.kubernetes.io/name=yourls-nginx kubectl logs -c nginx kubectl logs -c yourls ``` ### データベース接続の確認 ```bash kubectl exec -it -c yourls -- env | grep YOURLS_DB ``` ### 永続ボリュームの確認 ```bash kubectl get pvc kubectl describe pvc ```