feat: IngressのproxyBodySizeもuploadMaxSizeに自動連動 (v8.5.9-c)
Helm Chart Release / release-chart (push) Successful in 5s
Helm Chart Release / release-chart (push) Successful in 5s
uploadMaxSizeでnginx/PHPのアップロード上限は連動していたが、 ingress.enabled: true の場合、ingress-nginx側にも独自の上限 (デフォルト1MB)があり、そこで先に弾かれるケースが残っていた。 templates/ingress.yaml で、ingress.annotationsに nginx.ingress.kubernetes.io/proxy-body-sizeが明示指定されていない 場合、uploadMaxSizeの値を自動的に付与するようにした(merge使用、 明示指定があればそちらを優先)。 これでuploadMaxSize 1箇所の設定でnginx・PHP・Ingressの3箇所すべてに 反映される。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
|||||||
|
# Changelog - Version 8.5.9-c
|
||||||
|
|
||||||
|
## 新機能
|
||||||
|
|
||||||
|
### Ingressのアップロードサイズ上限も uploadMaxSize に自動連動
|
||||||
|
|
||||||
|
v8.5.9-b で `uploadMaxSize` によりnginx/PHPのアップロード上限を連動させましたが、`ingress.enabled: true` で運用している場合、Ingressコントローラー(ingress-nginx)にも独自のリクエストサイズ上限(デフォルト1MB)があり、そこで先に弾かれてしまうケースが残っていました。
|
||||||
|
|
||||||
|
**対応**: `templates/ingress.yaml` で、`ingress.annotations` に `nginx.ingress.kubernetes.io/proxy-body-size` が明示指定されていない場合、`uploadMaxSize` の値を自動的に付与するようにしました。ユーザーが `ingress.annotations` に明示的に指定した場合はそちらが優先されます。
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# 何も指定しなくても、Ingressにも uploadMaxSize の値(デフォルト100m)が反映される
|
||||||
|
uploadMaxSize: "100m"
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
```
|
||||||
|
|
||||||
|
これにより、`uploadMaxSize` 1箇所の設定で以下すべてに反映されます:
|
||||||
|
|
||||||
|
- nginx(Podコンテナ内)の `client_max_body_size`
|
||||||
|
- PHPの `upload_max_filesize` / `post_max_size`
|
||||||
|
- ingress-nginxの `nginx.ingress.kubernetes.io/proxy-body-size`
|
||||||
|
|
||||||
|
## 互換性
|
||||||
|
|
||||||
|
- Ingressコントローラーがingress-nginx以外の場合、このアノテーションは無視されます。該当コントローラー向けの設定を `ingress.annotations` に明示的に指定してください。
|
||||||
|
- 既存で `ingress.annotations` に独自の `proxy-body-size` を指定している場合、その値がそのまま優先されるため影響ありません。
|
||||||
|
|
||||||
|
## アップグレード手順
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm repo update
|
||||||
|
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.9-c -f values.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**リリース日**: 2026-08-06
|
||||||
|
**担当**: プロサーバーエンジニア(Claude)
|
||||||
@@ -22,6 +22,12 @@ Raspberry Pi などのベアメタルで稼働することを想定した、Kube
|
|||||||
|
|
||||||
## チャート改修履歴
|
## チャート改修履歴
|
||||||
|
|
||||||
|
### Ingressのproxy-body-sizeもuploadMaxSizeに連動(2026-08-06, v8.5.9-c)
|
||||||
|
|
||||||
|
v8.5.9-bのフォローアップ。`templates/ingress.yaml` で `merge (deepCopy .Values.ingress.annotations) (dict "nginx.ingress.kubernetes.io/proxy-body-size" .Values.uploadMaxSize)` を使い、ユーザーが明示指定していなければ `uploadMaxSize` をIngressの `proxy-body-size` にも自動反映。明示指定があればそちらが優先(sprigのmergeはdst=ユーザー指定annotationsが優先、srcのデフォルト値は不足分のみ補う)。これで `uploadMaxSize` 1箇所でnginx・PHP・Ingressの3箇所すべてが揃う。
|
||||||
|
|
||||||
|
**対象ファイル**: `templates/ingress.yaml`, `values.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.9-c.md`
|
||||||
|
|
||||||
### uploadMaxSize の追加(2026-08-06, v8.5.9-b)
|
### uploadMaxSize の追加(2026-08-06, v8.5.9-b)
|
||||||
|
|
||||||
nginxの `client_max_body_size` とPHPの `upload_max_filesize`/`post_max_size` を1つの `uploadMaxSize`(デフォルト `"100m"`)で連動させるパラメータを追加。片方だけ上げてももう片方の上限でアップロードが無言で失敗する問題への対応。PHP側は起動時に `/usr/local/etc/php/conf.d/99-uploads.ini` を常時生成(他機能の有効/無効に依存しない)。memory_limitは対象外(別途必要なら将来検討)。
|
nginxの `client_max_body_size` とPHPの `upload_max_filesize`/`post_max_size` を1つの `uploadMaxSize`(デフォルト `"100m"`)で連動させるパラメータを追加。片方だけ上げてももう片方の上限でアップロードが無言で失敗する問題への対応。PHP側は起動時に `/usr/local/etc/php/conf.d/99-uploads.ini` を常時生成(他機能の有効/無効に依存しない)。memory_limitは対象外(別途必要なら将来検討)。
|
||||||
|
|||||||
+1
-1
@@ -2,6 +2,6 @@ apiVersion: v2
|
|||||||
name: phpfpm
|
name: phpfpm
|
||||||
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
|
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
|
||||||
type: application
|
type: application
|
||||||
version: 8.5.9-b
|
version: 8.5.9-c
|
||||||
appVersion: "8.5.9"
|
appVersion: "8.5.9"
|
||||||
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
|
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
|
||||||
|
|||||||
@@ -111,7 +111,10 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx
|
|||||||
| `uploadMaxSize` | アップロード最大サイズ(nginx/PHP両方に反映) | `"100m"` |
|
| `uploadMaxSize` | アップロード最大サイズ(nginx/PHP両方に反映) | `"100m"` |
|
||||||
|
|
||||||
> **📌 アップロードサイズ上限について**
|
> **📌 アップロードサイズ上限について**
|
||||||
> `uploadMaxSize` の値は、nginxの `client_max_body_size` と、PHPの `upload_max_filesize` / `post_max_size` の**両方**に同時に反映されます。片方だけ上げてももう片方の上限で失敗するため、この1つの値で揃える設計です。
|
> `uploadMaxSize` の値は、以下**すべて**に同時に反映されます。どれか一つでも小さいと、そこで上限に達して失敗するため、この1つの値で揃える設計です。
|
||||||
|
> - nginx(Podコンテナ内)の `client_max_body_size`
|
||||||
|
> - PHPの `upload_max_filesize` / `post_max_size`
|
||||||
|
> - `ingress.enabled: true` の場合、ingress-nginxの `nginx.ingress.kubernetes.io/proxy-body-size`(明示指定があればそちらが優先)
|
||||||
>
|
>
|
||||||
> 単位は `k` / `m` / `g`(大文字小文字問わず)が使用できます(例: `"200m"`, `"1g"`)。
|
> 単位は `k` / `m` / `g`(大文字小文字問わず)が使用できます(例: `"200m"`, `"1g"`)。
|
||||||
>
|
>
|
||||||
@@ -221,6 +224,9 @@ PHP 側では `$_ENV['KEY']` または `getenv('KEY')` で取得できます。
|
|||||||
| `ingress.hosts` | ホスト設定 | `[{host: "example.tld"}]` |
|
| `ingress.hosts` | ホスト設定 | `[{host: "example.tld"}]` |
|
||||||
| `ingress.tls` | TLS設定 | `[]` |
|
| `ingress.tls` | TLS設定 | `[]` |
|
||||||
|
|
||||||
|
> **📌 Ingressのアップロードサイズ上限**
|
||||||
|
> `ingress.enabled: true` の場合、`nginx.ingress.kubernetes.io/proxy-body-size` アノテーションが `uploadMaxSize` の値で**自動的に**付与されます(明示的に `ingress.annotations` へ指定した場合はそちらが優先されます)。Ingressコントローラーがnginx以外の場合は、`ingress.annotations` にそのコントローラー向けの上限設定を明示的に指定してください。
|
||||||
|
|
||||||
### Nginx設定
|
### Nginx設定
|
||||||
|
|
||||||
| パラメータ | 説明 | デフォルト |
|
| パラメータ | 説明 | デフォルト |
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
{{- include "phpfpm.labels" . | nindent 4 }}
|
{{- include "phpfpm.labels" . | nindent 4 }}
|
||||||
annotations:
|
annotations:
|
||||||
{{- toYaml .Values.ingress.annotations | nindent 4 }}
|
{{- /* uploadMaxSize を ingress-nginx の proxy-body-size に自動反映(明示指定があればそちらを優先) */}}
|
||||||
|
{{- $ingressAnnotations := merge (deepCopy .Values.ingress.annotations) (dict "nginx.ingress.kubernetes.io/proxy-body-size" .Values.uploadMaxSize) }}
|
||||||
|
{{- toYaml $ingressAnnotations | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
{{- if .Values.ingress.className }}
|
{{- if .Values.ingress.className }}
|
||||||
ingressClassName: {{ .Values.ingress.className }}
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
|||||||
+8
-4
@@ -23,20 +23,24 @@ service:
|
|||||||
port: 80
|
port: 80
|
||||||
|
|
||||||
# アップロード可能な最大サイズ
|
# アップロード可能な最大サイズ
|
||||||
# nginxの client_max_body_size と、PHPの upload_max_filesize / post_max_size に
|
# 以下3箇所に同じ値を反映する(どれか一つでも小さいと、そこで上限に達して失敗するため):
|
||||||
# 同じ値を反映する(両方を揃えないと、どちらか一方の上限で失敗するため)
|
# - nginx(Podコンテナ内)の client_max_body_size
|
||||||
|
# - PHPの upload_max_filesize / post_max_size
|
||||||
|
# - ingress.enabled: true の場合、ingress-nginxの nginx.ingress.kubernetes.io/proxy-body-size
|
||||||
# 単位はnginx/PHP共通でk/m/g(大文字小文字問わず)が使用可能(例: "100m", "1g")
|
# 単位はnginx/PHP共通でk/m/g(大文字小文字問わず)が使用可能(例: "100m", "1g")
|
||||||
uploadMaxSize: "100m"
|
uploadMaxSize: "100m"
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: false
|
enabled: false
|
||||||
className: ""
|
className: ""
|
||||||
|
# nginx.ingress.kubernetes.io/proxy-body-size は uploadMaxSize の値が自動的に付与されるため
|
||||||
|
# 明示的に指定する必要はない(Ingress側の上限もnginx/PHPと揃う)
|
||||||
|
# 別の値にしたい場合や別コントローラーを使う場合は、ここに明示指定すれば上書きされる
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# {
|
# {
|
||||||
# acme.cert-manager.io/http01-ingress-class: "nginx",
|
# acme.cert-manager.io/http01-ingress-class: "nginx",
|
||||||
# cert-manager.io/cluster-issuer: "letsencrypt-issuer",
|
# cert-manager.io/cluster-issuer: "letsencrypt-issuer",
|
||||||
# nginx.ingress.kubernetes.io/from-to-www-redirect: "true",
|
# nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
|
||||||
# nginx.ingress.kubernetes.io/proxy-body-size: "100m"
|
|
||||||
# }
|
# }
|
||||||
hosts:
|
hosts:
|
||||||
- host: example.tld
|
- host: example.tld
|
||||||
|
|||||||
Reference in New Issue
Block a user