fix: Seleniumを独立Deployment/Serviceに分離しresourcesの死んだ設定を修正
Helm Chart Release / release-chart (push) Successful in 6s
Helm Chart Release / release-chart (push) Successful in 6s
selenium.enabled=true構成でphp-fpmのCrashLoopBackOffとサイト完全停止が続いた件を調査し、2つの設計上の欠陥を確認した。(1) resources values キーがテンプレートで一切参照されておらず、全コンテナがQoS Class: BestEffortで動作しOOM Killされやすい状態だった。(2) nginx/php-fpm/SeleniumをすべてSelenium同一Podで起動しており、Kubernetesの Pod Ready判定(全コンテナのAND)により、Seleniumだけが不調でもPod全体がServiceのEndpointsから外れ、Seleniumを使わない静的ページ配信まで巻き込まれてサービス全体が停止していた。対応: Seleniumを独立Deployment(<release>-phpfpm-selenium)/Serviceに分離し、SELENIUM_URLを自動注入。resourcesをnginx/phpfpm/selenium個別に構造化して実際にコンテナへ反映されるよう修正。詳細はCHANGELOG-8.5.10-b.md参照。
This commit is contained in:
+36
-2
@@ -179,9 +179,27 @@ python:
|
||||
# - "python3-dev"
|
||||
# - "jpeg-dev"
|
||||
|
||||
# Selenium設定(レガシー互換性維持)
|
||||
# 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
|
||||
@@ -254,7 +272,23 @@ smtp:
|
||||
existingMsmtprcSecret: ""
|
||||
existingMsmtprcSecretKey: "msmtprc"
|
||||
|
||||
resources: {}
|
||||
# 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に環境変数として渡される
|
||||
|
||||
Reference in New Issue
Block a user