Files
phpfpm/values.yaml
T
claude c7397b3c9d
Helm Chart Release / release-chart (push) Successful in 6s
feat: ingress.tls[].secretNameをhostから自動導出できるように変更
ingress.hosts[].hostは既にYAMLアンカー(&appDomain)でingress.tls[].hosts
と値を共有できていたが、secretNameは独立した文字列指定が必須で、
ドメイン変更時に別途書き換えが必要だった。

secretNameを省略可能にし、未指定時はそのエントリの最初のhostから
自動生成する(.を-に置換して-tlsを付与。例: example.tld → example-tld-tls)。
明示的に指定した場合はそちらが優先されるため既存挙動は変わらない。

手動リリース 8.5.10-d。
2026-09-27 15:28:15 +09:00

323 lines
12 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
replicaCount: 1
image:
nginx:
registry: docker.io
repository: nginx
tag: "1.31.6-alpine-perl"
pullPolicy: IfNotPresent
php:
registry: docker.io
repository: php
tag: "8.5.10-fpm-alpine3.24"
pullPolicy: IfNotPresent
selenium:
registry: docker.io
repository: selenium/standalone-chromium
tag: "152.0-chromedriver-152.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
# type: LoadBalancer
port: 80
# アップロード可能な最大サイズ
# 以下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")
uploadMaxSize: "100m"
ingress:
enabled: false
className: ""
# nginx.ingress.kubernetes.io/proxy-body-size は uploadMaxSize の値が自動的に付与されるため
# 明示的に指定する必要はない(Ingress側の上限もnginx/PHPと揃う)
# 別の値にしたい場合や別コントローラーを使う場合は、ここに明示指定すれば上書きされる
annotations:
{
acme.cert-manager.io/http01-ingress-class: "nginx",
cert-manager.io/cluster-issuer: "letsencrypt-issuer",
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
}
hosts:
- host: &appDomain example.tld
paths:
- path: /
pathType: Prefix
# secretNameは省略可能。省略した場合、そのエントリの最初のhostの"."を"-"に
# 置換し"-tls"を付与した値が自動生成される(例: example.tld → example-tld-tls)。
# appDomainの変更だけでhostとsecretNameが揃うため、通常は明示指定しなくてよい。
# 別の証明書Secret名にしたい場合のみ secretName: "your-secret-name" を追加する。
tls:
[
{
hosts: [*appDomain]
}
]
persistence:
enabled: true
accessMode: ReadWriteOnce
size: 1Gi
nginx:
customConfig:
enabled: false
snippet: |-
# リアルIP転送設定(ベアメタル/LoadBalancer環境向け)
forwardRealIP:
# リアルIP取得機能を有効化
enabled: true
# リアルIPを取得するヘッダー名
# LoadBalancer/Ingressによって異なる
# - X-Real-IP: シンプルな1段プロキシ
# - X-Forwarded-For: 多段プロキシ対応(推奨)
header: "X-Forwarded-For"
# 再帰的にリアルIPを検索(多段プロキシ環境で推奨)
recursive: true
# 信頼するプロキシのネットワーク範囲
# ベアメタルクラスターでは、PodネットワークとServiceネットワークを指定
trustedProxies:
- "10.0.0.0/8" # プライベートネットワーク
- "172.16.0.0/12" # プライベートネットワーク
- "192.168.0.0/16" # プライベートネットワーク
# 追加で信頼するプロキシ(環境に応じてカスタマイズ)
additionalTrustedProxies: []
# - "203.0.113.0/24" # 外部LoadBalancerなど
# Composer設定
composer:
# Composerを使用するかどうか
enabled: false
# Composerの導入先ディレクトリ(composer.json / vendor の配置先)
# デフォルトの /composer はWebルート外かつPVCにマウントされない「使い捨て」領域:
# - vendor/ や composer.json がWeb経由で公開されない
# - Pod再起動のたびにクリーンな環境へ再構築されるため、
# 不正アクセスでマルウェアを書き込まれても再起動で消える
#
# 【重要】PHPコードからの autoload.php の読み込み方:
# require_once '/composer/vendor/autoload.php';
#
# PVC上に永続化したい場合は /var/www 配下(例: "/var/www/composer")を指定
# 旧来の動作(Webルート直下に導入)へ戻す場合は "/var/www/html" を指定
workingDir: "/composer"
# Composerでインストールするパッケージ
# packages配列が空の場合、composer.jsonを使用
packages: []
# - "monolog/monolog:^2.0"
# - "guzzlehttp/guzzle:^7.0"
# composer.jsonファイルを使用する場合
useComposerJson: false
# composer.jsonの内容(useComposerJson: trueの場合に使用)
composerJson: |
{
"require": {
"monolog/monolog": "^2.0"
}
}
# composer.lockファイルの内容(オプション、再現性を保証)
composerLock: ""
# Composerのインストールオプション
installOptions: "--no-dev --optimize-autoloader"
# 追加のAPKパッケージ(Composer依存関係のビルドに必要な場合)
additionalApkPackages: []
# - "libpng-dev"
# - "libjpeg-turbo-dev"
# 追加のPHP拡張(docker-php-ext-installで導入)
additionalPhpExtensions: []
# - "gd"
# - "zip"
# Python設定(オプション、PHPからPythonスクリプトを呼び出す用途)
python:
# Pythonを使用するかどうか
enabled: false
# Python仮想環境(venv)の導入先ディレクトリ
# デフォルトの /venv はWebルート外かつPVCにマウントされない「使い捨て」領域:
# - Pod再起動のたびにクリーンな環境へ再構築される(Composerと同じ設計)
#
# 【重要】PHPからのPython呼び出し方(execを利用):
# exec('/venv/bin/python3 /path/to/script.py 2>&1', $output, $exitCode);
#
# PVC上に永続化したい場合は /var/www 配下(例: "/var/www/venv")を指定
venvDir: "/venv"
# pipでインストールするパッケージ
# packages配列が空の場合、requirements.txtを使用
packages: []
# - "requests>=2.31.0"
# - "pillow"
# requirements.txtを使用する場合
useRequirementsTxt: false
# requirements.txtの内容(useRequirementsTxt: trueの場合に使用)
requirementsTxt: |
requests>=2.31.0
# pip installのオプション
installOptions: "--no-cache-dir"
# 追加のAPKパッケージ(ネイティブ拡張のビルドに必要な場合、例: numpy等)
additionalApkPackages: []
# - "gcc"
# - "musl-dev"
# - "python3-dev"
# - "jpeg-dev"
# Selenium設定
# v8.5.10-b以降、Selenium(有効時)はnginx/php-fpmと同一Podのサイドカーではなく、
# 独立したDeployment/Service(<release>-phpfpm-selenium)として起動する。
# 理由: サイドカー方式だとSelenium単体の不調(起動失敗・OOM等)でPod全体がReady=false
# になり、Seleniumを使わない静的ページ配信まで巻き込まれてサービス全体が止まっていた。
# php-fpmコンテナのSELENIUM_URL環境変数は、enabled:true時に自動でこのServiceを指す
# (phpEnvで独自に設定しても、こちらの値が優先される)。
selenium:
enabled: false
# Selenium Deployment自体のレプリカ数
replicaCount: 1
# Chromiumはメモリを多く使う。ノードのメモリ枯渇によるOOM Killを防ぐため、
# 実運用では必ずrequests/limitsを設定することを推奨する(下記resourcesセクション参照)。
resources: {}
# trueにすると、SeleniumコンテナにもPVCのhtmlサブパスを/var/www/htmlとしてマウントする
# (ブラウザのダウンロード先を公開ディレクトリに置きたい場合など)。別Podからの同時マウント
# になるため、有効にする場合はpersistence.accessModeをReadWriteMany
# (NFSバックエンドのStorageClassなら対応可能)にする必要がある。
# 通常のスクレイピング用途(スクリーンショット等をstorage/等の非公開領域に保存する場合)
# では不要なため、既定はfalse。
mountHtml: false
externalDatabase:
enabled: false
host: mariadb-hostname
port: 3306
database: dbname
username: user
password: pass
# SMTP設定(PHPのメール送信用)
smtp:
enabled: false
# SMTPサーバー設定
host: "smtp.example.com"
# プロトコルとポート設定
# - auto: 自動判定(推奨)
# - starttls: STARTTLS(ポート587)
# - tls: SSL/TLS(ポート465)
protocol: "auto"
# ポート番号(通常は自動判定されるため手動設定は不要)
# protocol: auto の場合は以下の値を参考に
# - 25: SMTP (非暗号化)
# - 587: SMTP + STARTTLS (暗号化)
# - 465: SMTP + SSL/TLS (暗号化)
port: 587
# 認証設定
auth:
enabled: true
username: "smtp-user@example.com"
# password はSecretで管理する
# values-secret.yaml などで以下のように指定:
# smtp:
# auth:
# password: "your-smtp-password"
password: ""
# 【外部Secret連携】チャートで msmtprc を生成しつつ、パスワードファイルだけ
# 既存 Secret から取りたい場合に指定する。
# 例: secret-manager チャートが配布する cred-<プロバイダ> の SMTP_PASSWORD キー
# existingSecret: "cred-gmail"
# existingSecretKey: "SMTP_PASSWORD"
# 指定時は smtp.auth.password と自作の -smtp Secret は使われない。
existingSecret: ""
existingSecretKey: "password"
# 送信元アドレス(固定値)
# PHPプログラムで mail() 関数の $additional_parameters で上書き可能
# 例: mail($to, $subject, $body, $headers, "-f user@example.com")
from: "noreply@example.com"
# TLS/SSL設定
tls:
# 証明書検証を有効化(本番環境では true を推奨)
verify: true
# 自己署名証明書を許可する場合(テスト環境のみ)
allowSelfSigned: false
# 【外部Secret連携】完成済みの msmtprc がまるごと入っている既存 Secret を使う。
# 指定するとチャート内の msmtprc 生成(configmap-smtp)は行わず、
# host / port / protocol / auth.* / tls.* は無視される(from だけ PHP の
# sendmail_from 用に使用)。
# secret-manager チャートが cred-<プロバイダ> に生成する msmtprc キーを
# そのまま利用できる:
# existingMsmtprcSecret: "cred-gmail"
# existingMsmtprcSecretKey: "msmtprc"
existingMsmtprcSecret: ""
existingMsmtprcSecretKey: "msmtprc"
# nginx / php-fpm コンテナの CPU/メモリ requests・limits。
# v8.5.10-b より前は本キーがテンプレート側で参照されておらず(死んだ設定)、
# 何を指定してもコンテナには一切反映されない不具合があった(既存デプロイは
# 全コンテナが requests/limits なしの QoS Class: BestEffort になっていた)。
# BestEffortはノードのメモリ逼迫時にOOM Killの対象になりやすいため、
# 本番運用では requests/limits の設定を推奨する。例:
# resources:
# nginx:
# requests: { cpu: "50m", memory: "64Mi" }
# limits: { memory: "128Mi" }
# phpfpm:
# requests: { cpu: "100m", memory: "256Mi" }
# limits: { memory: "512Mi" }
# (selenium用は selenium.resources を参照。Chromiumは256Mi等では確実に不足する)
resources:
nginx: {}
phpfpm: {}
# PHP-FPM コンテナに渡す任意の環境変数
# DB接続情報(externalDatabase)と同様に、values.yamlで設定した値がPHPに環境変数として渡される
# PHPからは $_ENV['KEY'] または getenv('KEY') で取得可能
phpEnv: {}
# API_KEY: "your-api-key"
# STRIPE_SECRET: "sk_live_xxxxxxxxxxxxxxxx"
# REDIS_URL: "redis://localhost:6379"
# SOME_SERVICE_URL: "https://api.example.com"
# 既存の Secret / ConfigMap をまるごと環境変数として PHP-FPM コンテナへ注入する(envFrom)。
# 別リポジトリの secret-manager チャートが各ネームスペースへ配布する
# cred-<名前> Secret(API キー等)をそのまま読み込む用途を想定。
# 変更は secret-manager 側を更新するだけで全プロジェクトに反映できる。
extraEnvFrom: []
# - secretRef:
# name: cred-gemini
# - secretRef:
# name: cred-openai
# - configMapRef:
# name: some-shared-config
# 個別の環境変数を追加する(生の env エントリ配列。value / valueFrom(secretKeyRef 等) 使用可)。
extraEnv: []
# - name: OPENAI_API_KEY
# valueFrom:
# secretKeyRef:
# name: cred-openai
# key: OPENAI_API_KEY