155 lines
4.5 KiB
Markdown
155 lines
4.5 KiB
Markdown
# 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 <pod-name> -c nginx
|
|
kubectl logs <pod-name> -c yourls
|
|
```
|
|
|
|
### データベース接続の確認
|
|
|
|
```bash
|
|
kubectl exec -it <pod-name> -c yourls -- env | grep YOURLS_DB
|
|
```
|
|
|
|
### 永続ボリュームの確認
|
|
|
|
```bash
|
|
kubectl get pvc
|
|
kubectl describe pvc <pvc-name>
|
|
```
|