完全な構成は、デプロイ時に Cartesia の担当者から提供されます。
Terraform でのデプロイ
Terraform はクラスタ、ネットワーキング、GPU ドライバーを作成し、Helm 経由で Cartesia をデプロイします。 Cartesia のセルフホストを最も早く始められる方法です。cartesia-kube を cartesia-kube のダウンロード の説明に従って GCS バケットからダウンロードしてください。
設定
- AWS EKS
- GCP GKE
ワーカーの設定
ワーカーは tfvars ファイル内で定義されます:cartesia-sonic- プレフィックスに具体的なモデル名を続けた名前のイメージを使用します。たとえば、sonic-3 は cartesia-sonic-rosy-dragon を使用します。
Helm のみでのデプロイ
既存の Kubernetes クラスタに対しては、Helm チャートを直接デプロイします。1. 前提条件のインストール
オートスケーリングとメトリクスを使用する場合は、先に KEDA と Prometheus をインストールします:2. シークレットの作成
3. values.yaml の設定
4. デプロイ
検証
トラフィックを流す前に、デプロイメントが正常であることを確認します。以下のコマンドは、これまでの例で使用したデフォルトのcartesia namespace とリリース名を前提としています。カスタマイズしている場合は適宜置き換えてください。
ロールアウトの監視
inferno_worker_capacity > 0 になるまで、ワーカーは Running のままで Ready にはなりません。
Pod が Ready
Running で、すべてのコンテナが Ready になっているはずです。プローブの挙動:
- API Pod の Ready 化:
GET /statusがポート 5000 で 200 を返した時点。 - ワーカー Pod の Ready 化: startup probe が満たされたとき —
/metricsをポーリングし、inferno_worker_capacityが 0 より大きい値を報告するまで待ちます。モデルロード中はRunningだがReadyではない状態になります。 - License-proxy と NATS: チャート定義のヘルスプローブがなく、コンテナ起動直後に Ready になります。
Ingress のアドレスが割り当てられている
ADDRESS 列がロードバランサーのホスト名または IP で埋まっているはずです。
GKE では ManagedCertificate のステータスも確認します — チャートがリソースを作成し、GCP は DNS 検証後に非同期で証明書をプロビジョニングします:
Status: Active を確認してください。GCP がプロビジョニング中の間、Ingress への HTTPS コールは証明書検証に失敗します。
メトリクススクレイプが動作している(オプション)
クラスタに Prometheus がインストールされている場合(通常はkube-prometheus-stack 経由)、チャートの PodMonitor(cartesia-monitor)は release: prometheus ラベルを通じて自動検出されます。Prometheus UI をポートフォワードして、各コンポーネントがスクレイプされていることを確認します:
http://localhost:9090 にアクセスして up{namespace="cartesia"} をクエリすると、すべてのコンポーネント Pod が 1 を返すはずです。
検証後は、機能スモークテストとパフォーマンスベンチマークについて スモークテストとベンチマーク を参照してください。
Ingress と TLS
チャートは Kubernetes のIngress リソースを通じて Cartesia API を外部に公開します。AWS EKS または GCP GKE 向けに Ingress を構成しアノテーションを付与します。他の Kubernetes ディストリビューション(AKS、OpenShift、Rancher、kubeadm)では、チャートの ingress を無効化して独自のものを作成してください。お使いのプラットフォームを以下から選択してください。
- AWS EKS
- GCP GKE
- Self-managed
チャートは AWS Load Balancer Controller(ALB)向けに Ingress を構成します。主な挙動:チャートが Ingress に適用するアノテーションの全セットは
- TLS 終端: TLS は ALB で終端し、最小 TLS 1.2 です(
ssl-policy: ELBSecurityPolicy-TLS-1-2-2017-01)。 - バックエンド側: ALB と API Pod 間のトラフィックは平文の HTTP です(
backend-protocol: HTTP)。エンドツーエンドの TLS については support@cartesia.ai までお問い合わせください。 - 証明書: Terraform(
certificate_arn)または Helm(ingress.certificateArn)で ACM ARN を明示的に渡してください。未設定の場合、チャートのcertificate-manager: 'true'アノテーションにより AWS Load Balancer Controller がホスト名に一致する ACM 証明書を検索します。 - HTTP リダイレクト: ポート 80 上の HTTP トラフィックはポート 443 の HTTPS にリダイレクトされます。
- Terraform
- Helm
cartesia/templates/resources/ingress.yaml を参照してください。オートスケーリング
Cartesia は Kubernetes デプロイメントに対して 2 レベルのオートスケーリングをサポートします。Cluster Autoscaler
Pending Pod に基づいてノードをスケールします。tfvars で有効化:min_size/max_size の範囲内でスケールします。
Pod Autoscaler (KEDA)
ロードメトリクスに基づいてワーカー Pod をスケールします。tfvars で有効化:- キューの深さ — 処理不能なリクエストが蓄積したときにスケール
- ワーカーロード — GPU 使用率がしきい値を超えたときにスケール
ワーカーごとのスケーリング
各ワーカーは個別のスケーリング構成を持てます:スケーリングの挙動
- スケールアップ: 30 秒の安定化ウィンドウ
- スケールダウン: フラッピングを避けるため 900 秒(15 分)の安定化ウィンドウ
- ワーカーは個々の負荷に基づいて独立してスケール
本番公開チェックリスト
本番トラフィックを開放する前の最終レビュー:- すべての Pod が
RunningかつReady、すべてのイメージが対象リリースタグであること — 検証 を参照。 - Ingress が FQDN 上で HTTPS を介して到達可能であること — 検証 を参照。
- TLS 証明書がアクティブであること(EKS では ACM 証明書がアタッチ済み、GKE では ManagedCertificate が
Active、セルフマネージドでは BYO 証明書がマウント済み) — Ingress と TLS を参照。 - スモークテストがパスすること — スモークテストとベンチマーク を参照。
- ベンチマーク結果がデプロイした GPU の期待範囲内であること — GPU ごとのパフォーマンス を参照。
- メトリクススクレイプが動作していること(Prometheus をインストールしている場合) — 検証 を参照。
- ファイアウォールとネットワークポリシーがデプロイしたポスチャーと一致すること — アウトバウンド egress (Connected モード) を参照。
- (エアギャップのみ)ライセンスがロードされ、オフライン運用が確認できていること — エアギャップデプロイメント を参照。
- オンコールのランブックに アップグレードとロールバック のロールバック手順がドキュメント化されていること。