最短ルート(おすすめ:Viteプロキシ + ポートフォワード)
前提
docker desktop 起動 コンテナを個別に起動しない
docker desktopのエンジンだけ動いてればOK。左下Engine Runnningの表示
- minikube 起動
minikube start -p dev34
kubectl config use-context dev34
cd ~/dev-portal && source .venv/bin/activate
を実行してください(抜けるときは deactivate)。
今後の検証は全部これで統一しましょう:
Ingress前提:BASE=http://127.0.0.1:18081 + -H "Host: api.local"
変更系は Idempotency-Key 必須
PATCH/DELETE は -X PATCH / -X DELETE 必須
例(Ingress経由で View patch/delete):
BASE=http://127.0.0.1:18081
HOST=api.local
VID=23 # 適宜
IDEMP="$(uuidgen)"
PATCH_JSON='{"xml_code":"<odoo><data ingress ok/></odoo>"}'
curl -sS -i \
-H "Host: $HOST" \
-H "Idempotency-Key: $IDEMP" \
-H "Content-Type: application/json" \
-d "$PATCH_JSON" \
-X PATCH \
"$BASE/portal/view/$VID"
IDEMP="$(uuidgen)"
curl -sS -i \
-H "Host: $HOST" \
-H "Idempotency-Key: $IDEMP" \
-X DELETE \
"$BASE/portal/view/$VID"
- API がデプロイ済みか確認(無ければ apply)
kubectl get svc -n portal-dev | grep portal-api ||
kubectl apply -k k8s/overlays/dev
# ローカルでビルドしたイメージを使うなら:
# minikube -p dev33 image load portal-api:dev
- ポートフォワード(全IFで待受け)
kubectl -n portal-dev port-forward svc/portal-api 8080:80 --address 0.0.0.0
これで ホストの
http://127.0.0.1:8080に API が来ます。--address 0.0.0.0は、Dockerコンテナ(Vite)からhost.docker.internal:8080へ届かせるため。
- フロント(各アプリ)側は Vite プロキシで
/apiに集約
.env.developmentVITE_API_BASE_URL=/apivite.config.tsserver: { proxy: { "/api": { target: "http://host.docker.internal:8080", changeOrigin: true, rewrite: p => p.replace(/^\/api/, ""), }, }, }sdk.tsconst BASE = import.meta.env.VITE_API_BASE_URL ?? "/api";
- 動作確認(DoD)
- ブラウザで:
http://localhost:<vite-port>/api/openapi.json→ 200 が返る - アプリからの
fetch('/api/…')→ 200 が返る
Swagger UI を見たければ
http://localhost:<vite-port>/api/docs(=プロキシ越し)で表示できます。別サーバー不要です。
代替ルート(NodePort / Ingress を使う場合)
- NodePort:
minikube -p dev33 service portal-api -n portal-dev --url # 例: http://192.168.67.2:30080フロントのVITE_API_BASE_URLをそのURLにして直接叩く(この場合はCORS設定が必要になることが多い)。 - Ingress を張るなら
minikube addons enable ingress+ Ingress設定に合わせてVITE_API_BASE_URLをホスト名へ。こちらもCORS考慮が必要。
CORSを避けて手戻りゼロにしたいなら、Viteプロキシ + PFが一番安定です。
まとめ
- 起動は
minikube start -p dev33→(必要なら)apply → PF。 - フロントは
/apiに投げる → ViteがPF先に中継(CORS不要)。 - Swagger用に別サーバーは要りません。 FastAPIの
/docsをそのまま見ればOK。
コメントを残す