# Changelog - Version 8.5.10-c ## 不具合修正 ### v8.5.10-b の Selenium分離が既存リリースのアップグレードを壊す問題を修正 v8.5.10-b で Selenium を独立 Deployment/Service に分離した際、既存の nginx/php-fpm Deployment の `spec.selector.matchLabels` に `app.kubernetes.io/component: web` を 追加した。しかし **`Deployment.spec.selector` は作成後 immutable** であり、 既存リリースを `helm upgrade` すると次のエラーで失敗する。 ``` cannot patch "-phpfpm" with kind Deployment: Deployment.apps "-phpfpm" is invalid: spec.selector: Invalid value: ...: field is immutable. ``` **対応** - 既存の nginx/php-fpm Deployment の `spec.selector.matchLabels` は 元の内容(`app.kubernetes.io/name` + `app.kubernetes.io/instance` のみ)に戻し、 以後も変更しない。 - Selenium 側は `app.kubernetes.io/component` ラベルではなく、 **`app.kubernetes.io/name` 自体を `-selenium` という別名にする**方式に変更した (新ヘルパー `phpfpm.selenium.name` / `phpfpm.selenium.selectorLabels`。 `templates/_helpers.tpl`)。component ラベルを足すだけの設計だと、Selenium の Pod も nginx/php-fpm 側 Deployment の selector(name+instance)に一致してしまい、 2つの Deployment(ReプリカSet)が同じ Pod 集合を取り合う selector 重複を起こすため、 name 自体を variant にして構造的に重複を防止する。 - `templates/deployment-selenium.yaml` / `templates/service-selenium.yaml` の selector・pod template labels をこの新ヘルパーに合わせて修正。 `app.kubernetes.io/component: selenium` は情報用のラベルとして pod template には 引き続き付与する(selector には使わない。README の `kubectl logs -l app.kubernetes.io/component=selenium` 等の運用コマンドはそのまま使える)。 - メインの Service(`-phpfpm`)の selector に残した `app.kubernetes.io/component: web` は Service の selector なので immutable 制約は 受けず、そのまま維持している(Selenium 側が別名になったことで実質不要になったが、 害はないため多層防御として残す)。 **v8.5.10-b をまだ適用していない場合**: 8.5.10-b は上記のバグを含むため、 直接 **8.5.10-c 以降**を適用すること。 **v8.5.10-b の適用に失敗した場合**(今回のエラーが出た場合): リリースは アップグレードに失敗した時点のリビジョンのままのはずなので、Chart version を `8.5.10-c` に変更して再度アップグレードすればよい(追加の手動復旧は不要)。 **対象ファイル**: `templates/_helpers.tpl`, `templates/deployment.yaml`, `templates/deployment-selenium.yaml`, `templates/service-selenium.yaml`, `Chart.yaml`, `CHANGELOG-8.5.10-c.md` ## アップグレード手順 ```bash helm repo update helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.10-c -f values.yaml ``` --- **リリース日**: 2026-09-26 **担当**: プロサーバーエンジニア(Claude)