coreweave_sandbox_managed_runner リソースを使用すると、CoreWeave Kubernetes Service (CKS) クラスター上のランナーとそのサンドボックスポリシーを管理できます。Terraform は望ましい設定を記録してドリフトを検出し、マネージドランナー API を介して設定の変更を適用します。
属性スキーマの完全な一覧については、マネージドランナーリソースのリファレンスを参照してください。CLI および REST を使用した同等のワークフローについては、ランナーのデプロイと管理を参照してください。
始める前に
次のリソースとツールが必要です。- Terraform と CoreWeave Terraform プロバイダー。例では、
0.x系のプロバイダーバージョン0.26.0以降を使用します。 - 既存の CKS クラスターと、その汎用一意識別子 (UUID) および アベイラビリティゾーン。これらの値は、Cloud console の Clusters ページで確認できます。
SANDBOX_ADMIN権限を持つ CoreWeave API アクセストークン。API アクセストークンを管理するおよびアクセスポリシーを管理するを参照してください。- アクセス制御を備えた Terraform の state バックエンド。Terraform は、ランナーの環境オーバーライドやポリシーの値を sensitive としてマークしている場合でも、それらを state に保存することがあります。
認証を設定する
プロバイダーはCOREWEAVE_API_TOKEN を読み取ります。すでにトークンを CW_API_KEY としてエクスポートしている場合は、次のようにプロバイダー用の環境変数を設定してください。
https://api.coreweave.com です。認証は CoreWeave Intelligent CLI のログインとは別に行われます。トークンは Terraform の設定ファイルに含めないでください。
ランナーを定義する
次の設定をmain.tf ファイルに保存します。この設定では、stable リリースチャンネル、毎週のメンテナンス期間、およびサンドボックスのリソースのデフォルト値とデフォルトの有効期間を定めるポリシーを備えたランナーを作成します。
main.tf
specはランナーを設定します。この例では、spec.overrides.resourcesでランナー自身の Pod のサイズを指定し、メンテナンス期間を毎週土曜日の午前 2 時 (UTC) 開始に設定しています。policyは、ランナーが提供するサンドボックスを設定します。この例では、各サンドボックスコンテナーの CPU とメモリに上限を設け、max_gpu_count = 0で GPU の使用を禁止し、デフォルトの有効期間を 1 時間に設定しています。デフォルトの有効期間は、最大ライフタイムとは異なります。制約をワークロードに合わせて調整するには、サンドボックスポリシーを設定する を参照してください。
policy オブジェクトは必須です。明示的に空のオブジェクトを指定するのは、意図的に空のポリシーを使用する場合のみにしてください。zone の値は小文字である必要がありますが、これは lower(var.zone) によって保証されます。
[RUNNER-ID]、[CLUSTER-ID]、[ZONE] をそれぞれランナー識別子、CKS クラスターの UUID、アベイラビリティゾーンに置き換え、値を terraform.tfvars ファイルに保存します。
terraform.tfvars
設定を適用してロールアウトを検証する
設定を適用してランナーのロールアウトを検証するには、次の手順を実行します。-
プロバイダーを初期化し、設定を検証します。
-
プランを確認して適用します。
適用が成功すると、API が設定を受け付けたことになります。ランナーのインストールとロールアウトは引き続き非同期で進行します。
-
観測されたステータスを更新し、出力を確認します。
install_statusがRUNNER_INSTALL_STATUS_READY、connection_statusがRUNNER_CONNECTION_STATUS_CONNECTEDで、かつactive_revisionがtarget_revisionと一致していれば、ランナーは準備完了です。まだプロビジョニング中の場合は、ロールアウトがある程度進んでから再度更新してください。インストールが失敗した場合は、computed 属性install_errorで詳細を確認できます。
設定を更新する
main.tf ファイル内のリソースを編集し、新しいプランを確認してから適用します。以降の適用でも意図した状態が維持されるよう、ポリシーとオーバーライドの設定は、望ましい状態をすべて Terraform で管理してください。CLI または API で行った変更はドリフトとして検出される場合があり、その後の Terraform の適用によって元に戻される可能性があります。
spec 内の省略可能な設定を削除すると、明示的な API 更新マスクによってその設定がリセットされます。オーバーライドを変更すると spec.overrides オブジェクト全体が置き換えられるため、維持したい他のオーバーライドも忘れずに残してください。解決済みの deployment_spec は読み取り専用です。
プロバイダーはポリシーのリビジョントークン (etag) を使用するため、ポリシーが同時に編集されると適用が失敗する場合があります。再試行する前に、状態をリフレッシュして新しいプランを確認してください。runner_id、cluster_id、または zone を変更すると、ランナーはインプレースで更新されず、置き換えられます。
ランナーのアフィニティを設定する
アフィニティを使用するには、spec.overrides.affinity を含むプロバイダーのリリースが必要です。プロバイダー 0.26.0 にはこの属性が含まれていません。この属性をサポートするバージョンが利用可能になるまでは、REST のアフィニティの例を使用してください。REST で行った変更が後続の apply で上書きされないように、Terraform の設定と整合をとってください。
この属性をサポートするプロバイダーをインストールしたら、既存の spec.overrides オブジェクトに次の属性をマージします。例示用のラベルは、お使いのクラスターのノードで使用されているラベルに置き換えてください。
Affinity attribute inside spec.overrides
Affinity JSON を受け入れます。jsonencode() 内のキーには Kubernetes のキャメルケースを使用します。この優先ルールでは、条件を満たす他のノードも引き続き利用可能なため、On-demand ノードが優先的に配置先になるとは限りません。既存のノードセレクターとトレランスも引き続き適用されます。
アフィニティが制御するのはランナー Pod のみです。サンドボックス Pod の配置やノード割り当て予算は設定されません。
アフィニティは部分的にではなく、全体が置き換えられます。継承されたアフィニティを含むすべてのルールをクリアするには、affinity = jsonencode({}) を設定します。プラットフォームのデフォルトに戻すには、この属性を削除します。いずれの場合も、spec.overrides 内の他の属性のうち、引き続き必要なものは残しておいてください。
既存のランナーをインポートする
ランナー設定の例にあるリソースと変数を定義し、適用する前に、そのポリシーと spec を既存のランナーに合わせて調整します。[RUNNER-ID] は、API トークンに関連付けられた組織内のランナー識別子に置き換えてください。
ランナーを削除する
設定から、リソースと、runner_status 出力を含むそのリソースへの参照をすべて削除します。その後、生成されたプランを確認して適用します。リソースを削除すると、マネージドランナーは廃止されます。プロバイダーは削除の完了を最大 30 分間待機し、その後リソースを state から削除します。