メインコンテンツへスキップ
Cartesia はインフラとアプリケーションの両方をデプロイする Terraform 構成を提供しています。既存のクラスタに Helm チャートを直接デプロイすることもできます。
完全な構成は、デプロイ時に Cartesia の担当者から提供されます。

Terraform でのデプロイ

Terraform はクラスタ、ネットワーキング、GPU ドライバーを作成し、Helm 経由で Cartesia をデプロイします。 Cartesia のセルフホストを最も早く始められる方法です。
cartesia-kube を cartesia-kube のダウンロード の説明に従って GCS バケットからダウンロードしてください。

設定

ホットリロードや、デプロイメントへのボイスや発音辞書の追加については アーティファクトの管理 を参照してください。

ワーカーの設定

ワーカーは tfvars ファイル内で定義されます:
すべてのモデルワーカーは、cartesia-sonic- プレフィックスに具体的なモデル名を続けた名前のイメージを使用します。たとえば、sonic-3 は cartesia-sonic-rosy-dragon を使用します。

Helm のみでのデプロイ

既存の Kubernetes クラスタに対しては、Helm チャートを直接デプロイします。

1. 前提条件のインストール

オートスケーリングとメトリクスを使用する場合は、先に KEDA と Prometheus をインストールします:

2. シークレットの作成

3. values.yaml の設定

4. デプロイ

検証

トラフィックを流す前に、デプロイメントが正常であることを確認します。以下のコマンドは、これまでの例で使用したデフォルトの cartesia namespace とリリース名を前提としています。カスタマイズしている場合は適宜置き換えてください。

ロールアウトの監視

ワーカー Pod は GPU メモリへのモデルロードがあるため、API より時間がかかります。inferno_worker_capacity > 0 になるまで、ワーカーは Running のままで Ready にはなりません。

Pod が Ready

すべての Pod が 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 経由)、チャートの PodMonitorcartesia-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 Load Balancer Controller(ALB)向けに 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 にリダイレクトされます。
チャートが Ingress に適用するアノテーションの全セットは cartesia/templates/resources/ingress.yaml を参照してください。

オートスケーリング

Cartesia は Kubernetes デプロイメントに対して 2 レベルのオートスケーリングをサポートします。

Cluster Autoscaler

Pending Pod に基づいてノードをスケールします。tfvars で有効化:
ノードグループ/プールは、リソース不足で Pod がスケジュールできない場合、構成された min_sizemax_size の範囲内でスケールします。

Pod Autoscaler (KEDA)

ロードメトリクスに基づいてワーカー Pod をスケールします。tfvars で有効化:
KEDA は 2 つのスケーリングトリガーを使用します:
  • キューの深さ — 処理不能なリクエストが蓄積したときにスケール
  • ワーカーロード — GPU 使用率がしきい値を超えたときにスケール

ワーカーごとのスケーリング

各ワーカーは個別のスケーリング構成を持てます:
または Helm の values.yaml で:

スケーリングの挙動

  • スケールアップ: 30 秒の安定化ウィンドウ
  • スケールダウン: フラッピングを避けるため 900 秒(15 分)の安定化ウィンドウ
  • ワーカーは個々の負荷に基づいて独立してスケール

本番公開チェックリスト

本番トラフィックを開放する前の最終レビュー:
  • すべての Pod が Running かつ Ready、すべてのイメージが対象リリースタグであること — 検証 を参照。
  • Ingress が FQDN 上で HTTPS を介して到達可能であること — 検証 を参照。
  • TLS 証明書がアクティブであること(EKS では ACM 証明書がアタッチ済み、GKE では ManagedCertificate が Active、セルフマネージドでは BYO 証明書がマウント済み) — Ingress と TLS を参照。
  • スモークテストがパスすること — スモークテストとベンチマーク を参照。
  • ベンチマーク結果がデプロイした GPU の期待範囲内であること — GPU ごとのパフォーマンス を参照。
  • メトリクススクレイプが動作していること(Prometheus をインストールしている場合) — 検証 を参照。
  • ファイアウォールとネットワークポリシーがデプロイしたポスチャーと一致すること — アウトバウンド egress (Connected モード) を参照。
  • (エアギャップのみ)ライセンスがロードされ、オフライン運用が確認できていること — エアギャップデプロイメント を参照。
  • オンコールのランブックに アップグレードとロールバック のロールバック手順がドキュメント化されていること。