Hazelcast Helm Chart
Note: This blog was originally published in November 2018, but has since been updated with the latest information.
Hazelcast is published in a form of Helm Chart. It means that now deploying a fully-functional Hazelcast cluster on Kubernetes is easier than ever.
Prerequisites
To use Helm Charts you need:
- Kubernetes cluster with
kubectl
configured - Helm 3 tool installed
Installing Hazelcast Helm Chart
To install Hazelcast Helm Chart, run the following commands.
$ helm repo add hazelcast https://hazelcast-charts.s3.amazonaws.com/ $ helm repo update $ helm install my-release hazelcast/hazelcast
That’s all! Your cluster Hazelcast is already deployed and running. You can check it with the following command:
$ kubectl get pods NAME READY STATUS RESTARTS AGE pod/my-release-hazelcast-0 1/1 Running 0 117s pod/my-release-hazelcast-1 1/1 Running 0 76s pod/my-release-hazelcast-2 1/1 Running 0 28s pod/my-release-hazelcast-mancenter-0 1/1 Running 0 117s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.19.240.1 443/TCP 1d service/my-release-hazelcast ClusterIP 10.19.240.140 5701/TCP 1m service/my-release-hazelcast-mancenter LoadBalancer 10.27.243.199 35.225.250.139 8080:31731/TCP,443:30457/TCP 117s NAME READY AGE statefulset.apps/my-release-hazelcast 3/3 118s statefulset.apps/my-release-hazelcast-mancenter 1/1 118s
If you want to confirm that the Hazelcast members really formed a cluster, you check the logs of any Hazelcast Pod.
$ kubectl logs pod/my-release-hazelcast-0 ... Members {size:3, ver:3} [ Member [10.16.1.13]:5701 - 46f5815a-a892-4091-b4d3-bb6940a80663 this Member [10.16.1.14]:5701 - e9244db3-f305-4377-8a81-ef4e89f6add6 Member [10.16.1.15]:5701 - e9244db3-f305-4377-8a81-ef4e89f6add6 ] ...
Note that you can add some configuration to your Hazelcast cluster. For example, if you wanted 4 Hazelcast members instead of 3, you could run:
$ helm install my-release hazelcast/hazelcast --set cluster.memberCount=4
For all parameters, please check the documentation.
Using Hazelcast Cluster
When the Hazelcast cluster is up and running, you can use it by a sample application deployed on Kubernetes. Here’s how Hazelcast Client could be configured in Java.
public ClientConfig clientConfig() { ClientConfig config = new ClientConfig(); config.getNetworkConfig().getKubernetesConfig().setEnabled(true); return config; }
Note that you need to include the latest Maven/Gradle dependency: “com.hazelcast:hazelcast-all
“.
Using Management Center
By default, Management Center is installed together with Hazelcast cluster. You can access it via LoadBalancer external IP.
$ kubectl get service my-release-hazelcast-mancenter NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-release-hazelcast-mancenter LoadBalancer 10.27.243.199 35.225.250.139 8080:31731/TCP,443:30457/TCP 10m
You can access Management Center by the URL specified in LoadBalancer: “http://<EXTERNAL-IP>:8080
“.
Note that you can also use NodePort or Ingress to access Management Center application.
Other Hazelcast Charts
Similar to Hazelcast, you can install other charts:
- Hazelcast Enterprise (
hazelcast/hazelcast-enterprise
) - Hazelcast Jet (
hazelcast/hazelcast-jet
) - Hazelcast Jet Enterprise (
hazelcast/hazelcast-jet-enterprise
)