Skip to content

チュートリアル: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 CLIdr)。
  • ワークロードコマンドの有効化:export DATAROBOT_CLI_FEATURE_WORKLOAD=true

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です。

仕様をファイルに保存します:

workload.yaml
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) 
__main__.py
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に達するまで、ワークロードのステータスをポーリングします。想定される正常な進行:submittedprovisioninglaunchingrunningrunningは、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プロバイダーリファレンスと本番環境のパターン。