replicaCount: 1 image: nginx: registry: docker.io repository: nginx tag: "1.31.3-alpine-perl" pullPolicy: IfNotPresent php: registry: docker.io repository: php tag: "8.5.9-fpm-alpine3.24" pullPolicy: IfNotPresent selenium: registry: docker.io repository: selenium/standalone-chromium tag: "150.0-chromedriver-150.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: example.tld paths: - path: / pathType: Prefix tls: [] # [ # { # hosts: [ "example.com" ], # secretName: "example-tls" # } # ] persistence: enabled: true accessMode: ReadWriteOnce size: 1Gi nginx: customConfig: enabled: false snippet: |- # リアルIP転送設定(ベアメタル/LoadBalancer環境向け) forwardRealIP: # リアルIP取得機能を有効化 enabled: false # リアル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設定(レガシー互換性維持) selenium: enabled: 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: "" # 送信元アドレス(固定値) # 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 resources: {} # 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"