mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
Add Hazelcast Jet Helm Chart (#9372)
* Add Hazelcast Jet Helm Chart Signed-off-by: Emin Demirci <emin@hazelcast.com> * Fix linter errors around whitespaces Signed-off-by: Emin Demirci <emin@hazelcast.com> * Added graceful shutdown option Signed-off-by: Emin Demirci <emin@hazelcast.com> * Update stable/hazelcast-jet/README.md Co-Authored-By: eminn <emin@hazelcast.com> Signed-off-by: Emin Demirci <emin@hazelcast.com>
This commit is contained in:
committed by
Kubernetes Prow Robot
parent
3013c78b73
commit
464524cbf9
@@ -0,0 +1,22 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
apiVersion: v1
|
||||
appVersion: "0.7"
|
||||
description: Hazelcast Jet is an application embeddable, distributed computing engine built on top of Hazelcast In-Memory Data Grid (IMDG). With Hazelcast IMDG providing storage functionality, Hazelcast Jet performs parallel execution to enable data-intensive applications to operate in near real-time.
|
||||
name: hazelcast-jet
|
||||
version: 1.0.0
|
||||
keywords:
|
||||
- hazelcast
|
||||
- jet
|
||||
- streaming
|
||||
home: http://jet.hazelcast.org/
|
||||
icon: http://hazelcast.com/images/logos/Hazelcast-Jet-Logo-Blue_Light_Icon_200px.png
|
||||
sources:
|
||||
- https://github.com/hazelcast/hazelcast-jet
|
||||
maintainers:
|
||||
- name: emin
|
||||
email: emin@hazelcast.com
|
||||
- name: leszko
|
||||
email: rafal@hazelcast.com
|
||||
- name: googlielmo
|
||||
email: guglielmo@hazelcast.com
|
||||
- name: mesutcelik
|
||||
email: mesut@hazelcast.com
|
||||
engine: gotpl
|
||||
@@ -0,0 +1,10 @@
|
||||
approvers:
|
||||
- eminn
|
||||
- leszko
|
||||
- mesutcelik
|
||||
- googlielmo
|
||||
reviewers:
|
||||
- eminn
|
||||
- leszko
|
||||
- mesutcelik
|
||||
- googlielmo
|
||||
@@ -0,0 +1,171 @@
|
||||
# Hazelcast Jet
|
||||
|
||||
[Hazelcast Jet](http://jet.hazelcast.org) 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.hazelcast.org](http://jet.hazelcast.org) to learn more
|
||||
about the architecture and use cases.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
$ helm install hazelcast/hazelcast-jet
|
||||
```
|
||||
|
||||
## Introduction
|
||||
|
||||
This chart bootstraps a [Hazelcast Jet](https://github.com/hazelcast/hazelcast-jet-docker) deployments on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Kubernetes 1.9+
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```bash
|
||||
$ helm install --name my-release hazelcast/hazelcast-jet
|
||||
```
|
||||
|
||||
The command deploys Hazelcast Jet on the Kubernetes cluster in the default configuration. The [configuration](#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:
|
||||
|
||||
```bash
|
||||
$ 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.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|--------------------------------------------|----------------------------------------------------------------------------------------------------------------|------------------------------------------------------|
|
||||
| `image.repository` | Hazelcast Jet Image name | `hazelcast/hazelcast-jet` |
|
||||
| `image.tag` | Hazelcast Jet Image tag | `{VERSION}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `nil` |
|
||||
| `cluster.memberCount` | Number of Hazelcast Jet members | 2 |
|
||||
| `jet.rest` | Enable REST endpoints for Hazelcast Jet member | `true` |
|
||||
| `jet.javaOpts` | Additional JAVA_OPTS properties for Hazelcast Jet member | `nil` |
|
||||
| `jet.configurationFiles` | Hazelcast configuration files | `{DEFAULT_HAZELCAST_XML}` |
|
||||
| `nodeSelector` | Hazelcast Node labels for pod assignment | `nil` |
|
||||
| `gracefulShutdown.enabled` | Turn on and off Graceful Shutdown | `true` |
|
||||
| `gracefulShutdown.maxWaitSeconds` | Maximum time to wait for the Hazelcast Jet POD to shut down | `600` |
|
||||
| `livenessProbe.enabled` | Turn on and off liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `3` |
|
||||
| `readinessProbe.enabled` | Turn on and off readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `1` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `3` |
|
||||
| `resources` | CPU/Memory resource requests/limits | `nil` |
|
||||
| `service.type` | Kubernetes service type ('ClusterIP', 'LoadBalancer', or 'NodePort') | `ClusterIP` |
|
||||
| `service.port` | Kubernetes service port | `5701` |
|
||||
| `rbac.create` | Enable installing RBAC Role authorization | `true` |
|
||||
| `serviceAccount.create` | Enable installing Service Account | `true` |
|
||||
| `serviceAccount.name` | Name of Service Account, if not set, the name is generated using the fullname template | `nil` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```bash
|
||||
$ 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 and disables REST endpoints.
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
|
||||
|
||||
```bash
|
||||
$ helm install --name my-release -f values.yaml hazelcast/hazelcast-jet
|
||||
```
|
||||
|
||||
> **Tip**: You can use the default [values.yaml](values.yaml)
|
||||
|
||||
## Custom Hazelcast IMDG and Jet configuration
|
||||
|
||||
Custom Hazelcast IMDG and Hazelcast Jet configuration can be specified inside `values.yaml`, as the `jet.configurationFiles.hazelcast.xml` and `jet.configurationFiles.hazelcast-jet.xml` properties.
|
||||
|
||||
```yaml
|
||||
jet:
|
||||
configurationFiles:
|
||||
hazelcast.xml: |-
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.10.xsd"
|
||||
xmlns="http://www.hazelcast.com/schema/config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<properties>
|
||||
<property name="hazelcast.discovery.enabled">true</property>
|
||||
</properties>
|
||||
<network>
|
||||
<join>
|
||||
<multicast enabled="false"/>
|
||||
<tcp-ip enabled="false" />
|
||||
<discovery-strategies>
|
||||
<discovery-strategy enabled="true" class="com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy">
|
||||
<properties>
|
||||
<property name="service-name">${serviceName}</property>
|
||||
<property name="namespace">${namespace}</property>
|
||||
</properties>
|
||||
</discovery-strategy>
|
||||
</discovery-strategies>
|
||||
</join>
|
||||
</network>
|
||||
<!-- Custom Configuration Placeholder -->
|
||||
</hazelcast>
|
||||
hazelcast-jet.xml: |-
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast-jet xsi:schemaLocation="http://www.hazelcast.com/schema/jet-config hazelcast-jet-config-0.8.xsd"
|
||||
xmlns="http://www.hazelcast.com/schema/jet-config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<instance>
|
||||
<!-- number of threads in the cooperative thread pool -->
|
||||
<cooperative-thread-count>8</cooperative-thread-count>
|
||||
<!-- period between flow control packets in milliseconds -->
|
||||
<flow-control-period>100</flow-control-period>
|
||||
<!-- number of backup copies to configure for Hazelcast IMaps used internally in a Jet job -->
|
||||
<backup-count>1</backup-count>
|
||||
</instance>
|
||||
<!-- custom properties which can be read in the user code -->
|
||||
<properties>
|
||||
<property name="custom.property">custom property</property>
|
||||
</properties>
|
||||
<edge-defaults>
|
||||
<!-- capacity of the concurrent SPSC queue between each two processors -->
|
||||
<queue-size>1024</queue-size>
|
||||
<!-- network packet size limit in bytes, only applies to distributed edges -->
|
||||
<packet-size-limit>16384</packet-size-limit>
|
||||
<!-- receive window size multiplier, only applies to distributed edges -->
|
||||
<receive-window-multiplier>3</receive-window-multiplier>
|
||||
</edge-defaults>
|
||||
<!-- whether metrics collection is enabled -->
|
||||
<metrics enabled="true">
|
||||
<!-- the number of seconds the metrics will be retained on the instance -->
|
||||
<retention-seconds>120</retention-seconds>
|
||||
<!-- the metrics collection interval in seconds -->
|
||||
<collection-interval-seconds>5</collection-interval-seconds>
|
||||
<!-- whether metrics should be collected for data structures. Metrics
|
||||
collection can have some overhead if there is a large number of data
|
||||
structures -->
|
||||
<metrics-for-data-structures>false</metrics-for-data-structures>
|
||||
</metrics>
|
||||
</hazelcast-jet>
|
||||
```
|
||||
@@ -0,0 +1,61 @@
|
||||
** Hazelcast Jet cluster is being deployed! **
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
To access Hazelcast Jet within the Kubernetes cluster:
|
||||
|
||||
- Use Hazelcast Client with Kubernetes Discovery Strategy pointing to DNS: {{ template "hazelcast-jet.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local. Read more at: https://github.com/hazelcast/hazelcast-kubernetes.
|
||||
|
||||
{{- if .Values.jet.rest }}
|
||||
- Use REST healtcheck endpoint:
|
||||
$ curl http://{{ template "hazelcast-jet.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:5701/hazelcast/health
|
||||
{{- end }}
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
To access Hazelcast from outside the Kubernetes cluster:
|
||||
|
||||
- Use Hazelcast Client with Smart Routing disabled:
|
||||
{{- if contains "LoadBalancer" .Values.service.type }}
|
||||
*) Check service external IP:
|
||||
$ export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "hazelcast-jet.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
*) In Hazelcast Client configuration:
|
||||
clientConfig.getNetworkConfig().setSmartRouting(false);
|
||||
clientConfig.getNetworkConfig().addAddress("$SERVICE_IP:{{ .Values.service.port }}");
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
*) Forward port from POD:
|
||||
$ export POD=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "hazelcast-jet.name" . }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
$ kubectl port-forward --namespace {{ .Release.Namespace }} $POD 5701:5701
|
||||
*) In Hazelcast Client configure:
|
||||
clientConfig.getNetworkConfig().setSmartRouting(false);
|
||||
clientConfig.getNetworkConfig().addAddress("127.0.0.1:5701");
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
*) Check Node IP and Port:
|
||||
$ export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
$ export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "hazelcast-jet.fullname" . }})
|
||||
*) In Hazelcast Client configure:
|
||||
clientConfig.getNetworkConfig().setSmartRouting(false);
|
||||
clientConfig.getNetworkConfig().addAddress("$NODE_IP:$NODE_PORT");
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.jet.rest }}
|
||||
|
||||
- Use REST healtcheck endpoint:
|
||||
{{- if contains "LoadBalancer" .Values.service.type }}
|
||||
*) Check service external IP:
|
||||
$ export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "hazelcast-jet.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
*) Get health info:
|
||||
$ curl http://$SERVICE_IP:{{ .Values.service.port }}/hazelcast/health
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
*) Forward port from POD:
|
||||
$ export POD=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "hazelcast-jet.name" . }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
$ kubectl port-forward --namespace {{ .Release.Namespace }} $POD 5701:5701
|
||||
*) Get health info:
|
||||
$ curl http://127.0.0.1:5701/hazelcast/health
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
*) Check Node IP and Port:
|
||||
$ export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
$ export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "hazelcast-jet.fullname" . }})
|
||||
*) Get health info:
|
||||
$ curl http://$NODE_IP:$NODE_PORT/hazelcast/health
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,43 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "hazelcast-jet.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "hazelcast-jet.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "hazelcast-jet.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "hazelcast-jet.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{ default (include "hazelcast-jet.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- if .Values.jet.configurationFiles }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ template "hazelcast-jet.fullname" . }}-configuration
|
||||
labels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
chart: {{ template "hazelcast-jet.chart" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
data:
|
||||
{{- range $key, $val := .Values.jet.configurationFiles }}
|
||||
{{ $key }}: |-
|
||||
{{ $val | indent 4}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "hazelcast-jet.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
chart: {{ template "hazelcast-jet.chart" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- endpoints
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ template "hazelcast-jet.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
chart: {{ template "hazelcast-jet.chart" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ template "hazelcast-jet.fullname" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "hazelcast-jet.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ end }}
|
||||
@@ -0,0 +1,22 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "hazelcast-jet.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
chart: {{ template "hazelcast-jet.chart" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
{{- if .Values.service.clusterIP }}
|
||||
clusterIP: {{ .Values.service.clusterIP }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: {{ .Values.service.port }}
|
||||
targetPort: hazelcast-jet
|
||||
name: hzport
|
||||
@@ -0,0 +1,11 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "hazelcast-jet.serviceAccountName" . }}
|
||||
labels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
chart: {{ template "hazelcast-jet.chart" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,76 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ template "hazelcast-jet.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
chart: {{ template "hazelcast-jet.chart" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
spec:
|
||||
replicas: {{ .Values.cluster.memberCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "hazelcast-jet.name" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
spec:
|
||||
{{- if .Values.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.gracefulShutdown.enabled }}
|
||||
terminationGracePeriodSeconds: {{ .Values.gracefulShutdown.maxWaitSeconds }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "hazelcast-jet.fullname" . }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 10 }}
|
||||
ports:
|
||||
- name: hazelcast-jet
|
||||
containerPort: 5701
|
||||
{{- if .Values.livenessProbe.enabled }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /hazelcast/health/node-state
|
||||
port: 5701
|
||||
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
|
||||
successThreshold: {{ .Values.livenessProbe.successThreshold }}
|
||||
failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
|
||||
{{- end }}
|
||||
{{- if .Values.readinessProbe.enabled }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /hazelcast/health/node-state
|
||||
port: 5701
|
||||
initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
|
||||
successThreshold: {{ .Values.readinessProbe.successThreshold }}
|
||||
failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: hazelcast-jet-storage
|
||||
mountPath: /data/hazelcast-jet
|
||||
env:
|
||||
- name: JAVA_OPTS
|
||||
value: "-Dhazelcast.rest.enabled={{ .Values.jet.rest }} -Dhazelcast.config=/data/hazelcast-jet/hazelcast.xml -Dhazelcast.jet.config=/data/hazelcast-jet/hazelcast-jet.xml -DserviceName={{ template "hazelcast-jet.fullname" . }} -Dnamespace={{ .Release.Namespace }} {{ if .Values.gracefulShutdown.enabled }}-Dhazelcast.shutdownhook.policy=GRACEFUL -Dhazelcast.shutdownhook.enabled=true -Dhazelcast.graceful.shutdown.max.wait={{ .Values.gracefulShutdown.maxWaitSeconds }} {{ end }} {{ .Values.jet.javaOpts }}"
|
||||
serviceAccountName: {{ template "hazelcast-jet.serviceAccountName" . }}
|
||||
volumes:
|
||||
- name: hazelcast-jet-storage
|
||||
configMap:
|
||||
name: {{ template "hazelcast-jet.fullname" . }}-configuration
|
||||
@@ -0,0 +1,161 @@
|
||||
## Hazelcast Jet image version
|
||||
## ref: https://hub.docker.com/r/hazelcast/hazelcast-jet/tags/
|
||||
##
|
||||
image:
|
||||
# repository is the Hazelcast Jet image name
|
||||
repository: "hazelcast/hazelcast-jet"
|
||||
# tag is the Hazelcast Jet image tag
|
||||
tag: "0.7"
|
||||
# pullPolicy is the Docker image pull policy
|
||||
# It's recommended to change this to 'Always' if the image tag is 'latest'
|
||||
# ref: http://kubernetes.io/docs/user-guide/images/#updating-images
|
||||
#
|
||||
pullPolicy: IfNotPresent
|
||||
# pullSecrets is an array of docker-registry secret names
|
||||
# Secrets must be manually created in the namespace.
|
||||
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
# Cluster settings
|
||||
cluster:
|
||||
# memberCount is the number Hazelcast Jet members
|
||||
memberCount: 2
|
||||
|
||||
# Hazelcast Jet properties
|
||||
jet:
|
||||
# rest is a flag used to enable REST endpoints for Hazelcast Jet member
|
||||
rest: true
|
||||
# javaOpts are additional JAVA_OPTS properties for Hazelcast Jet member
|
||||
javaOpts:
|
||||
# configurationFiles are Hazelcast Jet configuration files
|
||||
configurationFiles:
|
||||
hazelcast.xml: |-
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.10.xsd"
|
||||
xmlns="http://www.hazelcast.com/schema/config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<properties>
|
||||
<property name="hazelcast.discovery.enabled">true</property>
|
||||
</properties>
|
||||
<network>
|
||||
<join>
|
||||
<multicast enabled="false"/>
|
||||
<tcp-ip enabled="false" />
|
||||
<discovery-strategies>
|
||||
<discovery-strategy enabled="true" class="com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy">
|
||||
<properties>
|
||||
<property name="service-name">${serviceName}</property>
|
||||
<property name="namespace">${namespace}</property>
|
||||
</properties>
|
||||
</discovery-strategy>
|
||||
</discovery-strategies>
|
||||
</join>
|
||||
</network>
|
||||
</hazelcast>
|
||||
hazelcast-jet.xml: |-
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast-jet xsi:schemaLocation="http://www.hazelcast.com/schema/jet-config hazelcast-jet-config-0.8.xsd"
|
||||
xmlns="http://www.hazelcast.com/schema/jet-config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<instance>
|
||||
<!-- number of threads in the cooperative thread pool -->
|
||||
<cooperative-thread-count>8</cooperative-thread-count>
|
||||
<!-- period between flow control packets in milliseconds -->
|
||||
<flow-control-period>100</flow-control-period>
|
||||
<!-- number of backup copies to configure for Hazelcast IMaps used internally in a Jet job -->
|
||||
<backup-count>1</backup-count>
|
||||
</instance>
|
||||
<!-- custom properties which can be read in the user code -->
|
||||
<properties>
|
||||
<property name="custom.property">custom property</property>
|
||||
</properties>
|
||||
<edge-defaults>
|
||||
<!-- capacity of the concurrent SPSC queue between each two processors -->
|
||||
<queue-size>1024</queue-size>
|
||||
<!-- network packet size limit in bytes, only applies to distributed edges -->
|
||||
<packet-size-limit>16384</packet-size-limit>
|
||||
<!-- receive window size multiplier, only applies to distributed edges -->
|
||||
<receive-window-multiplier>3</receive-window-multiplier>
|
||||
</edge-defaults>
|
||||
<!-- whether metrics collection is enabled -->
|
||||
<metrics enabled="true">
|
||||
<!-- the number of seconds the metrics will be retained on the instance -->
|
||||
<retention-seconds>120</retention-seconds>
|
||||
<!-- the metrics collection interval in seconds -->
|
||||
<collection-interval-seconds>5</collection-interval-seconds>
|
||||
<!-- whether metrics should be collected for data structures. Metrics
|
||||
collection can have some overhead if there is a large number of data
|
||||
structures -->
|
||||
<metrics-for-data-structures>false</metrics-for-data-structures>
|
||||
</metrics>
|
||||
</hazelcast-jet>
|
||||
|
||||
# nodeSelector is an array of Hazelcast Node labels for POD assignments
|
||||
# ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
|
||||
nodeSelector: {}
|
||||
|
||||
gracefulShutdown:
|
||||
enabled: true
|
||||
maxWaitSeconds: 600
|
||||
|
||||
# Hazelcast Liveness probe
|
||||
livenessProbe:
|
||||
# enabled is a flag to used to enable liveness probe
|
||||
enabled: true
|
||||
# initialDelaySeconds is a delay before liveness probe is initiated
|
||||
initialDelaySeconds: 30
|
||||
# periodSeconds decides how often to perform the probe
|
||||
periodSeconds: 10
|
||||
# timeoutSeconds decides when the probe times out
|
||||
timeoutSeconds: 5
|
||||
# successThreshold is the minimum consecutive successes for the probe to be considered successful after having failed
|
||||
successThreshold: 1
|
||||
# failureThreshold is the minimum consecutive failures for the probe to be considered failed after having succeeded
|
||||
failureThreshold: 3
|
||||
|
||||
# Hazelcast Readiness probe
|
||||
readinessProbe:
|
||||
# enabled is a flag to used to enable readiness probe
|
||||
enabled: true
|
||||
# initialDelaySeconds is a delay before readiness probe is initiated
|
||||
initialDelaySeconds: 30
|
||||
# periodSeconds decides how often to perform the probe
|
||||
periodSeconds: 10
|
||||
# timeoutSeconds decides when the probe times out
|
||||
timeoutSeconds: 1
|
||||
# successThreshold is the minimum consecutive successes for the probe to be considered successful after having failed
|
||||
successThreshold: 1
|
||||
# failureThreshold is the minimum consecutive failures for the probe to be considered failed after having succeeded
|
||||
failureThreshold: 3
|
||||
|
||||
# Configure resource requests and limits
|
||||
# ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||
#
|
||||
# resources:
|
||||
# requests:
|
||||
# memory: 256Mi
|
||||
# cpu: 100m
|
||||
|
||||
# Hazelcast Service properties
|
||||
service:
|
||||
# type defines the Kubernetes service type ('ClusterIP', 'LoadBalancer', or 'NodePort')
|
||||
type: ClusterIP
|
||||
# port is the Kubernetes service port
|
||||
port: 5701
|
||||
# clusterIP set to None makes the service headless
|
||||
# It is required if DNS Lookup is used (https://github.com/hazelcast/hazelcast-kubernetes#dns-lookup)
|
||||
# clusterIP: "None"
|
||||
|
||||
# Role-based Access Control
|
||||
rbac:
|
||||
# Specifies whether RBAC resources should be created
|
||||
# It is not required if DNS Lookup is used (https://github.com/hazelcast/hazelcast-kubernetes#dns-lookup)
|
||||
create: true
|
||||
|
||||
serviceAccount:
|
||||
# Specifies whether a ServiceAccount should be created
|
||||
create: true
|
||||
# The name of the ServiceAccount to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name:
|
||||
Reference in New Issue
Block a user