第3章 AMQ Online のモノのインターネット (IoT)


重要

AMQ Online のモノのインターネット (IoT) 機能は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされません。また、機能的に完全ではない可能性があるため、Red Hat はテクノロジープレビュー機能を実稼働環境に実装することは推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。サポート範囲の詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

3.1. IoT の使用開始

次の情報では、AMQ Online IoT 機能を設定および管理する方法について説明します。

3.1.1. IoT 接続の概念

モノのインターネット (IoT) 接続機能により、AMQ Online を使用してデバイスを管理し、バックエンドアプリケーションと接続できます。一般的な IoT アプリケーションでは、デバイスには通常のメッセージングアプリケーションとは異なる要件があります。開発者は、通常利用可能な任意のアドレスとセキュリティー設定を使用する代わりに、IoT サービスを使用して、デバイスの ID とセキュリティー設定を明示的に処理し、IoT 空間でよく使用される複数のプロトコルをサポートして、一貫性を持ったサポートを提供して、必要なデバイス通信パターンをサポートします。

IoT 接続

重要な概念の 1 つは デバイスレジストリー です。これは、開発者がデバイスを登録して認証情報を提供するために使用します。これらの認証情報を使用すると、デバイスは、サポートされているプロトコルの 1 つ (HTTP、MQTT、LoRaWAN、および SigFox) を使用して プロトコルアダプター に接続できます。接続すると、デバイスは、次のメッセージングセマンティクスのいずれかを使用して、バックエンドアプリケーションからメッセージを送受信できます。

  • Telemetry: デバイスが非永続データをバックエンドアプリケーションに送信できるようにするため、メッセージは multicast アドレスタイプを使用して送信されます。このオプションは、重要でないセンサーの読み取り値を送信する場合に最適です。
  • Events: デバイスが永続的なデータをバックエンドアプリケーションに送信できるようにするため、queue アドレスタイプを使用してメッセージが送信されます。このオプションは、アラートや通知など、より重要なデバイスデータを送信する場合に最適です。

バックエンドアプリケーションは、コマンド メッセージをデバイスに送信することもできます。コマンドを使用して、デバイスでアクションをトリガーできます。例としては、設定プロパティーの更新、ソフトウェアコンポーネントのインストール、アクチュエーターの状態の切り替えなどがあります。

3.1.2. YAML バンドルを使用した AMQ Online のインストール

AMQ Online をインストールする最も簡単な方法は、定義済みの YAML バンドルを使用することです。

