# GKEでのMLOpsエージェントのデプロイ

> GKEでのMLOpsエージェントのデプロイ - DataRobotのモデルを監視するために、GKEにMLOpsエージェントをデプロイします。

This Markdown file sits beside the HTML page at the same path (with a `.md` suffix). It summarizes the topic and lists links for tools and LLM context.

Companion generated at `2026-07-15T05:55:44.914663+00:00` (UTC).

## Primary page

- [GKEでのMLOpsエージェントのデプロイ](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [概要](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#overview): In-page section heading.
- [前提条件](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#prerequisites): In-page section heading.
- [手順](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#procedure): In-page section heading.
- [外部デプロイの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#create-an-external-deployment): In-page section heading.
- [Pub/Subトピックとサブスクリプションの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#create-a-pub-sub-topic-and-subscription): In-page section heading.
- [MLOpsエージェントをDockerに埋め込む](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#embed-mlops-agent-in-docker): In-page section heading.
- [Dockerをローカルで実行する](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#run-docker-locally): In-page section heading.
- [DockerイメージをContainer Registryにプッシュする](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#push-docker-image-to-the-container-registry): In-page section heading.
- [GKEクラスターの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#create-the-GKE-cluster): In-page section heading.
- [クラウドルーターの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#create-a-cloud-router): In-page section heading.
- [K8s ConfigMapの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#create-k8s-configmaps): In-page section heading.
- [K8sデプロイの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#create-the-k8s-deployment): In-page section heading.
- [モデルのスコアリング](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#score-the-model): In-page section heading.
- [削除](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#clean-up): In-page section heading.

## Documentation content

次の手順では、スプーラーとしてPub/Subを使用してMLOpsエージェントを、Google Kubernetes Engine（GKE）にデプロイする方法について説明します。 これにより、DataRobotの外部で開発されたカスタムPythonモデルを監視できます。 カスタムモデルはローカルマシンでスコアリングされ、Google Cloud Platform（GCP）に統計が送信されます。 [Pub/Sub](https://cloud.google.com/pubsub#section-5) 。 最後に、（GKEにデプロイされた）エージェントがこのデータを使用し、DataRobot MLOpsダッシュボードに送り返します。

## 概要

[DataRobot MLOps](https://docs.datarobot.com/ja/docs/api/dev-learning/python/mlops/index.html.md) は、DataRobot [MLOpsエージェント](https://docs.datarobot.com/ja/docs/classic-ui/mlops/deployment/mlops-agent/index.html.md) を使用して一元化されたダッシュボードで、すべてのMLモデル（DataRobotまたは外部でトレーニングされたモデル）を監視する機能を提供します。 デプロイされたモデルと並行して実行されるJavaユーティリティであるエージェントは、Java、Python、Rプログラミング言語で開発されたモデルを監視できます。

MLOpsエージェントは、スプーラー（つまり、ファイルシステム、GCP Pub/Sub、AWS SQS、またはRabbitMQ）を介してモデルと通信し、MLOpsダッシュボードにモデル統計を送り返します。 これらには、スコアリングされたレコードの数、特徴量の数、スコアリング時間、データドリフトなどを含めることができます。 エージェントをDockerイメージに組み込み、それをKubernetesクラスターにデプロイして、スケーラビリティと堅牢性を確保できます。

## 前提条件

メイン設定を作成する前に、次の手順を完了する必要があります。

1. お使いのオペレーティングシステムに固有のGoogle Cloud SDKをインストールします。
2. コマンドプロンプトで次のコマンドを実行します。 gcloud init 既存のプロジェクトを選択するか、新しいプロジェクトを作成し、コンピューティングゾーンも選択するよう求められます。
3. Kubernetesコマンドラインツールをインストールします。 gcloud components install kubectl
4. Google Cloudサービスアカウントの資格情報を取得して、Google Cloud APIを呼び出します。デフォルトのサービスアカウントをお持ちでない場合は、この手順に従って作成できます。
5. 資格情報が配置されたら、それらを含むJSONファイルをダウンロードします。 後で、Google Cloud APIを呼び出すアプリケーションに資格情報を渡すときは、次のいずれかの方法を使用できます。

## 手順

次のセクションでは、プロセスの各手順で、Pub/Subを使用してMLOpsエージェントをGKEにデプロイする手順について説明します。

### 外部デプロイの作成

まず、 [外部デプロイを作成](https://docs.datarobot.com/ja/docs/classic-ui/mlops/deployment/deploy-methods/deploy-external-model.html.md) します。 結果のモデルIDとデプロイIDを使用して、エージェントとの通信を設定します（ [Dockerをローカルで実行する](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#run-docker-locally) の手順で説明されています）。

### Pub/Subトピックとサブスクリプションの作成

次に、Pub/Subトピックとサブスクリプションを作成します。

1. Google CloudコンソールのPub/Subサービスに移動し、トピック（パブリッシャーがメッセージを送信できる名前付きリソース）を作成します。
2. サブスクリプションを作成します。サブスクリプションは、1つの特定のトピックからのメッセージストリームを表す名前付きリソースで、サブスクライブしているアプリケーションに配信されます。 前の手順のPub/Subトピックを使用して、配信タイプをPullに設定します。 これにより、サブスクリプションIDが提供されます。 さらに、メッセージの保持期間やその他のパラメーターを設定できます。

### MLOpsエージェントをDockerに埋め込む

エージェントを埋め込むDockerイメージを作成するには：

1. マシン上に作業ディレクトリを作成し、必要なファイルを準備します。
2. confという名前のディレクトリを作成します。
3. MLOpsエージェントを含むtarballファイルをAPIのキーとツールからダウンロードし、解凍します。
4. mlops.log4j2.propertiesファイルを<unzipped directory>/confから<working directory/conf>にコピーします。
5. ファイルmlops.agent.conf.yamlを作業ディレクトリにコピーします。 次のパラメーターを指定します（この例では、他のすべてのパラメーターにデフォルトを使用しています）。 パラメーター定義mlopsUrlセルフマネージドAIプラットフォームのインストールURL。マネージドAIプラットフォームではapp.datarobot.comapiTokenDataRobot keyprojectIdGCP ProjectIdtopicNamePub/Subセクションで作成済み 例： mlopsUrl:"MLOPS-URL"apiToken:"YOUR-DR-API-TOKEN"channelConfigs:-type:"PUBSUB_SPOOL"details:{name:"pubsub",projectId:"YOUR-GOOGLE-PROJECT-ID",topicName:"YOUR-PUBSUB-TOPIC-ID-DEFINED-AT-STEP-2"}
6. <unzipped directory>/lib/mlops-agent-X.X.X.jarファイルを作業ディレクトリにコピーします。
7. 作業ディレクトリで、次の内容を使用してDockerfileを作成します。 FROMopenjdk:8ENVAGENT_BASE_LOC=/opt/datarobot/maENVAGENT_LOG_PROPERTIES=mlops.log4j2.propertiesENVAGENT_CONF_LOC=$AGENT_BASE_LOC/conf/mlops.agent.conf.yamlCOPYmlops-agent-*.jar${AGENT_BASE_LOC}/mlops-agent.jarCOPYconf$AGENT_BASE_LOC/confCOPYentrypoint.sh/RUNchmod+x/entrypoint.shENTRYPOINT["./entrypoint.sh"]
8. 次の内容でentrypoint.shを作成します。 #!/bin/shecho"######## STARTING MLOPS-AGENT ########"echoexecjava-Dlog.file=$AGENT_BASE_LOC/logs/mlops.agent.log-Dlog4j.configurationFile=file:$AGENT_BASE_LOC/conf/$AGENT_LOG_PROPERTIES-cp$AGENT_BASE_LOC/mlops-agent.jarcom.datarobot.mlops.agent.Agent--config$AGENT_CONF_LOC
9. Dockerビルドコマンドの最後に必ずピリオド（.）を含めて、Dockerイメージを作成します。 exportPROJECT_ID=ai-XXXXXXX-111111

dockerbuild-tgcr.io/${PROJECT_ID}/monitoring-agents:v1.
10. docker imagesコマンドを実行して、ビルドが成功したことを確認します。

### Dockerをローカルで実行する

> [!NOTE] 備考
> 厳密に言えばオプションの手順ですが、ベストプラクティスでは、時間とネットワーク帯域幅を節約するために、常にローカルでイメージをテストすることをお勧めします。

監視エージェントのtarballには、カスタムPythonモデルからMLOpsに統計情報を送信するために必要なライブラリ（JavaおよびRライブラリを含む）が含まれています。 ライブラリは `lib` ディレクトリにあります。

ローカルで実行するには：

1. Python用DataRobot_MLOpsライブラリをインストールします。 pip install datarobot_mlops_package-<VERSION>/lib/datarobot_mlops-<VERSION>-py2.py3-none-any.whl
2. Dockerコンテナイメージを実行します。 備考前提条件（Google Cloudアカウントの資格情報のダウンロードについて説明する手順）でダウンロードした資格情報を含むJSONファイルが必要になります。 dockerrun-it--rm--namema-v/path-to-you-directory/mlops.agent.conf.yaml:/opt/datarobot/ma/conf/mlops.agent.conf.yaml-v/path-to-your-directory/your-google-application-credentials.json:/opt/datarobot/ma/conf/gac.json-eGOOGLE_APPLICATION_CREDENTIALS="/opt/datarobot/ma/conf/gac.json"gcr.io/${PROJECT_ID}/monitoring-agents:v1 以下は、モデルがスコアリングされるPythonコードの例です（この例ではすべてのパッケージのimport文が省略されています）。 fromdatarobot_mlops.mlopsimportMLOpsDEPLOYMENT_ID="EXTERNAL-DEPLOYMENT-ID-DEFINED-AT-STEP-1"MODEL_ID="EXTERNAL-MODEL-ID-DEFINED-AT-STEP-1"PROJECT_ID="YOUR-GOOGLE-PROJECT-ID"TOPIC_ID="YOUR-PUBSUB-TOPIC-ID-DEFINED-AT-STEP-2"# MLOPS: initialize the MLOps instancemlops=MLOps()\.set_deployment_id(DEPLOYMENT_ID)\.set_model_id(MODEL_ID)\.set_pubsub_spooler(PROJECT_ID,TOPIC_ID)\.init()# Read your custom model pickle file (model has been trained outside DataRobot)model=pd.read_pickle('custom_model.pickle')# Read scoring datafeatures_df_scoring=pd.read_csv('features.csv')# Get predictionsstart_time=time.time()predictions=model.predict_proba(features_df_scoring)predictions=predictions.tolist()num_predictions=len(predictions)end_time=time.time()# MLOPS: report the number of predictions in the request and the execution timemlops.report_deployment_stats(num_predictions,end_time-start_time)# MLOPS: report the features and predictionsmlops.report_predictions_data(features_df=features_df_scoring,predictions=predictions)# MLOPS: release MLOps resources when finishedmlops.shutdown()
3. GOOGLE_APPLICATION_CREDENTIALS環境変数を設定します。 export GOOGLE_APPLICATION_CREDENTIALS="<your-google-application-credentials.json>"
4. モデルが期待どおりに機能するかどうかをテストするために、ローカルでデータをスコアリングします。 その後、監視エージェントログに新しいレコードが表示されます。 python score-your-model.py MLOpsダッシュボードの統計も更新されます。

### DockerイメージをContainer Registryにプッシュする

コンテナイメージをローカルでテストして検証したら、それをレジストリにアップロードして、Google Kubernetes Engine（GKE）クラスターをダウンロードして実行できるようにします。

1. Container Registryに対して認証するようにDockerコマンドラインツールを設定します。 gcloud auth configure-docker
2. ビルドしたDockerイメージをContainer Registryにプッシュします。 docker push gcr.io/${PROJECT_ID}/monitoring-agents:v1

### GKEクラスターの作成

DockerイメージをContainer Registryに保存したら、次のようにGKEクラスターを作成します。

1. gcloudツールのプロジェクトIDとCompute Engineゾーンオプションを設定します。 gcloud config set project $PROJECT_ID gcloud config set compute/zone europe-west1-b
2. クラスターを作成します。 備考この例では、わかりやすくするために、パブリックエンドポイントへのアクセスが無制限のプライベートクラスターを作成します。 セキュリティ上、本番環境のコントロールプレーンへのアクセスを必ず制限してください。 さまざまなGKE限定公開クラスターの設定に関する詳細については、こちらをご覧ください。 gcloudcontainerclusterscreatemonitoring-agents-cluster\--networkdefault\--create-subnetworkname=my-subnet-0\--no-enable-master-authorized-networks\--enable-ip-alias\--enable-private-nodes\--master-ipv4-cidr172.16.0.32/28\--no-enable-basic-auth\--no-issue-client-certificate 各パラメーターについて説明します。 パラメーター結果--create-subnetwork name=my-subnet-0GKEは、my-subnet-0という名前のサブネットを自動的に作成します。--no-enable-master-authorized-networksクラスターの承認済みネットワークを無効にします。--enable-ip-aliasクラスターをVPCネイティブにします。--enable-private-nodesクラスターのノードに外部IPアドレスがないことを示します。--master-ipv4-cidr 172.16.0.32/28コントロールプレーンの内部アドレス範囲を指定します。 この設定は、このクラスターに対して永続的です。--no-enable-basic-authクラスターの基本認証を無効にします。--no-issue-client-certificateクライアント証明書の発行を無効にします。
3. 次のコマンドを実行してクラスターワーカーインスタンスを表示します。 gcloud compute instances list

### クラウドルーターの作成

GKEプライベートクラスターで実行されているMLOpsエージェントは、DataRobot MLOpsサービスにアクセスする必要があります。 これを行うには、プライベートノードにインターネットへのアウトバウンドアクセスを許可する必要があります。これは、NATクラウドルーターを使用して実現できます（ [Googleのドキュメントはこちら](https://cloud.google.com/nat/docs/gke-example#gcloud_4) ）。

1. クラウドルーターの作成： gcloudcomputerouterscreatenat-router\--networkdefault\--regioneurope-west1
2. ルーターに設定を追加します。 gcloudcomputeroutersnatscreatenat-config\--router-regioneurope-west1\--routernat-router\--nat-all-subnet-ip-ranges\--auto-allocate-nat-external-ips​

#### K8s ConfigMapの作成

クラウドルーターを設定したら、K8s ConfigMapを作成して、MLOpsエージェント設定とGoogle資格情報を含めることができます。 [前提条件](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/mlops-agent-with-gke.html.md#prerequisites) の段階で作成した、ダウンロード済みJSON資格情報ファイルが必要になります。

> [!NOTE] 備考
> K8s Secretsを使用して、本番環境で使用する設定ファイルを保存します。

次のコードを使用してConfigMapを作成します。

```
kubectl create configmap ma-configmap --from-file=mlops.agent.conf.yaml=your-path/mlops.agent.conf.yaml

kubectl create configmap gac-configmap --from-file=gac.json=your-google-application-credentials.json 
```

#### K8sデプロイの作成

デプロイを作成するには、次の内容で `ma-deployment.yaml` ファイルを作成します。

> [!NOTE] 備考
> この例では、3つの常時実行レプリカを使用しています。自動スケーリングの場合、 `kubectl autoscale deployment` を使用します。

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ma-deployment
  labels:
    app: ma
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ma
  template:
    metadata:
      labels:
        app: ma
    spec:
      containers:
      - name: ma
        image: gcr.io/${PROJECT_ID}/monitoring-agents:v1
        volumeMounts:
        - name:  agent-conf-volume
          mountPath: /opt/datarobot/ma/conf/mlops.agent.conf.yaml
          subPath: mlops.agent.conf.yaml
        - name:  gac-conf-volume
          mountPath: /opt/datarobot/ma/conf/gac.json
          subPath: gac.json
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /opt/datarobot/ma/conf/gac.json
        ports:
        - containerPort: 80
      volumes:
      - name:  agent-conf-volume
        configMap:
          items:
          - key: mlops.agent.conf.yaml
            path: mlops.agent.conf.yaml
          name: ma-configmap
      - name:  gac-conf-volume
        configMap:
          items:
          - key: gac.json
            path: gac.json
          name: gac-configmap 
```

次に、以下のコマンドでデプロイを作成します。

`kubectl apply -f ma-deployment.yaml`

最後に、実行中のポッドを確認します。

`kubectl get pods`

### モデルのスコアリング

ローカルモデルをスコアリングし、出力を確認します。

1. ローカルモデルをスコアリングします。 python score-your-model.py
2. GKE Podのログを確認します。1つのレコードがDataRobotに送信されたことを示しています。
3. Pub/Subログを確認します。
4. DataRobot MLOpsダッシュボードを確認します。

### 削除

1. ルーターのNATを削除します。 gcloud compute routers nats delete nat-config --router=nat-router --router-region=europe-west1
2. クラウドルーターを削除します。 gcloud compute routers delete nat-router --region=europe-west1
3. クラスターを削除します。 gcloud container clusters delete monitoring-agents-cluster
