konchangakita

KPSを一番楽しんでいたブログ 会社の看板を背負いません 転載はご自由にどうぞ

【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 とでも? )

f:id:konchangakita:20200704001450p:plain

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接続用ユーザを作ります
f:id:konchangakita:20200704003230p:plain

作ったユーザで接続してみます

$ 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を選んで
f:id:konchangakita:20200704005451p:plain

Deployments から Service Domain を確認します
f:id:konchangakita:20200704010009p:plain

IPアドレス(ServiceDomain)と Port(yaml) に値が入ってればOK
f:id:konchangakita:20200704010145p:plain

ちなみに設定前はこうなってます
f:id:konchangakita:20200619000023p:plain


これで外部に立てた Elastic Stack から Kafka のメッセージを受け取ることができます

filebeat の yaml ファイルはこんな感じ

  filebeat.yml: |-
    filebeat.inputs:
    - type: kafka
      hosts: ["192.168.199.99:32092"]  # ココ
      topics: ["temperature"]
      group_id: "xiiot-kafka"


GUIでこの設定くらいできてもいいんじゃないかなぁー思わなくないけど、おもしろうそなの見つけたらチャレンジしてみます