cron.jobs(配列)にジョブを定義すると、php-fpmと同じPHPイメージを使う Kubernetes CronJobをジョブごとに生成する。 - templates/cronjob.yaml(新規): PVCルートを/var/wwwにマウントし、 externalDatabase/phpEnv/extraEnv/extraEnvFrom/SELENIUM_URLをphp-fpm コンテナと同じ内容で注入。smtp.enabled時はmsmtpも自動導入。 - templates/_helpers.tpl: phpfpm.cron.name/selectorLabelsを追加。 Selenium分離と同じ理由で、生成PodのラベルをDeploymentのselectorと 衝突しないバリアント名(<chart>-cron)にする。 - values.yaml: cronセクションを追加(既定は空配列で無効)。 - README.md: パラメータ表と使用例、Composer/Pythonとの併用時の注意点 (デフォルトの使い捨て領域はCronJobから見えないため、永続化パスへの 変更が必要)を追加。 templates/deployment.yamlは変更していない(既存Deploymentへの影響なし)。 手動リリース 8.5.10-e。
This commit is contained in:
@@ -187,6 +187,43 @@ v8.5.10-b以降、Seleniumは独立したDeployment/Service(`<release>-phpfpm-
|
||||
|
||||
`selenium.enabled: true`のとき、php-fpmコンテナの`SELENIUM_URL`環境変数は自動的にこのServiceを指す値(`http://<release>-phpfpm-selenium:4444/wd/hub`)に設定される。`phpEnv.SELENIUM_URL`を独自に指定していても、この自動注入された値が優先される。
|
||||
|
||||
### Cron(定期実行)設定
|
||||
|
||||
`cron.jobs`に1件以上定義すると、php-fpmと同じPHPイメージ(`image.php`)を使ってスケジュール実行するKubernetes CronJobが、ジョブごとに1つずつ作成される。既定は空配列で、何も作成されない。
|
||||
|
||||
| パラメータ | 説明 | デフォルト |
|
||||
|-----------|------|-----------|
|
||||
| `cron.jobs` | CronJob定義の配列 | `[]` |
|
||||
| `cron.jobs[].name` | ジョブ名(英数字とハイフン、CronJob名の一部に使用) | 必須 |
|
||||
| `cron.jobs[].schedule` | 標準cron形式のスケジュール | 必須 |
|
||||
| `cron.jobs[].command` | 実行するシェルコマンド(文字列) | 必須 |
|
||||
| `cron.jobs[].timeZone` | タイムゾーン(Kubernetes 1.27+) | 省略時UTC |
|
||||
| `cron.jobs[].concurrencyPolicy` | `Allow`/`Forbid`/`Replace` | `Forbid` |
|
||||
| `cron.jobs[].restartPolicy` | `OnFailure`/`Never` | `OnFailure` |
|
||||
| `cron.jobs[].successfulJobsHistoryLimit` | 成功ジョブの保持数 | `3` |
|
||||
| `cron.jobs[].failedJobsHistoryLimit` | 失敗ジョブの保持数 | `1` |
|
||||
| `cron.jobs[].activeDeadlineSeconds` | 実行タイムアウト(秒) | 省略可 |
|
||||
| `cron.jobs[].suspend` | `true`でこのジョブだけ一時停止 | `false` |
|
||||
| `cron.jobs[].resources` | CPU/メモリ requests・limits | `resources.phpfpm`を流用 |
|
||||
|
||||
```yaml
|
||||
# values.yaml
|
||||
cron:
|
||||
jobs:
|
||||
- name: daily-report
|
||||
schedule: "0 18 * * *"
|
||||
timeZone: "Asia/Tokyo"
|
||||
command: "php /var/www/html/cron/daily-report.php"
|
||||
```
|
||||
|
||||
> **📌 CronJobの構成について**
|
||||
> - PVCルートを`/var/www`にマウントする(php-fpmコンテナと同じ)。`html/`配下の公開コード、または非公開ディレクトリのスクリプト・出力先どちらも利用できる。
|
||||
> - `externalDatabase` / `phpEnv` / `extraEnv` / `extraEnvFrom` / `SELENIUM_URL`(selenium有効時)は、php-fpmコンテナと同じ内容が渡される。
|
||||
> - `smtp.enabled: true`の場合、CronJobのPodでも自動的にmsmtpを導入してmsmtprcを配置するため、PHPの`mail()`関数がそのまま使える。
|
||||
> - **Composer/Pythonとの併用**: `composer.workingDir`/`python.venvDir`が既定の`/composer`・`/venv`(PVC非マウントの使い捨て領域)のままだと、php-fpmの常駐Pod内にしか存在しないためCronJobからは使えない。CronJobから使いたい場合は`composer.workingDir: "/var/www/composer"`のように`/var/www`配下へ変更し、PVC上に永続化すること。
|
||||
> - CronJobの名前は52文字を超えないよう自動的に切り詰められる(Kubernetesの制約)。`cron.jobs[].name`は短く分かりやすい名前にすること。
|
||||
> - 生成されるPodのラベル(`app.kubernetes.io/name`)は`<chart>-cron`というバリアント名になっており、nginx/php-fpmのDeploymentのselectorとは一致しない(Selenium分離と同じ設計)。
|
||||
|
||||
### 外部データベース設定
|
||||
|
||||
| パラメータ | 説明 | デフォルト |
|
||||
|
||||
Reference in New Issue
Block a user