手順

  1. cluster-admin 権限を持つユーザーとしてログインしてます。

    oc login -u system:admin
  2. (オプション) amq-online-infra 以外のプロジェクトにデプロイする場合は、次のコマンドを実行し、後続の手順で amq-online-infra を置き換える必要があります。

    sed -i 's/amq-online-infra/my-project/' install/bundles/amq-online/*.yaml
  3. AMQ Online をデプロイするプロジェクトを作成します。

    oc new-project amq-online-infra
  4. ダウンロードしたリリースファイルの場所にディレクトリーを変更します。
  5. amq-online バンドルを使用してデプロイします。

    oc apply -f install/bundles/amq-online
  6. (オプション) サンプルプランとインフラストラクチャー設定をインストールします。

    oc apply -f install/components/example-plans
  7. (オプション) サンプルのロールをインストールします。

    oc apply -f install/components/example-roles
  8. (オプション) 標準 認証サービスをインストールします。

    oc apply -f install/components/example-authservices/standard-authservice.yaml
  9. (オプション) Service Catalog 統合をインストールします。

    oc apply -f install/components/service-broker
    oc apply -f install/components/cluster-service-broker

3.1.3. IoT サービスのインストール

AMQ Online で IoT 機能の使用を開始するには、まず IoT サービスをインストールする必要があります。

手順

  1. (オプション) amq-online-infra 以外のプロジェクトにデプロイする場合は、次のコマンドを実行し、後続の手順で amq-online-infra を置き換える必要があります。

    sed -i 's/amq-online-infra/my-project/' install/preview-bundles/iot/*.yaml
  2. IoT バンドルをデプロイします。

    oc apply -f install/preview-bundles/iot
  3. MQTT プロトコルアダプターの証明書を作成します。テスト目的で、自己署名証明書を作成できます。

    ./install/components/iot/examples/k8s-tls/create
    oc create secret tls iot-mqtt-adapter-tls --key=install/components/iot/examples/k8s-tls/build/iot-mqtt-adapter-key.pem --cert=install/components/iot/examples/k8s-tls/build/iot-mqtt-adapter-fullchain.pem

    スクリプトを呼び出すときに環境変数 NAMESPACE を設定して、deploy スクリプトがキーと証明書をインストールする namespace をオーバーライドできます。以下に例を示します。

    NAMESPACE=my-namespace ./install/components/iot/examples/k8s-tls/deploy
    注記

    クラスターが localhost で実行されていない場合には、外部クライアント (MQTT など) が適切なサービスに適切に接続できるように、証明書を作成するときにクラスターのホスト名を指定する必要があります。以下に例を示します。

    CLUSTER=x.x.x.x.nip.io install/components/iot/examples/k8s-tls/create
  4. (オプション) PostgreSQL サーバーをインストールし、データベースを作成します。

    oc apply -f install/components/iot/examples/postgresql/deploy

    すでに PostgreSQL インスタンスがあり、それにアクセスするユーザーでデータベースを作成した場合は、この手順を省略できます。

  5. データベーススキーマを適用します。

    作成したデータベースインスタンスで次の SQL ファイルを実行する必要があります。設定によっては、データベース管理者権限が必要になる場合があります。

    • install/components/iot/examples/postgresql/create.sql
    • install/components/iot/examples/postgresql/create.devcon.sql

    データベースに接続された psql コマンドを使用して、SQL ファイルを実行できます。以下は、前の手順で説明したように PostgreSQL をインストールしたときに、コンテナー内から psql を実行する方法の例を示しています。

    oc exec -ti deployment/postgresql -- bash -c "PGPASSWORD=user12 psql device-registry registry" < install/components/iot/examples/postgresql/create.sql
    oc exec -ti deployment/postgresql -- bash -c "PGPASSWORD=user12 psql device-registry registry" < install/components/iot/examples/postgresql/create.devcon.sql
  6. IoT インフラストラクチャー設定の例をインストールします。

    oc apply -f install/components/iot/examples/iot-config.yaml

3.1.4. IoT プロジェクトの作成

IoT サービスをインストールしたら、IoT プロジェクトを作成します。

手順

  1. メッセージングテナントとしてログインします。

    oc login -u developer
  2. 管理対象 IoT プロジェクトを作成します。

    oc new-project myapp
    oc create -f install/components/iot/examples/iot-project-managed.yaml
  3. リソースの準備が整うまで待ちます。

    oc get addressspace iot
    oc get iotproject iot
    注記

    Phase フィールドに両方のリソースの Ready ステータスが表示されていることを確認します。

  4. メッセージングコンシューマーユーザーを作成します。

    oc create -f install/components/iot/examples/iot-user.yaml

3.1.5. IoT デバイスの作成

IoT サービスをインストールして IoT プロジェクトを作成したら、監視するデバイス用の IoT デバイスを作成できます。

3.1.5.1. 新しいデバイスの登録

新しいデバイスを作成するには、最初にデバイスを登録する必要があります。

手順

  1. デバイスレジストリーホストをエクスポートします。

    export REGISTRY_HOST=$(oc -n amq-online-infra get routes device-registry --template='{{ .spec.host }}')
  2. デバイスレジストリーアクセストークンをエクスポートします。

    export TOKEN=$(oc whoami --show-token)

    このトークンは、デバイスレジストリー管理 API に対する認証に使用されます。

  3. 定義された ID でデバイスを登録します (この例では 4711 を使用します)。

    curl --insecure -X POST -i -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" https://$REGISTRY_HOST/v1/devices/myapp.iot/4711
  4. (オプション) 追加の登録情報を指定する必要がある場合は、次のように行います。

    curl --insecure -X POST -i -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" --data-binary '{
    	"via": ["gateway1"]
    }' https://$REGISTRY_HOST/v1/devices/myapp.iot/4711

3.1.5.2. デバイスのユーザー名とパスワード認証情報の設定

新しいデバイスを登録したら、デバイスのユーザー名とパスワード認証情報を設定する必要があります。

手順

  1. デバイスの認証情報を追加します。

    curl --insecure -X PUT -i -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" --data-binary '[{
    	"type": "hashed-password",
    	"auth-id": "sensor1",
    	"secrets": [{
    		"pwd-plain":"'hono-secret'"
    	}]
    }]' https://$REGISTRY_HOST/v1/credentials/myapp.iot/4711

3.1.6. Eclipse Hono コマンドラインクライアントのインストール

手順

  1. Eclipse Hono コマンドラインクライアント をダウンロードします。
  2. メッセージングエンドポイント証明書を取得します。

    oc -n myapp get addressspace iot -o jsonpath={.status.caCert} | base64 --decode > tls.crt
  3. メッセージングエンドポイントのホストとポートをエクスポートします。

    export MESSAGING_HOST=$(oc get -n myapp addressspace iot -o jsonpath='{.status.endpointStatuses[?(@.name=="messaging")].externalHost}')
    export MESSAGING_PORT=443

3.1.7. telemetry コンシューマーの開始

たとえば、センサーの読み取り値などの telemetry データをデバイスからクラウドに送信できます。これを行うには、最初に顧客アプリケーションを実行して telemetry コンシューマーを開始する必要があります。

手順

  1. 顧客アプリケーションを実行して、telemetry を受信します。

    java -jar hono-cli-*-exec.jar --hono.client.host=$MESSAGING_HOST --hono.client.port=$MESSAGING_PORT --hono.client.username=consumer --hono.client.password=foobar --tenant.id=myapp.iot --hono.client.trustStorePath=tls.crt --message.type=telemetry

3.1.8. HTTP を使用した telemetry の送信

HTTP プロトコルを使用して、デバイスからクラウドに telemetry を送信できます。

手順

  1. HTTP プロトコルを使用して telemetry を送信します。

    curl --insecure -X POST -i -u sensor1@myapp.iot:hono-secret -H 'Content-Type: application/json' --data-binary '{"temp": 5}' https://$(oc -n amq-online-infra get routes iot-http-adapter --template='{{ .spec.host }}')/telemetry
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.