【Xi IoT】xi-iot cli を使って Xi IoT外部と Kafka接続
xi-iot cliがリリースされていました(ちょっと前)
このCLIを使うと Xi IoTでいろいろできることが増えそうです
早速 xi-iot cli を使って、Xi IoT上の Kafkaブローカーを外部の Elastic Stack に接続してみる実験をします
(Kafka as a Service とでも? )
xi-iot cliのバイナリと情報はここから入手できます
github.com
Xi IoT の Kafka 外部接続の参考はこちら
karbon-platform-services/services/kafka at master · nutanix/karbon-platform-services · GitHub
ここの手順に従い早速 xi-iot cli のセットアップをやってみます
Macでのセットアップ
先程のGit hubよりMAC用のバイナリを入手し、手順通り解凍してやります
(Windows版はリンク切れしてた)
$ mkdir xi-iot && tar zxvf xi-iot-v1.0.0-rc5-darwin_amd64.tar.gz -C xi-iot x ./ x ./xi-iot x ./install
続いてインストール
$ sudo xi-iot/install copying CLI from /xiiot_cli/xi-iot to /usr/local/bin/xi-iot successfully copied CLI binary to /usr/local/bin/xi-iot. Please make sure /usr/local/bin is added to your $PATH
CLIでポータルサイトにログイン
先にXi IoTポータルサイト上で cli接続用ユーザを作ります
作ったユーザで接続してみます
$ sudo xi-iot config create-context local_user_ctx_1 --email sample@sample.com --password PASSWORD
Service Domain(エッジOS)の一覧なんかが見れます
$ sudo xi-iot get node NAME IP ADDRESS SERIAL NUMBER dev-edge-1 192.168.199.97 1C697A056976 fukuoka-01 192.16.0.226 C872876F-4B42-4C45-B7A7-ED97C97A1FF2 fukuoka-edge-1 192.16.0.211 11C6670C-97D3-434F-85F0-5EF97E0ED9BC fukuoka-edge-2 192.16.0.213 03752A13-3E09-4430-BE71-25B1F519B3FB fukuoka-edge-3 192.16.0.215 1C2F1093-D02B-4D6C-BD75-6FE13318DBB0 magi-system 192.168.200.99 001FC69C1081 nagoya-edge01 172.16.101.123 EEFFCB98-4DD8-4C0B-9464-9533DAF7A06A sabotender-edge-1 192.168.199.99 54B20308472B
Kafkaの外部向けのportを開ける
コマンド実行するローカルで、Kafka 外部接続用の yamlファイルを作ります
/* kafka-default.yaml */ kind: service name: Kafka project: プロジェクト名 serviceYaml: | apiVersion: sherlock.nutanix.com/v1 kind: Kafka metadata: name: kafka spec: # Expose Kafka on node port 32092 nodePort: 32092
デプロイします
$ xi-iot create -f kafka-default.yaml
確認
$ xi-iot get service -p プロジェクト名 Kafka -o yaml kind: service name: Kafka project: プロジェクト名 serviceYaml: | apiVersion: sherlock.nutanix.com/v1 kind: Kafka metadata: name: kafka spec: nodePort: 32092
ポータルサイトで確認
Data Service の Kafka を選んで、Projectを選んで
Deployments から Service Domain を確認します
IPアドレス(ServiceDomain)と Port(yaml) に値が入ってればOK
ちなみに設定前はこうなってます
これで外部に立てた Elastic Stack から Kafka のメッセージを受け取ることができます
filebeat の yaml ファイルはこんな感じ
filebeat.yml: |- filebeat.inputs: - type: kafka hosts: ["192.168.199.99:32092"] # ココ topics: ["temperature"] group_id: "xiiot-kafka"
GUIでこの設定くらいできてもいいんじゃないかなぁー思わなくないけど、おもしろうそなの見つけたらチャレンジしてみます