Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d8fb1a308 | ||
|
|
d75d1942e5 | ||
|
|
af13a13ae0 | ||
|
|
6d1b7bc8d6 | ||
|
|
f16184f98d | ||
|
|
d1dea3de7d | ||
|
|
30e377d4ec |
@@ -0,0 +1,7 @@
|
||||
---
|
||||
trigger: always_on
|
||||
description: Read the CLAUDE.md hierarchy via GEMINI.md before doing anything in this workspace
|
||||
---
|
||||
|
||||
最初に、このディレクトリの `GEMINI.md` を読み、そこに列挙された CLAUDE.md を上から順にすべて読んで従うこと。
|
||||
Read `GEMINI.md` in this directory first, then read and follow every CLAUDE.md it lists, in order.
|
||||
@@ -0,0 +1,2 @@
|
||||
# Claude Code local settings
|
||||
.claude/
|
||||
@@ -1,5 +1,8 @@
|
||||
# CLAUDE.md — WordPress Helm Chart
|
||||
|
||||
> **共通ルール(要約)** — 詳細は `P:\Claude\CLAUDE.md`(全体共通)と `P:\Claude\HelmChart\CLAUDE.md`(Helm チャート共通: リリースフロー・ワークフロー・クラスタ構成)を参照。
|
||||
> 作業前に pull / 機能変更時は README 更新 / 作業単位ごとに commit → push まで / コミットに AI クレジットを付けない / pull で入った変更を revert しない / Helm・PHP はローカル実行不可(Python のみ可)。
|
||||
|
||||
## リポジトリ概要
|
||||
|
||||
Raspberry Pi などのベアメタルで稼働することを想定した、Kubernetes 上で動作する Alpine Nginx + WordPress (PHP-FPM) の Helm チャート。
|
||||
@@ -11,33 +14,48 @@ Raspberry Pi などのベアメタルで稼働することを想定した、Kube
|
||||
|
||||
WordPress本体はイメージ内蔵のもの(`docker.io/wordpress:<tag>-fpm-alpine`)をemptyDirにコピーして使い捨てで起動し、`wp-content`のみPVCで永続化する(bitnami方式)。PHPの実行環境はこのイメージに依存し、本リポジトリにPHPコードは含まれない。
|
||||
|
||||
## Git コミット情報
|
||||
## 設計上の注意(このチャート固有)
|
||||
|
||||
| 項目 | 値 |
|
||||
|------|-----|
|
||||
| 名前 | Claude |
|
||||
| メール | claude@cafepieters.com |
|
||||
| SSH キー | `P:\Claude\.ssh\id_claude` |
|
||||
|
||||
## 作業完了のルール(重要)
|
||||
|
||||
1. **機能を追加・変更した場合は、必ず README.md を更新すること。** 追加・変更した機能の説明を反映してから作業完了とする。
|
||||
2. **変更は必ず Git Commit / Push まで行うこと。** 作業単位ごとにコミットし、origin(main) へ push するまでが作業完了。
|
||||
3. **Commit メッセージに Claude クレジット(Co-Authored-By 等)を追記することは禁止。** `user.name = Claude` でコミットされるため、ユーザー名で判別可能。
|
||||
4. `git pull` で取り込まれた変更は必ず尊重し、revert して push することは禁止(既存の共通ルールと同じ)。
|
||||
|
||||
## クラスタ構成メモ(実運用環境)
|
||||
|
||||
- ノード: `cpi11`(control-plane, 192.168.9.9/物理IF)、`wpi21`/`wpi22`/`wpi23`(worker)。全てRaspberry Pi(Ubuntu 25.04)。
|
||||
- CNI: **Cilium**(kube-proxyなし、eBPFベース)。`cilium-envoy` Podが動作しており、Cilium組み込みIngress Controller(Envoyベース)が利用可能。
|
||||
- Pod CIDR: `10.0.0.0/8`系、ノードごとに `/24` を割り当て(例: cpi11→`10.0.0.0/24`、wpi22→`10.0.1.0/24`、wpi21→`10.0.2.0/24`、wpi23→`10.0.3.0/24`)。
|
||||
- 外部公開: **kube-vip**(ARP方式、静的Pod `kube-vip-cpi11`)。物理ルーターのグローバルIP配下、`192.168.9.0/24` セグメント内でVIPを払い出す。このセグメントはルーターがLAN機器(スマホ/PC等)にDHCP払い出しする範囲と重複しないよう、ルーター側で範囲を絞って共存させている。**IPが希少なため濫用できない。**
|
||||
- 各WordPress/PHPFPMリリースは現状、`service.type: ClusterIP` + `kube-vip.io/loadbalancerIPs`/`kube-vip.io/vipHost` アノテーションを**Helm管理外で手動付与**し、リリースごとに個別のVIPを得る運用になっている(本チャートの `templates/service.yaml` にはannotationsのテンプレート化自体が存在しないため)。
|
||||
- **既知の問題**: この構成では、kube-vipがL2 ARP応答に加えて自前でTCPコネクションをプロキシしてしまうため、`externalTrafficPolicy`(LoadBalancer/NodePort専用でありClusterIPには無効という制約とは別に、そもそもkube-vipの時点で)実クライアントIPが失われる。詳細はREADME.mdの「kube-vip等でグローバルIP/VIPが限られている環境での実IP取得(共有Ingress Controller構成)」を参照。
|
||||
- 今後、実IP取得のためCilium組み込みIngress Controller(またはingress-nginx)へ移行する方針で合意済み(2026-08-08時点、ユーザーが選択)。ただし全リリース(wordpress-nginx系だけでなくphpfpm系も含む)の移行が必要な大掛かりな作業のため、本セッションではWordPressチャート側の対応(`ingress.yaml`/`forwardRealIP`は既存機能で対応済み、README migration手順を追記)のみ実施。実際のCilium Ingress有効化・各リリースのhelm upgradeはユーザー側の作業。
|
||||
- `templates/service.yaml` には annotations のテンプレート化が存在しないため、kube-vip 用アノテーションは Helm 管理外で手動付与する運用になっている(クラスタ全体の事情は組織 CLAUDE.md「実運用クラスタ構成」を参照)。
|
||||
- 実 IP 取得(`ingress.yaml` / `nginx.forwardRealIP`)は既存機能で対応済み。Cilium Ingress への移行手順は README に記載。
|
||||
|
||||
## チャート改修履歴
|
||||
|
||||
### 外部Secret連携(extraEnvFrom / extraEnv / SMTP existingSecret)を追加(2026-09-08, v7.1.0-b)
|
||||
|
||||
**背景**: 別リポジトリの `helmchart/secret-manager` チャートが各ネームスペースへ配布する
|
||||
`cred-<名前>` Secret(メールの msmtprc / API キー)を WordPress 側から参照する口が無かった。
|
||||
phpfpm チャートと同一方針で受け口を追加(ユーザー指定によりパターンを踏襲)。
|
||||
|
||||
**修正内容**:
|
||||
- `values.yaml` に `extraEnvFrom`(`envFrom` 配列)と `extraEnv`(生の env エントリ配列)を追加。
|
||||
稼働中の `wordpress` コンテナにのみ注入(`wordpress-init` initContainer には入れない)。
|
||||
- `smtp.auth.existingSecret` / `existingSecretKey`: msmtprc はチャート生成のまま、パスワード
|
||||
ファイルだけ既存 Secret から取得。
|
||||
- `smtp.existingMsmtprcSecret` / `existingMsmtprcSecretKey`: 完成済み msmtprc を持つ既存 Secret を
|
||||
そのまま `/etc/smtp-config/msmtprc` にマウント。指定時は `configmap-smtp` を生成せず
|
||||
host/port/auth.* は無視、`smtp-secrets` ボリュームも張らない。起動ログの echo も出し分け。
|
||||
- `templates/secret-smtp.yaml` / `templates/configmap-smtp.yaml` を上記フラグで出し分け。
|
||||
- 既定値は全て空 → 既存挙動は不変(`helm template` の全シナリオで確認済み)。
|
||||
- 主アプリ(WordPress 7.1.0)は変わらないため手動リリース `7.1.0-b`。
|
||||
|
||||
**対象ファイル**: `values.yaml`, `templates/deployment.yaml`, `templates/configmap-smtp.yaml`,
|
||||
`templates/secret-smtp.yaml`, `Chart.yaml`, `README.md`, `CLAUDE.md`
|
||||
|
||||
### Hello Dolly等のデフォルトプラグインが削除しても復活する不具合の修正(2026-08-08, v7.1.0-a)
|
||||
|
||||
※自動更新ワークフローがこの作業と並行してWordPress 7.1.0への正式リリース(v7.1.0)を実行したため、本修正はそのタグの上に手動リリース `7.1.0-a` として適用した。
|
||||
|
||||
**症状**: WP管理画面からHello Dolly(`hello.php`)を削除しても、Pod再起動のたびに復活する。
|
||||
|
||||
**原因**: `templates/deployment.yaml` の `wordpress-init` initContainerで、WordPressコアファイルをemptyDirにコピーする処理が `cp -r /usr/src/wordpress/* /var/www/html/` という実装になっており、`wp-content` を除外していなかった。`/var/www/html/wp-content` はPVCマウントの別ボリュームだが、`cp -r` はワイルドカード展開で `wp-content` ディレクトリ自体も対象に含めてしまうため、イメージ同梱のデフォルトwp-content(`hello.php`、`akismet/`、デフォルトテーマ群)がPod再起動のたびにPVC上の既存wp-contentへ**無条件に上書きマージ**されていた。直後にある「PVCが空の場合のみ初期化する」条件分岐(`if [ ! -d /var/www/html/wp-content/themes ]`)は、この最初の `cp -r` の副作用までは防げていなかった。
|
||||
|
||||
**対象**: Hello Dolly(`hello.php`)だけでなく、Akismet(`wp-content/plugins/akismet/`)も同じ理由で同様に復活する。**本チャート自身が明示的に`wp plugin install`等でプラグインを追加している箇所は存在しない**(該当するのはWordPressコア配布物に同梱されているこの2つのみ)。
|
||||
|
||||
**修正内容**: コアファイルのコピーを `/usr/src/wordpress/` 直下を1件ずつ列挙し、`wp-content` をスキップするループに変更。これによりPVC上のwp-contentは、新規インストール時(PVCが空=`wp-content/themes` が存在しない場合)以外は一切触れなくなった。
|
||||
|
||||
**対象ファイル**: `templates/deployment.yaml`, `README.md`, `Chart.yaml`
|
||||
|
||||
### 実IP取得の修正 + SMTP経由メール送信の追加(2026-08-08, v7.0.2-a)
|
||||
|
||||
**背景**: ルーター(グローバルIP)配下の 192.168.9.x セグメントにコントロールプレーン/ワーカーノードがあり、その上のPodでWordPressが稼働する構成において、(1) 訪問者の実IPアドレスが正しく取得できない、(2) `wp_mail()` によるメール送信が失敗する、という2つの不具合が報告された。
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@ apiVersion: v2
|
||||
name: wordpress-nginx
|
||||
description: WordPress with Nginx and PHP-FPM on Kubernetes
|
||||
type: application
|
||||
version: 7.1.0
|
||||
appVersion: "7.1.0"
|
||||
version: 7.1.3
|
||||
appVersion: "7.1.3"
|
||||
keywords:
|
||||
- wordpress
|
||||
- nginx
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# GEMINI.md — Antigravity (Gemini) 用エントリポイント(HelmChart\WordPress)
|
||||
|
||||
このディレクトリのルールはすべて **`CLAUDE.md`** に記載されている。本ファイルにはルール本文を書かず、読むべき CLAUDE.md への参照だけを置く(正本は常に CLAUDE.md)。
|
||||
|
||||
## 必ず最初に実行すること
|
||||
|
||||
以下のファイルを**上から順に**読み込み、すべての指示に従うこと。上位ほど広い範囲に適用される共通ルールで、下位は上位を前提とした補足・例外である。
|
||||
|
||||
1. `P:\Claude\CLAUDE.md` — 全組織共通ルール(Git 運用・コミット書式・実行環境・情報記載の原則)
|
||||
2. `P:\Claude\HelmChart\CLAUDE.md` — HelmChart 組織共通ルール
|
||||
3. `P:\Claude\HelmChart\WordPress\CLAUDE.md` — WordPress リポジトリ固有ルール(このディレクトリ)
|
||||
|
||||
> Antigravity はワークスペース(または git ルート)直下のルールしか自動で読まず、親フォルダを遡らない。そのため上位階層のパスをここに明示している。`P:\Claude` はクラウド同期されており、デスクトップ・ノート PC とも同じパスで存在する。
|
||||
|
||||
## 読み替え
|
||||
|
||||
- CLAUDE.md 中の「Claude」「Claude Code」は、Antigravity で作業する場合は Gemini 自身のことと読み替える。
|
||||
- Git のコミット者は Antigravity でも `user.name = Claude` / `user.email = claude@cafepieters.com` のまま使う(変更しない)。コミットメッセージに AI クレジットを付けない。
|
||||
- Claude Code 固有の機能(`.claude/` 設定、スキル、メモリ等)に関する記述は無視してよい。
|
||||
|
||||
## 保守ルール
|
||||
|
||||
- ルールの追加・変更は **CLAUDE.md にのみ**行う。本ファイルと `.agents/rules/claude-md.md` は参照だけを保持し、内容を増やさない。
|
||||
- CLAUDE.md を新しいディレクトリに追加したときは、同じ形式の `GEMINI.md` と `.agents/rules/claude-md.md` も併置する。
|
||||
@@ -139,12 +139,42 @@ WordPressコンテナ内にはメール送信を行うMTA(sendmail相当のプ
|
||||
| `smtp.auth.enabled` | 認証有効化 | `true` |
|
||||
| `smtp.auth.username` | SMTPユーザー名 | `smtp-user@example.com` |
|
||||
| `smtp.auth.password` | SMTPパスワード | `""`(Secretで指定) |
|
||||
| `smtp.auth.existingSecret` | パスワードを取得する既存 Secret 名(`smtp.auth.password` と自作 Secret の代わり) | `""` |
|
||||
| `smtp.auth.existingSecretKey` | 上記 Secret 内のキー名 | `password` |
|
||||
| `smtp.existingMsmtprcSecret` | 完成済み `msmtprc` を持つ既存 Secret 名。指定時はチャートの msmtprc 生成を行わず host/port/auth.* は無視(`from` のみ使用) | `""` |
|
||||
| `smtp.existingMsmtprcSecretKey` | 上記 Secret 内の `msmtprc` キー名 | `msmtprc` |
|
||||
| `smtp.from` | 送信元メールアドレス(固定) | `noreply@example.com` |
|
||||
| `smtp.tls.verify` | TLS証明書検証 | `true` |
|
||||
| `smtp.tls.allowSelfSigned` | 自己署名証明書を許可 | `false` |
|
||||
|
||||
有効化すると、WordPressコンテナ起動時に `msmtp` を導入し、PHPの `sendmail_path` を `msmtp` 経由に設定します。`wp_mail()` はコード変更なしにそのままSMTP経由で送信されるようになります。
|
||||
|
||||
#### secret-manager チャートとの連携(メール設定の一元管理)
|
||||
|
||||
別リポジトリの **secret-manager** チャートが `cred-gmail` などに生成する完成済み `msmtprc` を
|
||||
そのまま使う場合(メール設定の変更は secret-manager 側だけで済みます):
|
||||
|
||||
```yaml
|
||||
smtp:
|
||||
enabled: true
|
||||
from: "no-reply@your-domain.com" # PHP の sendmail_from 用に必要
|
||||
existingMsmtprcSecret: "cred-gmail" # このSecretの msmtprc キーをそのまま利用
|
||||
```
|
||||
|
||||
サーバ設定は values に残し、パスワードだけ一元管理したい場合:
|
||||
|
||||
```yaml
|
||||
smtp:
|
||||
enabled: true
|
||||
host: "smtp.gmail.com"
|
||||
port: 587
|
||||
auth:
|
||||
enabled: true
|
||||
username: "no-reply@your-domain.com"
|
||||
existingSecret: "cred-gmail"
|
||||
existingSecretKey: "SMTP_PASSWORD"
|
||||
```
|
||||
|
||||
**設定例**:
|
||||
|
||||
```yaml
|
||||
@@ -177,6 +207,32 @@ helm upgrade --install my-wordpress . \
|
||||
|
||||
**注意**: `smtp.enabled: true` の場合、msmtpのインストール(`apk add`)のためWordPressコンテナはrootとして起動し、セットアップ完了後に `php-fpm` へexecします。PHP-FPMのワーカープロセス自体はイメージ標準の設定により引き続き `www-data`(非root)で動作するため、実際のPHPコード実行権限は変わりません。`smtp.enabled: false`(デフォルト)の場合は従来どおり非rootユーザー(uid82)でコンテナが起動します。
|
||||
|
||||
### 追加の環境変数(extraEnvFrom / extraEnv)
|
||||
|
||||
WordPress(php-fpm)コンテナに任意の環境変数を渡します。プラグインが読む API キー等を、
|
||||
別リポジトリの **secret-manager** チャートが配布する `cred-<名前>` Secret から注入する用途を
|
||||
想定しています。認証情報の変更は secret-manager 側を更新するだけで反映できます。
|
||||
|
||||
| パラメータ | 説明 | デフォルト値 |
|
||||
|-----------|------|-------------|
|
||||
| `extraEnvFrom` | 既存の Secret / ConfigMap をまるごと環境変数として注入(`envFrom` 配列) | `[]` |
|
||||
| `extraEnv` | 個別の環境変数を追加(生の `env` エントリ配列。`valueFrom`/`secretKeyRef` 可) | `[]` |
|
||||
|
||||
```yaml
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: cred-gemini # GEMINI_API_KEY 等が丸ごと環境変数になる
|
||||
extraEnv:
|
||||
- name: ANTHROPIC_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: cred-claude
|
||||
key: ANTHROPIC_API_KEY
|
||||
```
|
||||
|
||||
PHP 側では `getenv('GEMINI_API_KEY')` で取得できます(初期化用の initContainer には注入されず、
|
||||
稼働中の WordPress コンテナにのみ渡ります)。
|
||||
|
||||
### Service設定
|
||||
|
||||
| パラメータ | 説明 | デフォルト値 |
|
||||
@@ -403,20 +459,19 @@ helm install my-wordpress ./wordpress-nginx \
|
||||
## 初期化の動作
|
||||
|
||||
### 新規インストール時
|
||||
1. WordPress本体ファイルをemptyDirにコピー(使い捨て領域)
|
||||
2. wp-contentディレクトリをPVCに作成(永続化領域)
|
||||
3. シンボリックリンクで wp-content を接続
|
||||
4. wp-config.phpをSecretから生成
|
||||
5. データベース接続を確認
|
||||
6. テーブルが存在しない場合:
|
||||
1. WordPressコアファイル(wp-content以外)をemptyDirにコピー(使い捨て領域)
|
||||
2. wp-contentディレクトリのPVCが空の場合のみ、イメージ同梱のデフォルトwp-content(デフォルトテーマ、Akismet、Hello Dolly等)で初期化(永続化領域)
|
||||
3. wp-config.phpをSecretから生成
|
||||
4. データベース接続を確認
|
||||
5. テーブルが存在しない場合:
|
||||
- WP-CLIを使用してWordPressをインストール
|
||||
- 管理者アカウントを作成
|
||||
- パスワードが未指定の場合は16文字のランダム生成
|
||||
7. ads.txtが有効な場合は配置(使い捨て領域)
|
||||
6. ads.txtが有効な場合は配置(使い捨て領域)
|
||||
|
||||
### アップデート/再起動時
|
||||
1. WordPress本体ファイルを新しくコピー(常にクリーン)
|
||||
2. 既存のwp-content(PVC)をシンボリックリンクで接続
|
||||
1. WordPressコアファイル(wp-content以外)を新しくコピー(常にクリーン)
|
||||
2. 既存のwp-content(PVC)はそのまま利用(**wp-content配下は一切上書きしない**。デフォルトプラグイン等を削除していればその状態を維持)
|
||||
3. wp-config.phpを再生成
|
||||
4. データベーステーブルの存在を確認
|
||||
5. テーブルが存在する場合:
|
||||
@@ -425,6 +480,8 @@ helm install my-wordpress ./wordpress-nginx \
|
||||
- 必要に応じてデータベーススキーマをアップデート
|
||||
6. 既存データ(wp-content)を保持したまま起動
|
||||
|
||||
**注意(v7.1.0-aで修正)**: それ以前は、WordPressコアファイルのコピー処理が `cp -r /usr/src/wordpress/* /var/www/html/` という実装になっており、`wp-content` を除外していませんでした。このため、Pod再起動のたびにイメージ同梱のデフォルトwp-content(Hello Dolly、Akismet、デフォルトテーマ等)がPVC上の既存wp-contentへ**毎回上書きマージ**され、ユーザーが削除したはずのプラグインが復活する不具合がありました。v7.1.0-aでコアファイルのコピーからwp-contentを除外し、PVC上のwp-contentは新規インストール時(PVCが空の場合)以外は一切触らないよう修正しています。
|
||||
|
||||
### セキュリティ更新の適用方法
|
||||
|
||||
```bash
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{{- if .Values.smtp.enabled }}
|
||||
{{- if and .Values.smtp.enabled (not .Values.smtp.existingMsmtprcSecret) }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
|
||||
@@ -28,7 +28,18 @@ spec:
|
||||
echo "=== WordPress Initialization Started ==="
|
||||
|
||||
echo "Copying WordPress to emptyDir..."
|
||||
cp -r /usr/src/wordpress/* /var/www/html/
|
||||
# wp-contentは別マウントのPVCのため、ここではコアファイルのみコピーする。
|
||||
# "cp -r /usr/src/wordpress/* /var/www/html/" のようにwp-contentを含めて
|
||||
# 丸ごとコピーすると、既存のPVC上のwp-contentディレクトリにイメージ同梱の
|
||||
# デフォルトファイル(hello.php等)が毎回上書きマージされてしまい、
|
||||
# ユーザーが削除したはずのプラグインがPod再起動のたびに復活する原因になる。
|
||||
for item in /usr/src/wordpress/*; do
|
||||
name=$(basename "$item")
|
||||
if [ "$name" = "wp-content" ]; then
|
||||
continue
|
||||
fi
|
||||
cp -r "$item" /var/www/html/
|
||||
done
|
||||
echo "WordPress files copied"
|
||||
|
||||
if [ ! -d /var/www/html/wp-content/themes ]; then
|
||||
@@ -310,7 +321,11 @@ spec:
|
||||
sendmail_from = "{{ .Values.smtp.from }}"
|
||||
PHP_SMTP_EOF
|
||||
|
||||
{{- if .Values.smtp.existingMsmtprcSecret }}
|
||||
echo "SMTP configured from existing secret: {{ .Values.smtp.existingMsmtprcSecret }}"
|
||||
{{- else }}
|
||||
echo "SMTP configured: {{ .Values.smtp.host }}:{{ .Values.smtp.port }}"
|
||||
{{- end }}
|
||||
exec php-fpm
|
||||
{{- else }}
|
||||
command: ["php-fpm"]
|
||||
@@ -332,6 +347,13 @@ spec:
|
||||
key: db-password
|
||||
- name: WORDPRESS_TABLE_PREFIX
|
||||
value: {{ .Values.wordpress.tablePrefix | quote }}
|
||||
{{- with .Values.extraEnv }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.extraEnvFrom }}
|
||||
envFrom:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: wordpress-data
|
||||
mountPath: /var/www/html
|
||||
@@ -341,7 +363,7 @@ spec:
|
||||
- name: smtp-config
|
||||
mountPath: /etc/smtp-config
|
||||
readOnly: true
|
||||
{{- if .Values.smtp.auth.enabled }}
|
||||
{{- if and .Values.smtp.auth.enabled (not .Values.smtp.existingMsmtprcSecret) }}
|
||||
- name: smtp-secrets
|
||||
mountPath: /etc/smtp-secrets
|
||||
readOnly: true
|
||||
@@ -369,17 +391,26 @@ spec:
|
||||
{{- end }}
|
||||
{{- if .Values.smtp.enabled }}
|
||||
- name: smtp-config
|
||||
{{- if .Values.smtp.existingMsmtprcSecret }}
|
||||
# 完成済み msmtprc を持つ既存 Secret(secret-manager の cred-* 等)を利用
|
||||
secret:
|
||||
secretName: {{ .Values.smtp.existingMsmtprcSecret }}
|
||||
items:
|
||||
- key: {{ .Values.smtp.existingMsmtprcSecretKey | default "msmtprc" }}
|
||||
path: msmtprc
|
||||
{{- else }}
|
||||
configMap:
|
||||
name: {{ include "wordpress-nginx.fullname" . }}-smtp-config
|
||||
items:
|
||||
- key: msmtprc
|
||||
path: msmtprc
|
||||
{{- if .Values.smtp.auth.enabled }}
|
||||
{{- end }}
|
||||
{{- if and .Values.smtp.auth.enabled (not .Values.smtp.existingMsmtprcSecret) }}
|
||||
- name: smtp-secrets
|
||||
secret:
|
||||
secretName: {{ include "wordpress-nginx.fullname" . }}-smtp
|
||||
secretName: {{ .Values.smtp.auth.existingSecret | default (printf "%s-smtp" (include "wordpress-nginx.fullname" .)) }}
|
||||
items:
|
||||
- key: password
|
||||
- key: {{ .Values.smtp.auth.existingSecretKey | default "password" }}
|
||||
path: password
|
||||
# 0600だとSecretボリュームの所有者はroot、
|
||||
# msmtpはPHP-FPMワーカー(www-data等の非root)から実行されるため読めない
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{{- if .Values.smtp.enabled }}
|
||||
{{- if and .Values.smtp.enabled (not .Values.smtp.existingMsmtprcSecret) (not .Values.smtp.auth.existingSecret) }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
|
||||
+40
-2
@@ -5,12 +5,12 @@ image:
|
||||
nginx:
|
||||
registry: docker.io
|
||||
repository: nginx
|
||||
tag: "1.31.4-alpine-perl"
|
||||
tag: "1.31.6-alpine-perl"
|
||||
pullPolicy: IfNotPresent
|
||||
wordpress:
|
||||
registry: docker.io
|
||||
repository: wordpress
|
||||
tag: "7.1.0-php8.5-fpm-alpine"
|
||||
tag: "7.1.3-php8.5-fpm-alpine"
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# WordPress設定
|
||||
@@ -69,6 +69,15 @@ smtp:
|
||||
# helm install ... --set smtp.auth.password='your-password' 等で指定
|
||||
password: ""
|
||||
|
||||
# 【外部Secret連携】チャートで msmtprc を生成しつつ、パスワードファイルだけ
|
||||
# 既存 Secret から取りたい場合に指定する。
|
||||
# 例: secret-manager チャートが配布する cred-<プロバイダ> の SMTP_PASSWORD キー
|
||||
# existingSecret: "cred-gmail"
|
||||
# existingSecretKey: "SMTP_PASSWORD"
|
||||
# 指定時は smtp.auth.password と自作の -smtp Secret は使われない。
|
||||
existingSecret: ""
|
||||
existingSecretKey: "password"
|
||||
|
||||
# 送信元アドレス(固定値。wp-config.phpやプラグイン側の指定より優先されます)
|
||||
from: "noreply@example.com"
|
||||
|
||||
@@ -79,6 +88,35 @@ smtp:
|
||||
# 自己署名証明書を許可する場合(テスト環境のみ)
|
||||
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"
|
||||
|
||||
# 既存の Secret / ConfigMap をまるごと環境変数として wordpress コンテナへ注入する(envFrom)。
|
||||
# 別リポジトリの secret-manager チャートが各ネームスペースへ配布する
|
||||
# cred-<名前> Secret(API キー等)をそのまま読み込む用途を想定。
|
||||
# 変更は secret-manager 側を更新するだけで全プロジェクトに反映できる。
|
||||
extraEnvFrom: []
|
||||
# - secretRef:
|
||||
# name: cred-gemini
|
||||
# - secretRef:
|
||||
# name: cred-openai
|
||||
|
||||
# 個別の環境変数を追加する(生の env エントリ配列。value / valueFrom(secretKeyRef 等) 使用可)。
|
||||
extraEnv: []
|
||||
# - name: OPENAI_API_KEY
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: cred-openai
|
||||
# key: OPENAI_API_KEY
|
||||
|
||||
nginx:
|
||||
# Ingress ControllerやCDN(Cloudflare等)、外部LB等、X-Forwarded-Forヘッダーを
|
||||
# 付与するリバースプロキシを前段に置く場合にのみ有効にしてください。
|
||||
|
||||
Reference in New Issue
Block a user