diff --git a/CLAUDE.md b/CLAUDE.md index 951f6c3..ea59e8a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,6 +27,12 @@ Websites 組織の各サイト(e-learn.jp / fcdomain.com / hotels / tskholding ## チャート改修履歴 +### ingress.tls[].secretNameをhostから自動導出可能に(2026-09-27, v8.5.10-d) + +- **背景**: `ingress.hosts[].host` は既にYAMLアンカー(`&appDomain`)で `ingress.tls[].hosts` と値を共有できるようになっていたが、`ingress.tls[].secretName` は独立した文字列指定が必須で、ドメイン変更時に別途書き換えが必要だった。 +- **修正内容**: `templates/ingress.yaml` で `secretName` を省略可能にし、未指定時はそのエントリの最初のhostから自動生成する(`.`を`-`に置換して`-tls`を付与。例: `example.tld` → `example-tld-tls`)。明示的に指定した場合はそちらが優先される(後方互換)。デフォルトの`values.yaml`も自動導出を使う例に更新。 +- **対象ファイル**: `templates/ingress.yaml`, `values.yaml`, `README.md`, `Chart.yaml` + ### v8.5.10-bのDeployment.spec.selector変更が既存リリースのアップグレードを壊す不具合を修正(2026-09-26, v8.5.10-c) v8.5.10-bでnginx/php-fpm Deploymentのspec.selector.matchLabelsに`app.kubernetes.io/component: web`を追加したが、Deployment.spec.selectorは作成後immutableのため既存リリースの`helm upgrade`が「field is immutable」で失敗する不具合を確認・修正した。既存Deploymentのselectorは元の内容(name+instanceのみ)に戻し、Selenium側はcomponentラベルではなく`app.kubernetes.io/name`自体を`-selenium`という別名にする方式(新ヘルパー`phpfpm.selenium.name`/`phpfpm.selenium.selectorLabels`)に変更した。componentラベルだけを足す設計だと、SeleniumのPodもnginx/php-fpm側Deploymentのselector(name+instance)に一致してしまい2つのDeployment(ReplicaSet)が同じPod集合を取り合う選択重複を起こすため、name自体をvariantにして構造的に防止する。v8.5.10-bは未適用ならスキップしてv8.5.10-c以降を直接使うこと。 diff --git a/Chart.yaml b/Chart.yaml index 83b3d13..e125444 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -2,6 +2,6 @@ apiVersion: v2 name: phpfpm description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support type: application -version: 8.5.10-c +version: 8.5.10-d appVersion: "8.5.10" icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png diff --git a/README.md b/README.md index fb11598..3e60131 100644 --- a/README.md +++ b/README.md @@ -278,11 +278,15 @@ smtp: | `ingress.className` | IngressClass名 | `""` | | `ingress.annotations` | アノテーション | `{}` | | `ingress.hosts` | ホスト設定 | `[{host: "example.tld"}]` | -| `ingress.tls` | TLS設定 | `[]` | +| `ingress.tls` | TLS設定(`secretName`省略可) | `[]` | > **📌 Ingressのアップロードサイズ上限** > `ingress.enabled: true` の場合、`nginx.ingress.kubernetes.io/proxy-body-size` アノテーションが `uploadMaxSize` の値で**自動的に**付与されます(明示的に `ingress.annotations` へ指定した場合はそちらが優先されます)。Ingressコントローラーがnginx以外の場合は、`ingress.annotations` にそのコントローラー向けの上限設定を明示的に指定してください。 +> **📌 hostとTLS secretNameの共有** +> `ingress.hosts[].host` にYAMLアンカー(例: `&appDomain`)を付けておくと、`ingress.tls[].hosts` で `*appDomain` として再利用でき、ドメイン名を1箇所の変更で揃えられます(デフォルトのvalues.yamlも参照)。 +> さらに `ingress.tls[].secretName` は**省略可能**で、省略した場合はそのエントリの最初のhostから自動生成されます(`.`を`-`に置換して`-tls`を付与。例: `example.tld` → `example-tld-tls`)。別の証明書Secret名を使いたい場合のみ `secretName` を明示的に指定してください(指定時はそちらが優先されます)。 + ### Nginx設定 | パラメータ | 説明 | デフォルト | diff --git a/templates/ingress.yaml b/templates/ingress.yaml index 52e4fe1..c2fb3f8 100644 --- a/templates/ingress.yaml +++ b/templates/ingress.yaml @@ -31,7 +31,9 @@ spec: {{- if .Values.ingress.tls }} tls: {{- range .Values.ingress.tls }} - - secretName: {{ .secretName }} + {{- /* secretName省略時は、このエントリの最初のhostから自動生成する(例: example.tld → example-tld-tls)。 + 明示的に指定した場合はそちらを優先する。 */}} + - secretName: {{ .secretName | default (printf "%s-tls" ((first .hosts) | replace "." "-")) }} hosts: {{- range .hosts }} - {{ . }} diff --git a/values.yaml b/values.yaml index 3d61ae1..888e71d 100644 --- a/values.yaml +++ b/values.yaml @@ -47,11 +47,14 @@ ingress: paths: - path: / pathType: Prefix + # secretNameは省略可能。省略した場合、そのエントリの最初のhostの"."を"-"に + # 置換し"-tls"を付与した値が自動生成される(例: example.tld → example-tld-tls)。 + # appDomainの変更だけでhostとsecretNameが揃うため、通常は明示指定しなくてよい。 + # 別の証明書Secret名にしたい場合のみ secretName: "your-secret-name" を追加する。 tls: [ { - hosts: [*appDomain], - secretName: "example-tls" + hosts: [*appDomain] } ]