チュートリアル:Hello, Workload¶
プレミアム機能
Workload APIはプレミアム機能です。 この機能を有効にする方法については、DataRobotの担当者または管理者にお問い合わせください。
このチュートリアルでは、ゼロからDataRobotでコンテナを実行するまでの最短のパスを説明します。約5分で、リクエストヘッダーをエコーする小さな公開サードパーティイメージ(DataRobotが公開したものではありません)である containous/whoami を ドラフトワークロード としてデプロイし、エンドポイントにアクセスして、破棄します。
ドラフトワークロードは、Workload APIにおけるhello-worldに相当します。作成呼び出しは1回だけで、アーティファクトの登録手続きは不要であり、手動でクリーンアップしなくても自動的にクリーンアップされる 8時間のTTL があります。
作業方法に合ったタブを選択してください。cURLはREST APIを直接呼び出し、CLIは同じ呼び出しを dr workload コマンドにラップし、Pulumiは終了状態を宣言して調整します。実行可能なノートブックを使用する場合は、次を選択します。
前提条件¶
curlと、オプションでjqが利用可能なターミナル(以下のコマンドでJSON応答からフィールドを抽出するために使用されます。jqがない場合は、末尾の| jq ...を削除して、代わりに生の応答を読み取ってください)。- シェル変数としてエクスポートされたDataRobot APIエンドポイントとトークン。
export DATAROBOT_ENDPOINT="[https://app.datarobot.com/api/v2](https://app.datarobot.com/api/v2)"
export DATAROBOT_API_TOKEN="<your-api-token>"
dr auth loginで認証されているか、シェルでDATAROBOT_ENDPOINT/DATAROBOT_API_TOKENが設定されている DataRobot CLI(dr)。- ワークロードコマンドの有効化:
export DATAROBOT_CLI_FEATURE_WORKLOAD=true。
- インストール済みの Pulumi CLI と DataRobot Pulumiプロバイダー。
datarobot:endpointとdatarobot:apikeyで設定されたPulumiスタック— Pulumiのセットアップ を参照してください。
whoamiのデプロイ¶
インラインのドラフトアーティファクトを使用してワークロードを作成します—1回の呼び出しでコンテナを定義し、ワークロードを一緒に作成します。
curl -s -X POST "${DATAROBOT_ENDPOINT}/workloads" \
-H "Authorization: Bearer ${DATAROBOT_API_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "hello-whoami",
"artifact": {
"name": "whoami-artifact",
"type": "service",
"spec": {
"containerGroups": [{
"name": "default",
"containers": [{
"name": "whoami",
"imageUri": "containous/whoami:latest",
"port": 8080,
"primary": true,
"entrypoint": ["/whoami", "--port", "8080"],
"readinessProbe": {"path": "/", "port": 8080, "initialDelaySeconds": 5}
}]
}]
}
},
"runtime": {
"containerGroups": [{
"name": "default",
"replicaCount": 1,
"containers": [{
"name": "whoami",
"resourceAllocation": {"cpu": 1, "memory": "512MB"}
}]
}]
}
}' | tee /tmp/workload.json | jq -r '.id'
export WORKLOAD_ID=$(jq -r '.id' /tmp/workload.json)
応答はワークロードオブジェクトです。idは、このチュートリアルの残りの部分で使用されるワークロードIDです。
仕様をファイルに保存します:
name: hello-whoami
artifact:
name: whoami-artifact
type: service
spec:
containerGroups:
- name: default
containers:
- name: whoami
imageUri: containous/whoami:latest
port: 8080
primary: true
entrypoint: ["/whoami", "--port", "8080"]
readinessProbe:
path: "/"
port: 8080
initialDelaySeconds: 5
runtime:
containerGroups:
- name: default
replicaCount: 1
containers:
- name: whoami
resourceAllocation:
cpu: 1
memory: "512MB"
次に、それを作成します:
dr workload create --spec-file workload.yaml --output-format json | tee /tmp/workload.json
export WORKLOAD_ID=$(jq -r '.id' /tmp/workload.json)
import pulumi
import pulumi_datarobot as datarobot
artifact = datarobot.Artifact(
"whoami-artifact",
name="whoami-artifact",
type="service",
spec={
"container_groups": [{
"name": "default",
"containers": [{
"name": "whoami",
"image_uri": "containous/whoami:latest",
"port": 8080,
"primary": True,
"entrypoint": ["/whoami", "--port", "8080"],
"readiness_probe": {"path": "/", "port": 8080, "initial_delay_seconds": 5},
}]
}]
},
)
workload = datarobot.Workload(
"hello-whoami",
name="hello-whoami",
artifact_id=artifact.artifact_id,
runtime={
"container_groups": [{
"name": "default",
"replica_count": 1,
"containers": [{
"name": "whoami",
"resource_allocation": {"cpu": 1, "memory": "512MB"},
}],
}]
},
)
pulumi.export("workloadId", workload.id)
pulumi.export("endpoint", workload.endpoint)
pulumi up
pulumi upはワークロードがrunningに達するまでブロックされるため、応答が返されたら、こんにちはと言う(Say hello)に進みます。
実行の待機¶
ワークロードがrunningに達するまで、ワークロードのステータスをポーリングします。想定される正常な進行:submitted → provisioning → launching → running。runningは、Readiness Probe(Deploy whoamiで設定されたpath: "/")がコンテナのポートで2xxを返すことを必要とします—パスをタイプミスした場合、コンテナ自体が起動していても、ワークロードはlaunchingのままになります。
curl -s "${DATAROBOT_ENDPOINT}/workloads/${WORKLOAD_ID}" \
-H "Authorization: Bearer ${DATAROBOT_API_TOKEN}" | jq -r '.status'
For the full lifecycle audit trail, call the events endpoint directly:
curl -s "${DATAROBOT_ENDPOINT}/workloads/${WORKLOAD_ID}/events" \
-H "Authorization: Bearer ${DATAROBOT_API_TOKEN}"
dr workload status "$WORKLOAD_ID"
erroredと表示されている場合、dr workload get "$WORKLOAD_ID"で詳細を表示できます。
ここですべきことはありません。pulumi upはすでにrunningになるまでブロックされています。
こんにちはと言う¶
呼び出しURLを読み取り、呼び出します。whoamiはリクエストヘッダーと接続情報をエコーバックします。それがHello Worldです。
ENDPOINT=$(curl -s "${DATAROBOT_ENDPOINT}/workloads/${WORKLOAD_ID}" \
-H "Authorization: Bearer ${DATAROBOT_API_TOKEN}" | jq -r '.endpoint')
curl -H "Authorization: Bearer ${DATAROBOT_API_TOKEN}" "${ENDPOINT}"
ENDPOINT=$(dr workload endpoint "$WORKLOAD_ID")
curl -H "Authorization: Bearer ${DATAROBOT_API_TOKEN}" "$ENDPOINT"
curl -H "Authorization: Bearer ${DATAROBOT_API_TOKEN}" "$(pulumi stack output endpoint)"
401エラー
呼び出しが401を返す場合、DATAROBOT_API_TOKENが設定され、Authorization: Bearerヘッダーで渡されていることを再確認してください—プラットフォームは、エンドポイントが到達可能であることが確認された後にのみワークロードをrunningとして報告します。したがって、その時点での永続的な401は、まだ伝播していないルートではなく、トークンに問題があることを示しています。
削除¶
ドラフトワークロードは、8時間のTTL後に自動的に終了するため、クリーンアップはオプションですが、整理しておくことをお勧めします。
curl -X POST "${DATAROBOT_ENDPOINT}/workloads/${WORKLOAD_ID}/stop" \
-H "Authorization: Bearer ${DATAROBOT_API_TOKEN}"
dr workload stop "$WORKLOAD_ID"
pulumi destroy
サマリー¶
このチュートリアルでは、次のことを行いました。
- インラインドラフトアーティファクト(タイプ
service)からドラフトワークロードを作成しました。 - プラットフォームがコンテナグループを構築し、Readiness Probeを実行し、呼び出しURLを割り当てるのを確認しました。
- そのURLを呼び出して、トラフィックがエンドツーエンドで流れることを確認しました。
- アーティファクトが
draftであるため、ワークロードの寿命が短いことを学びました(8時間のTTL、ドラフトアーティファクトごとに1つのワークロード、自動クリーンアップ)。
次のステップ¶
| リソース | 説明 |
|---|---|
| チュートリアル:本番環境ですぐに使用できるコンテナのデプロイ | ロックされたアーティファクト、重要度、共有、監視を使用してサービスを本番環境に移行します。 |
| ワークロードの概念 | オブジェクトモデル、ライフサイクル状態、およびドラフトとロックの決定に関する詳細。 |
| CLIを使用したワークロードの管理 | dr workloadコマンドの完全なリファレンス。 |
| Pulumiを使用したワークロードの管理 | 完全なPulumiプロバイダーリファレンスと本番環境のパターン。 |