Back to Charts

DEPRECATED - Hazelcast Jet

stable/hazelcast-jet/README.md

latest27.2 KB
Original Source

DEPRECATED - Hazelcast Jet

Hazelcast Jet is a distributed computing platform built for high-performance stream processing and fast batch processing. It embeds Hazelcast In-Memory Data Grid (IMDG) to provide a lightweight, simple-to-deploy package that includes scalable in-memory storage.

Visit jet-start.sh to learn more about the architecture and use cases.

This Helm chart is deprecated

Given the stable deprecation timeline, the Hazelcast Jet Helm chart is now located at hazelcast/charts.

The Hazelcast Jet chart repo is also avaliable at Helm Hub.

To install new chart, you just need to add the related repo and use hazelcast/hazelcast-jet instead of stable/hazelcast-jet as a chart name.

bash
$ helm repo add hazelcast https://hazelcast-charts.s3.amazonaws.com/
$ helm install my-release hazelcast/hazelcast-jet            # Helm 3
$ helm install --name my-release hazelcast/hazelcast-jet    # Helm 2

Quick Start

$ helm install my-release stable/hazelcast-jet        # Helm 3
$ helm install --name my-release stable/hazelcast-jet # Helm 2

Introduction

This chart bootstraps a Hazelcast Jet and Hazelcast Jet Management Center deployments on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Kubernetes 1.9+

Installing the Chart

To install the chart with the release name my-release:

$ helm install my-release stable/hazelcast-jet        # Helm 3
$ helm install --name my-release stable/hazelcast-jet # Helm 2

The command deploys Hazelcast Jet on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm delete my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The following table lists the configurable parameters of the Hazelcast chart and their default values.

ParameterDescriptionDefault
image.repositoryHazelcast Jet Image namehazelcast/hazelcast-jet
image.tagHazelcast Jet Image tag{VERSION}
image.pullPolicyImage pull policyIfNotPresent
image.pullSecretsSpecify docker-registry secret names as an arraynil
cluster.memberCountNumber of Hazelcast Jet members2
jet.javaOptsAdditional JAVA_OPTS properties for Hazelcast Jet membernil
jet.loggingLevelLevel of Hazelcast Jet logs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, and FINEST); note that changing this value requires setting securityContext.runAsUser to 0nil
jet.yaml.hazelcast-jet and jet.yaml.hazelcastHazelcast Jet and IMDG YAML configurations (hazelcast-jet.yaml and hazelcast.yaml embedded into values.yaml){DEFAULT_JET_YAML} and {DEFAULT_HAZELCAST_YAML}
jet.configurationFilesHazelcast configuration filesnil
hostPortPort under which Hazelcast Jet PODs are exposed on the host machinesnil
affinityHazelcast Node affinitynil
tolerationsHazelcast Node tolerationsnil
nodeSelectorHazelcast Node labels for pod assignmentnil
gracefulShutdown.enabledTurn on and off Graceful Shutdowntrue
gracefulShutdown.maxWaitSecondsMaximum time to wait for the Hazelcast Jet POD to shut down600
livenessProbe.enabledTurn on and off liveness probetrue
livenessProbe.initialDelaySecondsDelay before liveness probe is initiated30
livenessProbe.periodSecondsHow often to perform the probe10
livenessProbe.timeoutSecondsWhen the probe times out5
livenessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed1
livenessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded.3
livenessProbe.pathURL path that will be called to check liveness./hazelcast/health/node-state
livenessProbe.portPort that will be used in liveness probe calls.nil
livenessProbe.schemeHTTPS or HTTP scheme.HTTP
readinessProbe.enabledTurn on and off readiness probetrue
readinessProbe.initialDelaySecondsDelay before readiness probe is initiated30
readinessProbe.periodSecondsHow often to perform the probe10
readinessProbe.timeoutSecondsWhen the probe times out1
readinessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed1
readinessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded.3
readinessProbe.pathURL path that will be called to check readiness./hazelcast/health/ready
readinessProbe.portPort that will be used in readiness probe calls.nil
readinessProbe.schemeHTTPS or HTTP scheme.HTTP
resourcesCPU/Memory resource requests/limitsnil
service.typeKubernetes service type (ClusterIP, LoadBalancer, or NodePort)ClusterIP
service.portKubernetes service port5701
service.clusterIPIP of the service, "None" makes the service headlessNone
rbac.createEnable installing RBAC Role authorizationtrue
serviceAccount.createEnable installing Service Accounttrue
serviceAccount.nameName of Service Account, if not set, the name is generated using the fullname templatenil
securityContext.enabledEnables Security Context for Hazelcast Jet and Hazelcast Jet Management Centertrue
securityContext.runAsUserUser ID used to run the Hazelcast Jet and Hazelcast Jet Management Center containers65534
securityContext.runAsGroupPrimary Group ID used to run all processes in the Hazelcast Jet and Hazelcast Jet Management Center containers65534
securityContext.fsGroupGroup ID associated with the Hazelcast Jet and Hazelcast Jet Management Center container65534
securityContext.readOnlyRootFilesystemEnables readOnlyRootFilesystem in the Hazelcast Jet and Hazelcast Jet Management Center security containerstrue
metrics.enabledTurn on and off JMX Prometheus metrics available at /metricsfalse
metrics.service.typeType of the metrics serviceClusterIP
metrics.service.portPort of the /metrics endpoint and the metrics service8080
metrics.service.annotationsAnnotations for the Prometheus discovery
customVolumeConfiguration for a volume which will be mounted as /data/custom (e.g. to mount a volume with custom JARs)nil
managementcenter.enabledTurn on and off Hazelcast Jet Management Center applicationtrue
managementcenter.image.repositoryHazelcast Jet Management Center Image namehazelcast/hazelcast-jet-management-center
managementcenter.image.tagHazelcast Jet Management Center Image tag (NOTE: must be the same or one minor release greater than Hazelcast image version){VERSION}
managementcenter.image.pullPolicyImage pull policyIfNotPresent
managementcenter.image.pullSecretsSpecify docker-registry secret names as an arraynil
managementcenter.javaOptsAdditional JAVA_OPTS properties for Hazelcast Jet Management Centernil
managementcenter.licenseKeyLicense Key for Hazelcast Jet Management Centernil
managementcenter.licenseKeySecretNameKubernetes Secret Name, where Jet Management Center License Key is stored (can be used instead of licenseKey)nil
managementcenter.affinityHazelcast Jet Management Center node affinitynil
managementcenter.tolerationsHazelcast Jet Management Center node tolerationsnil
managementcenter.nodeSelectorHazelcast Jet Management Center node labels for pod assignmentnil
managementcenter.resourcesCPU/Memory resource requests/limitsnil
managementcenter.service.typeKubernetes service type (ClusterIP, LoadBalancer, or NodePort)ClusterIP
managementcenter.service.portKubernetes service port8081
managementcenter.livenessProbe.enabledTurn on and off liveness probetrue
managementcenter.livenessProbe.initialDelaySecondsDelay before liveness probe is initiated30
managementcenter.livenessProbe.periodSecondsHow often to perform the probe10
managementcenter.livenessProbe.timeoutSecondsWhen the probe times out5
managementcenter.livenessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed1
managementcenter.livenessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded.3
managementcenter.readinessProbe.enabledTurn on and off readiness probetrue
managementcenter.readinessProbe.initialDelaySecondsDelay before readiness probe is initiated30
managementcenter.readinessProbe.periodSecondsHow often to perform the probe10
managementcenter.readinessProbe.timeoutSecondsWhen the probe times out1
managementcenter.readinessProbe.successThresholdMinimum consecutive successes for the probe to be considered successful after having failed1
managementcenter.readinessProbe.failureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded.3

