diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..89e973c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,38 @@ +# CLAUDE.md — phpfpm Helm Chart + +## リポジトリ概要 + +Raspberry Pi などのベアメタルで稼働することを想定した、Kubernetes 上で動作する Nginx + PHP-FPM の Helm チャート。 + +- **Gitea リポジトリ**: `ssh://git@192.168.9.65/helmchart/phpfpm` +- **Helm リポジトリ**: `https://git.cafepieters.com/api/packages/helmchart/helm` + +## 実行環境について + +**PHP の実行環境(インタープリタ)はこのリポジトリには含まれていない。** +チャートは `docker.io/php:-fpm-alpine` の公式イメージを Kubernetes 上で起動するものであり、PHP コードそのものは PVC(`/var/www/html`)に別途配置する必要がある。 + +## Git コミット情報 + +| 項目 | 値 | +|------|-----| +| 名前 | Claude | +| メール | claude@cafepieters.com | +| SSH キー | `P:\Claude\.ssh\id_claude` | + +## チャート改修履歴 + +### phpEnv — 汎用 PHP 環境変数サポート(2026-04-17) + +`values.yaml` に `phpEnv` セクションを追加し、DB 接続情報と同様に任意のキーと値を PHP-FPM コンテナの環境変数として渡せるようにした。 + +```yaml +phpEnv: + API_KEY: "your-api-key" + STRIPE_SECRET: "sk_live_..." + REDIS_URL: "redis://localhost:6379" +``` + +PHP 側では `$_ENV['API_KEY']` または `getenv('API_KEY')` で取得できる。 + +**対象ファイル**: `values.yaml`, `templates/deployment.yaml`, `README.md` diff --git a/README.md b/README.md index 311c6a1..47ea974 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,14 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx | `externalDatabase.username` | ユーザー名 | `user` | | `externalDatabase.password` | パスワード | `pass` | +### PHP 汎用環境変数(phpEnv) + +| パラメータ | 説明 | デフォルト | +|-----------|------|-----------| +| `phpEnv` | PHP-FPM コンテナに渡す任意の環境変数(キーと値のマップ) | `{}` | + +PHP 側では `$_ENV['KEY']` または `getenv('KEY')` で取得できます。 + ### SMTP設定 | パラメータ | 説明 | デフォルト | @@ -564,7 +572,43 @@ helm install production-api cafepieters/phpfpm \ --set externalDatabase.password=$(kubectl get secret db-password -o jsonpath='{.data.password}' | base64 -d) ``` -### 例10: SMTP設定によるメール送信 +### 例10: APIキーなどの任意環境変数を PHP に渡す(phpEnv) + +`phpEnv` を使うと、DB 接続情報と同様に任意のキーと値を PHP-FPM コンテナの環境変数として渡せます。 + +```yaml +# values.yaml +phpEnv: + API_KEY: "your-api-key" + STRIPE_SECRET: "sk_live_xxxxxxxxxxxxxxxx" + REDIS_URL: "redis://localhost:6379" + EXTERNAL_SERVICE_URL: "https://api.example.com" +``` + +**PHPでの使用例**: + +```php + -c php-fpm -- env | grep -E "API_|STRIPE_|REDIS_" +``` + +**注意事項**: +- 機密性の高い値(APIキー、シークレット等)は `--set phpEnv.KEY=value` でデプロイ時に注入するか、Kubernetes の Secret を別途作成して参照することを推奨します。 +- `phpEnv` の値はすべてプレーンテキストとして環境変数に設定されます(externalDatabase の password のみ Secret 経由)。 + +### 例11: SMTP設定によるメール送信 PHPアプリケーションからSMTP経由でメール送信を行う設定です。 diff --git a/templates/deployment.yaml b/templates/deployment.yaml index a0cf210..979148c 100644 --- a/templates/deployment.yaml +++ b/templates/deployment.yaml @@ -220,6 +220,10 @@ spec: name: {{ include "phpfpm.fullname" . }}-db-secret key: {{ include "phpfpm.fullname" . }}-db-key {{- end }} + {{- range $key, $value := .Values.phpEnv }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} {{- if .Values.selenium.enabled }} - name: selenium image: "{{ .Values.image.selenium.registry }}/{{ .Values.image.selenium.repository }}:{{ .Values.image.selenium.tag }}" diff --git a/values.yaml b/values.yaml index 70d65b5..26338b7 100644 --- a/values.yaml +++ b/values.yaml @@ -173,4 +173,13 @@ smtp: # 自己署名証明書を許可する場合(テスト環境のみ) allowSelfSigned: false -resources: {} \ No newline at end of file +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" \ No newline at end of file