本文へスキップ
#spring-cloud-dataflow
#kubernetes
#minikube
#helm

minikube に Spring Cloud Data Flow を素早く構築する

Helm を使ってローカルの Kubernetes 上にデータパイプライン基盤を立てる

4 分で読めます

Spring Cloud Data Flow とは

Spring Cloud Data Flow は、データ連携やリアルタイムデータ処理のパイプラインを構築するためのツールキットです。ストリーム処理やバッチ処理を、GUI やコマンドから宣言的に組み立てられます。

ここでは、ローカルの minikube 上に Helm を使って Spring Cloud Data Flow(SCDF)を構築します。

前提環境

  1. macOS

  2. minikube(Kubernetes v1.14.0)

  3. Helm(v2.13.1)

    brew install helm
    

クラスタの起動

SCDF は複数のコンポーネント(サーバー、MySQL、RabbitMQ など)を同時に動かすため、デフォルトの 2GB では足りません。4GB 以上 を割り当てて minikube を起動します。

minikube start --memory 4096

Helm でのインストール

Helm のバージョンによって手順が異なります。LoadBalancer は minikube では使えないため、サービスタイプを NodePort に変更する点が共通のポイントです。

Helm 2 系の場合

# minikube に Helm のサーバー(tiller)を初期化
helm init

helm install --name my-release \
  --set server.service.type=NodePort \
  stable/spring-cloud-data-flow

Helm 3 系の場合

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

helm install my-release \
  --set server.service.type=NodePort \
  stable/spring-cloud-data-flow

起動の確認

以下のコンポーネントが立ち上がります。

  • mysql — アプリケーションレジストリやストリーム/タスクのリポジトリを保持する RDBMS
  • rabbitmq — メッセージングミドルウェア
  • server — SCDF 本体のサーバー
  • skipper — アプリのライフサイクル管理を担うコンポーネント

すべての Pod が Running になれば準備完了です。

$ kubectl get pods
NAME                                           READY   STATUS    RESTARTS   AGE
my-release-data-flow-server-96fccf48c-992mn    1/1     Running   0          105m
my-release-data-flow-skipper-6c584bb9d-s5pxv   1/1     Running   0          105m
my-release-mysql-85bfd59986-jgsqg              1/1     Running   0          105m
my-release-rabbitmq-5657497d7c-ljwms           1/1     Running   0          105m

GUI へのアクセス

アクセス URL は http://<minikube の IP>:<サーバーの NodePort>/dashboard の形になります。IP とポートを個別に調べてもよいのですが、minikube には URL を組み立ててくれる便利なコマンドがあります。

# サービスの URL を取得
$ minikube service --url my-release-data-flow-server
http://192.168.99.102:30553

# デフォルトブラウザでダッシュボードを開く
$ open $(minikube service --url my-release-data-flow-server)/dashboard

Spring Cloud Data Flow の GUI

デモ:ストリームを作る

1. アプリの登録

まず、利用するストリーム/タスク用アプリをまとめて登録します。

wget -qO- "$(minikube service --url my-release-data-flow-server)/apps" \
  --post-data="uri=https://dataflow.spring.io/rabbitmq-docker-latest&force=true"
echo "Stream apps imported"

wget -qO- "$(minikube service --url my-release-data-flow-server)/apps" \
  --post-data="uri=https://dataflow.spring.io/task-docker-latest&force=true"
echo "Task apps imported"

2. ストリームの作成

公式デモにならって、time | log(時刻を生成してログに流す)という定番のストリームを作成します。

ticktock ストリームの作成

デプロイすると、ストリームを構成するアプリが Deployment として増えていることを確認できます。

$ kubectl get deployment
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
my-release-data-flow-server    1/1     1            1           19h
my-release-data-flow-skipper   1/1     1            1           19h
my-release-mysql               1/1     1            1           19h
my-release-rabbitmq            1/1     1            1           19h
ticktock-log-v1                1/1     1            1           2m17s
ticktock-time-v1               1/1     1            1           2m17s

参照

  1. Getting Started - Kubernetes
  2. Helm charts(spring-cloud-data-flow)

spring-cloud-dataflow
kubernetes
minikube
helm
記事一覧へ戻る