Specify each parameter using the --set key=value,key=value argument to helm install. For example,

# Helm 3
$ helm install my-release \
  --set cluster.memberCount=3,serviceAccount.create=false \
    stable/hazelcast-jet

# Helm 2
$ helm install --name my-release \
  --set cluster.memberCount=3,serviceAccount.create=false \
    stable/hazelcast-jet

The above command sets number of Hazelcast Jet members to 3.

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

$ helm install my-release -f values.yaml stable/hazelcast-jet        # Helm 3
$ helm install --name my-release -f values.yaml stable/hazelcast-jet # Helm 2

Tip: You can use the default values.yaml

Custom Hazelcast IMDG and Jet configuration

Custom Hazelcast IMDG and Hazelcast Jet configuration can be specified inside values.yaml, as the jet.yaml.hazelcast and jet.yaml.hazelcast-jet properties.

jet:
  yaml:
    hazelcast:
      network:
        join:
          multicast:
            enabled: false
          kubernetes:
            enabled: true
            service-name: ${serviceName}
            namespace: ${namespace}
            resolve-not-ready-addresses: true
      management-center:
        enabled: ${hazelcast.mancenter.enabled}
        url: ${hazelcast.mancenter.url}
    hazelcast-jet:
      instance:
        flow-control-period: 100
        backup-count: 1
        scale-up-delay-millis: 10000
        lossless-restart-enabled: false
      edge-defaults:
        queue-size: 1024
        packet-size-limit: 16384
        receive-window-multiplier: 3
      metrics:
        enabled: true
        jmx-enabled: true
        retention-seconds: 120
        collection-interval-seconds: 5
        metrics-for-data-structures: false

Alternatively, above parameters can be modified directly via helm commands. For example,

# Helm 3
$ helm install my-jet-release \
  --set jet.yaml.hazelcast-jet.instance.backup-count=2,jet.yaml.hazelcast.network.kubernetes.service-name=jet-service \
    stable/hazelcast-jet

# Helm 2
$ helm install --name my-jet-release \
  --set jet.yaml.hazelcast-jet.instance.backup-count=2,jet.yaml.hazelcast.network.kubernetes.service-name=jet-service \
    stable/hazelcast-jet

Adding custom JAR files to the classpath

You can mount any volume which contains your JAR files to the pods created by helm chart using customVolume configuration.

When the customVolume set, it will mount provided volume to the pod on /data/custom path. This path also appended to the classpath of running Java process.

For example, if you have existing host path Persistent Volume and Persistent Volume Claims like below;

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jet-hostpathpv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/path/to/my/jars"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jet-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

You can configure your Helm chart to use it like below in your values.yaml file.

customVolume:
  persistentVolumeClaim:
    claimName: jet-pv-claim

See Volumes section on the Kubernetes documentation for other available options.

Notable changes

1.4.0

Hazelcast REST Endpoints are no longer enabled by default and the parameter jet.rest is no longer available. If you want to enable REST, please add the related endpoint-groups to the Hazelcast Configuration (jet.yaml.hazelcast). For example:

rest-api:
  enabled: true
  endpoint-groups:
    HEALTH_CHECK:
      enabled: true
    CLUSTER_READ:
      enabled: true
    CLUSTER_WRITE:
      enabled: true