事前準備
このページの CLI、curl、Terraform の例は、いずれも CoreWeave API アクセストークンで認証します。Cloud Console の Tokens ページでトークンを生成し、Token Secret の値をコピーしてください。トークンの詳細については、API アクセストークンの管理を参照してください。
CLI: CoreWeave Intelligent CLI (cwic) をインストールし、cwic auth login を実行して、プロンプトが表示されたらトークンを貼り付けます。トークンはローカルの cwic 設定に保存され、以降のコマンドでは自動的に読み込まれます。環境変数を設定する必要はありません。
curl: このページの例からトークンを参照できるよう、シェルでトークンをエクスポートします。[API-ACCESS-TOKEN] は、ご自身の CoreWeave API アクセストークンに置き換えてください。
sandbox_admin 権限を持つトークンを使用します。このデプロイメントの例では、0.x 系のプロバイダー 0.26.0 以降を使用します。前述のシェルコマンドでエクスポートしたトークンを使用して、プロバイダーの認証変数を次のように設定します。
ランナーコマンド
cwic sandbox runner グループはランナーを管理します。以下の表は、各ライフサイクルタスクとそれを実行するコマンドの対応を示しています。以降のセクションでは、これらのコマンドについてコンテキストに沿って順を追って説明します。
すべての入力は YAML または JSON を受け入れます。
ランナーをデプロイする
組織内の各 CKS クラスターでホストできるマネージドランナーは最大 1 つです。デプロイするには、以下を指定します。- ランナー ID: クライアント側で割り当てる、人が読める形式の ID。組織内で一意である必要があります。
- ゾーン: クラスターが属する地理的ゾーン。
- クラスター ID (またはクラスター名): ランナーを実行する CKS クラスター。どちらも Cloud Console の Clusters ページで確認できます。
- ポリシー: ランナーがそのクラスター上のサンドボックスに適用するルール。サンドボックスを実行するにはポリシーが必要です。省略した場合は、ランナーの接続時に CoreWeave がデフォルトのポリシーを適用します。ポリシーではサンドボックスのデフォルトのライフタイムを指定できます。ただし、上限である 30 日はプラットフォーム側で強制されます。サンドボックスポリシーを設定する を参照してください。
- CLI
- curl
- Terraform
ウィザードでは、クラスター、リリースチャンネル、メンテナンス期間をインタラクティブに入力します。その後、送信前に値が入力済みの spec がエディターで開きます。ファイルモードは YAML または JSON を受け入れます。そのため、再現可能なセットアップにはこの方法が推奨されます。また、Claude Code や Codex など、ユーザーに代わってランナーの spec を生成するエージェントとの併用にも適しています。CLI は spec を送信します。
-f - を指定すると stdin からも読み込めます。[CLUSTER-NAME] は、ランナーをデプロイする CKS クラスターの名前に置き換えてください。runner.yaml
maintenance_policy.windowsはオプションです。設定すると、自動更新は指定した cron ウィンドウの間にのみ適用されます。runner_group_idはオプションです。同じゾーンに複数のランナーがある場合、スケジューリングのアフィニティ指定に使用します。
よくある検証エラー
ランナーのステータスを確認する
作成後、ランナーのステータスを確認して、正常にロールアウトされたかどうかを確認します。ロールアウトに失敗した場合は、ステータスをもとに問題を診断します。- CLI
- curl
- Terraform
get を使用します。prod-us-east-1) またはサーバーが割り当てた UUID を指定できます。installStatus: クラスターへのランナーのデプロイメントの進行状況 (PENDING、PROVISIONING、READY、またはFAILED) 。connectionStatus: 現在の接続状態 (CONNECTEDまたはDISCONNECTED) 。この値はランナーのハートビートによって更新されるため、最大 30 秒の遅延が生じることがあります。
installStatus == FAILED の場合、応答には構造化された installError が含まれます。
remediationHints は、実行すべき action を示します。diagnosticDetail には、サポートチケットを作成する際に添付すると役立つ内部ログも含まれています。
ランナーを更新する
Terraform で管理しているランナーの場合は、リソース設定を編集し、terraform plan の内容を確認してからプランを適用します。目的のポリシーとオーバーライドは、すべて設定内に完全な形で記述しておいてください。CLI または API で行った変更は、その後の適用によって元に戻される可能性があります。ドリフトとリソースの置き換えの動作については、Terraform 設定を更新する を参照してください。
ランナーの編集コマンドは、対話型ウィザードとファイルによるパッチの両方をサポートします。内部的には、更新にフィールドマスクを使用し、変更したフィールドのみが適用されます。それ以外はすべて読み取り専用で、installStatus、connectionStatus、タイムスタンプ、解決済みのデプロイメント仕様も含まれます。
変更可能なフィールドのパスについては、更新時のフィールドマスク を参照してください。
v1 REST API では、PATCH の本文はマネージドランナー自体であり、リクエストのラッパーはありません。フィールドマスクは updateMask クエリパラメーターとして渡されます。マスクが省略されている場合、または空の場合は、変更可能なリソース全体が置き換えられます。
次の 2 つのパスは、従来の v1beta2 サーフェスでのみ受け付けられ、v1 のマネージドランナーへの書き込みでは拒否されます。profile_bindings (代わりに policy を設定してください) と spec.allow_privileged_profile_annotations です。
ランナーの一般的な更新
以下の例では、ランナーに対して最も頻繁に行われる編集を紹介します。リリースチャネルの切り替え、ランナーが保持するポリシーの置き換え、クラスター内でランナー Pod を配置する場所の調整、そしてレガシーのプロファイルテンプレートに特権構成を許可する方法です。例: リリースチャンネルを切り替える
- CLI
- curl
stdin から 1 行のパッチを適用します:または、パッチをファイルに書き込んで送信します:
patch.yaml
例: ポリシーを置き換える
ポリシーはドキュメント全体として置き換えられます。現在のポリシーを読み取り、必要な箇所を変更して送り返してください。policy 内にはフィールド単位のマスクがないため、本文の一部だけを送信すると、省略したグループは消去されます。
CLI および REST の手順については、ポリシーを更新するを参照してください。ポリシーとその etag は同じ読み取りで取得し、編集したドキュメントをその etag とともに送信してください。これにより、同時に行われた変更を検出できます。
例: デプロイメントのオーバーライドによるノード配置の固定
spec.overrides フィールドは、サンドボックスの Pod ではなく、ランナー自体の Pod を調整します。ランナーの Pod を適切なノードに配置するために、特定のトレランス、ノードセレクター、またはランタイムクラスが必要な場合に使用します。
よくあるケースは、SUNK クラスター内で Slurm ジョブと並行して実行できるように、ランナーの Pod を SUNK Pod Scheduler 経由で配置することです。ランナーのオーバーライドにスケジューラー名と SUNK アノテーションを設定します。使用可能なアノテーションと必要な設定については、SUNK Pod Scheduler インテグレーションを参照してください。
- CLI
- curl
overrides.yaml
例: ランナーのアフィニティを設定する
spec.overrides.affinity を使用して、ランナー自身の Pod に対する Kubernetes のノードアフィニティ、Pod アフィニティ、または Pod アンチアフィニティを設定します。値は Kubernetes の Affinity オブジェクトで、その内部のキーには Kubernetes のキャメルケースを使用します。ランナーのアフィニティは、サンドボックス Pod の配置を設定するものではなく、ノードの予算も変更しません。
次の例では、example.com/capacity-class: on-demand というラベルが付いたノードを優先しつつ、条件を満たすその他のノードも引き続き使用できるようにします。この例示用のラベルは、ご使用のクラスターで使用しているラベルに置き換えてください。
- CLI
- REST
- Terraform
ランナーのアフィニティをサポートするバージョンの CoreWeave Intelligent CLI を使用してください。コマンドで
affinity フィールドが不明であると報告される場合は、CLI をアップグレードするか、REST の例を使用してください。-
アフィニティのパッチを保存します。
affinity.yaml
-
ランナーに適用します。
spec.overrides.affinity だけを対象とするため、他のオーバーライドは保持されます。同じパッチに他のオーバーライドフィールドが含まれる場合、CLI は spec.overrides オブジェクト全体を置き換えます。保持したい兄弟のオーバーライドはすべて含めてください。node_selector による制限は引き続き適用されます。NoSchedule または NoExecute の taint を持つノードには、一致するトレランスが必要です。spot へのフォールバックを許可する場合は、spot ノードを除外するノードセレクターを使用しないでください。
配置を厳密に制限するには、requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms を使用します。必須のノードアフィニティと node_selector の両方に一致する必要があります。各 term は論理 OR で、term 内の式は論理 AND で結合されます。必須のノードアフィニティは、ランナーのプリフライトチェックの対象となります。優先アフィニティと Pod アフィニティまたはアンチアフィニティは、スケジューリング時に Kubernetes によって評価されます。
更新後は、cwic sandbox runner describe prod-us-east-1 を使用してロールアウトの進行状況を確認します。API 応答で、activeRevision が targetRevision と一致していること、installStatus が RUNNER_INSTALL_STATUS_READY であること、connectionStatus が RUNNER_CONNECTION_STATUS_CONNECTED であることを確認します。解決後の設定は、出力専用の deploymentSpec.affinity フィールドに表示されます。
アフィニティはルール単位でマージされるのではなく、全体が置き換えられます。継承されたルールも含めてすべてのアフィニティルールを削除するには、空のオブジェクトを明示的に適用します。
affinity: null を使用します。REST の場合は、updateMask=spec.overrides.affinity はそのままにして {"spec":{"overrides":{}}} を送信します。アフィニティをクリアしても、ノードセレクターとトレランスは変更されません。
従来の v1beta2 のフィールドは managed_spec.overrides.affinity です。新しいインテグレーションでは、ここに示す v1 のフィールド spec.overrides.affinity を使用してください。
例: 特権プロファイルの構成を許可する
allow_privileged_profile_annotations は、ランナーにバインドされたレガシーのプロファイルテンプレートが特権的な構成を保持できるかどうかを制御します。ポリシーではなくプロファイルバインディングを引き続き使用しているランナーに適用されるため、リクエストは v1beta2 サーフェスに送信されます。既定値は false で、このフラグが設定されていないランナーでは、特権的な構成を含むテンプレートは拒否されます。
名前から受ける印象とは異なり、このフラグは次の 2 種類の内容を制御します。
- 特権 Pod アノテーション、つまりランタイムおよびスケジューラーのプレフィックス。
serviceAccountName、ホスト名前空間、hostPathボリューム、特権コンテナや権限昇格コンテナなど、特権的な構造化 Pod スペックフィールド。
permission_denied を返し、問題となったフィールド名を示します。たとえば、securityContext.appArmorProfile と securityContext.seccompProfile を設定するテンプレートは、次のように失敗します。
Example output
- CLI
- curl
ランナーの更新をオンデマンドで実行する
ランナーのupdateAvailable が true の場合、次のメンテナンス期間を待たずに、すぐに更新を適用できます。
- CLI
- curl
target_revision を更新します。クラスター内のコントローラーがその更新をロールアウトします。
ランナーの一覧表示
組織内のすべてのランナーを確認する場合や、特定のゾーン、クラスター、接続状態に絞り込んで表示する場合は、次の一覧コマンドを使用します。- CLI
- curl
ランナーを削除する
クラスター上のサンドボックスのキャパシティが不要になった場合、または同じクラスターに新しいランナーを再デプロイする前に、ランナーを削除します。- CLI
- curl
- Terraform
--yes を指定して確認を省略します。関連情報
- ノードの割り当て予算を設定する: Node Pool またはノードのグループごとにサンドボックスの CPU とメモリのリクエストを制限します。
- サンドボックスのアーキテクチャ: リソースモデル、コントロールプレーンとデータプレーンの比較、マルチクラスターのトポロジについて説明します。
- ポリシーの概要: サンドボックスがポリシーに基づいてどのように決定されるかを説明します。
- サンドボックスポリシーを設定する: すべての制約グループを具体例とともに説明します。
- コントロールプレーン API の概要: 認証、フィールドマスク、および各エンドポイントのリクエストと応答の構造について説明します。
- ポリシーリファレンス: ポリシーで設定できるすべてのフィールドを説明します。