Spring Cloud DataFlow offers a Helm Chart for deploying the Spring Cloud Data Flow server and its required services to a Kubernetes Cluster.
![]() | Note |
|---|---|
The helm chart is currenlty only available for the 1.2 GA version of Data Flow for Kubernetes. |
The following instructions cover how to initialize Helm and install Spring Cloud Data Flow on a Kubernetes cluster.
Installing Helm
Helm is comprised of 2 components: one is the client (Helm) the other is the server (Tiller).
The Helm client is run on your local machine and can be installed using the following instructions found
here.
If Tiller has not been installed on your cluster, execute the following Helm client command:
$ helm init
![]() | Note |
|---|---|
To verify that the |
Installing the Spring Cloud Data Flow Server and required services.
Before we can run the Spring Cloud Data Flow Chart, we need to access the incubator repository where it currently resides.
To add this repository to our Helm install, execute the following commands:
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com helm repo update
To install Spring Cloud Data Flow and its required services execute the following:
helm install --name my-release incubator/spring-cloud-data-flow
![]() | Note |
|---|---|
If you are running on a cluster without a load balancer, such as Minikube, then you should override the service type to use NodePort.
Add the helm install --name my-release --set server.service.type=NodePort \
incubator/spring-cloud-data-flow |
If you wish specify a different version of Spring Cloud Data Flow besides the
current release, you can set the server.version as shown below:
helm install --name my-release incubator/spring-cloud-data-flow --set server.version=<version-you-want>
![]() | Note |
|---|---|
To see all of the settings that can be configured on the Spring Cloud Data Flow chart, check out the README. |
You should see the following output:
NAME: my-release
LAST DEPLOYED: Tue Oct 3 10:33:50 2017
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/ConfigMap
NAME DATA AGE
my-release-data-flow-server 1 2s
==> v1/PersistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
my-release-mysql Pending standard 2s
my-release-rabbitmq Pending standard 2s
my-release-redis Pending standard 2s
==> v1/Service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-release-mysql 10.59.247.118 <none> 3306/TCP 2s
my-release-rabbitmq 10.59.249.211 <none> 4369/TCP,5672/TCP,25672/TCP,15672/TCP 2s
my-release-redis 10.59.242.108 <none> 6379/TCP 2s
my-release-data-flow-metrics 10.59.247.121 <none> 80/TCP 2s
my-release-data-flow-server 10.59.249.224 <pending> 80:30859/TCP 2s
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-release-mysql 1 1 1 0 2s
my-release-rabbitmq 1 1 1 0 2s
my-release-redis 1 1 1 0 2s
my-release-data-flow-metrics 1 1 1 0 2s
my-release-data-flow-server 1 1 1 0 1s
==> v1/Secret
NAME TYPE DATA AGE
my-release-mysql Opaque 2 2s
my-release-rabbitmq Opaque 2 2s
my-release-redis Opaque 1 2s
my-release-data-flow Opaque 2 2s
NOTES:
1. Get the application URL by running these commands:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of the server by running 'kubectl get svc -w my-release-data-flow-server'
export SERVICE_IP=$(kubectl get svc --namespace default my-release-data-flow-server -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:80You have just created a new release in the default namespace of your Kubernetes cluster.
The notes section gives instructions for connecting to the newly installed server.
It takes a couple of minutes for the application and its required services to start up.
You can check on the status by issuing a kubectl get pod -w command.
Wait for the READY column to show "1/1" for all pods. Once that is done, you can
connect to the Data Flow server using the external ip listed via a
kubectl get svc my-release-data-flow-server command.
The default username is user, and the password is password.
![]() | Note |
|---|---|
If you are running on Minikube then you can use the following command to get the URL for the server: minikube service --url my-release-data-flow-server |
To see what Helm releases you have running, you can use the helm list command.
When it is time to delete the release, run helm delete my-release.
This removes any resources created for the release but keeps release information
so you can rollback any changes using a helm rollback my-release 1 command.
To completely delete the release and purge any release metadata, use helm delete my-release --purge.
![]() | Important |
|---|---|
There is an issue with generated secrets used for the required services getting rotated on chart upgrades. To avoid this set the password for these services when installing the chart. You can use: helm install --name my-release \
--set rabbitmq.rabbitmqPassword=rabbitpwd \
--set mysql.mysqlRootPassword=mysqlpwd \
--set redis.redisPassword=redispwd incubator/spring-cloud-data-flow |