Warpgate
Warpgateは、ワークロードをMezusphereに接続する軽量サイドカーエージェントです。反転イングレスモデルを実装しています。インバウンドポートを開放してファイアウォールを設定する代わりに、WarpgateはMezusphereのグローバルエッジに対して外側に接続します。
仕組み
- Warpgateがワークロードと一緒に起動
- MezusphereのグローバルエッジへのアウトバウンドTLS 1.3接続を開始
- サービスアカウントAPIキーで認証
- Mezusphereがこの確立されたトンネルを通じてエンドユーザートラフィックを転送
- Warpgateがlocalhostのワークロードにトラフィックを渡す
ワークロードはインターネットからのインバウンド接続を受け入れません。オープンポート、ファイアウォールルール、パブリックIPアドレスは不要です。
デプロイオプション
Docker
アプリケーションと一緒にWarpgateをコンテナとして実行:
docker run mezusphere/warpgate \
--api-key YOUR_API_KEY \
--upstream-url localhost:8080またはdocker-compose.ymlに追加:
services:
app:
image: your-app:latest
ports:
- "8080:8080"
warpgate:
image: mezusphere/warpgate
command: ["--api-key", "YOUR_API_KEY", "--upstream-url", "app:8080"]
depends_on:
- appエコーモード
アップストリームを接続する前に、接続性を確認できます。--echoを付けると、Warpgateはエンドポイント経由のすべてのリクエストに、受け取ったリクエストの内容(メソッド、パス、ヘッダー、アイデンティティ)をJSONで反射して応答します。
docker run mezusphere/warpgate --api-key YOUR_API_KEY --echoエンドポイント経由でエコー応答が返ってきたら、--echoを--upstream-urlに置き換えてサービスを指定してください。
mezusphere/warpgateイメージはマルチアーキテクチャ(linux/amd64、linux/arm64)で、arm64のエッジデバイスを含め、DockerまたはKubernetesが動く場所ならどこでも動作します。
Kubernetes
ポッドのサイドカーコンテナとしてWarpgateをデプロイ:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-service
spec:
template:
spec:
containers:
- name: app
image: your-app:latest
ports:
- containerPort: 8080
- name: warpgate
image: mezusphere/warpgate
args:
- "--api-key"
- "YOUR_API_KEY"
- "--upstream-url"
- "localhost:8080"任意のKubernetesディストリビューションで動作:EKS、GKE、AKS、k3s、セルフマネージドクラスター。
設定
コマンドラインフラグ
| フラグ | 説明 | デフォルト |
|---|---|---|
--api-key | 認証用サービスアカウントAPIキー | 必須 |
--upstream-url | ワークロードのアドレス。--echo使用時は省略 | --echo以外では必須 |
--echo | エコーモード:転送せずリクエスト内容をJSONで反射 | 無効 |
--name | Consoleに表示される名前 | ホスト名 |
--upstream-timeout | アップストリームのリクエストタイムアウト(秒) | 30 |
--upstream-health-path | アップストリームのヘルスチェックパス(例:/healthz)。未設定で無効 | 未設定 |
--metrics-addr | ローカルPrometheus /metricsエンドポイントのhost:port。空で無効 | 無効 |
--cert-dir | ブートストラップしたアイデンティティを再起動を跨いで永続化するディレクトリ | /var/lib/mezusphere/warpgate |
--probe-addr | liveness/readinessプローブ用のhost:port | デフォルトのプローブポート |
--no-probes | プローブサーバーを無効化(オーケストレーターなしのアドホック実行用) | 無効 |
--log-level | ログの詳細度(debug、info、warn、error) | info |
環境変数
すべてのフラグは環境変数でも設定できます。フラグ名を大文字にしてアンダースコアでつなぎます(プレフィックスなし):
| 変数 | 対応するフラグ |
|---|---|
API_KEY | --api-key |
UPSTREAM_URL | --upstream-url |
ECHO | --echo |
NAME | --name |
UPSTREAM_TIMEOUT | --upstream-timeout |
UPSTREAM_HEALTH_PATH | --upstream-health-path |
METRICS_ADDR | --metrics-addr |
CERT_DIR | --cert-dir |
PROBE_ADDR | --probe-addr |
NO_PROBES | --no-probes |
LOG_LEVEL | --log-level |
接続性
アウトバウンド接続
Warpgateは、相互認証(mTLS)付きTLS 1.3を使用してMezusphereのグローバルエッジへの永続的なアウトバウンド接続を確立します。接続は:
- 暗号化:TLS 1.3、ダウングレードなし
- 認証済み:サービスアカウント認証情報による相互TLS
- 永続的:Warpgateプロセスのライフタイム中維持
- 自動再接続:ネットワーク中断時にバックオフ付きで自動再接続
ネットワーク要件
WarpgateはアウトバウンドHTTPS接続のみ必要です。インバウンドポート、ファイアウォールルール、VPN設定は不要です。
| 方向 | ポート | プロトコル | 目的 |
|---|---|---|---|
| アウトバウンド | 443 | TLS 1.3 | Mezusphereエッジへの接続 |
クラウド非依存
Warpgateはワークロードがどこで動作していても同一に動作します:
- AWS(EC2、ECS、EKS、Lambda)
- Google Cloud(GCE、GKE、Cloud Run)
- Azure(VM、AKS、Container Instances)
- オンプレミスデータセンター
- ローカル開発マシン
- エッジデバイス(Raspberry Pi、IoT)
デプロイパターンは常に同じ:ワークロードと一緒にWarpgateを実行し、トークンを提供し、アップストリームを指定。
リソース使用量
Warpgateは軽量に設計されています:
- 単一の静的バイナリ
- 最小限のメモリフットプリント
- 無視できるCPUオーバーヘッド
- ログ以外のディスクI/Oなし
プロキシでも、サービスメッシュコントロールプレーンでも、テレメトリを送信するエージェントでもありません。接続先は、上で説明したアウトバウンドトンネルとコントロールプレーンセッションだけです。
お客様自身のモニタリングのために、WarpgateはローカルのPrometheus /metricsエンドポイントを公開できます。リクエストレート、レイテンシ、サイズ、アップストリームの健全性、トンネル再接続といった標準的なリバースプロキシメトリクスです。デフォルトでは無効(--metrics-addrで有効化)で、Mezusphereには何も送信されません。