Following improvements has been ported the charts: (#18035)

- direct yaml support for Jet charts
- convert README into asciidoc
- use nodeSelector for test pods

Signed-off-by: hasancelik <hasan@hazelcast.com>
This commit is contained in:
Hasan Çelik
2019-10-22 01:11:21 -07:00
committed by Kubernetes Prow Robot
parent db0db9ca1d
commit b96af5625b
13 changed files with 746 additions and 238 deletions
+5 -9
View File
@@ -1,8 +1,10 @@
apiVersion: v1
name: hazelcast-jet
version: 1.2.0
appVersion: "3.1"
appVersion: "3.2"
tillerVersion: ">=2.7.2"
kubeVersion: ">=1.9.0-0"
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.3.0
keywords:
- hazelcast
- jet
@@ -14,10 +16,4 @@ sources:
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
+363
View File
@@ -0,0 +1,363 @@
:repo: helm/charts
== Hazelcast Jet
http://jet.hazelcast.org[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 http://jet.hazelcast.org[jet.hazelcast.org] to learn more about the
architecture and use cases.
=== Quick Start
ifeval::["{repo}"=="hazelcast/charts"]
[source,bash]
----
$ helm repo add hazelcast https://hazelcast.github.io/charts/
$ helm repo update
$ helm install hazelcast/hazelcast-jet
----
endif::[]
ifeval::["{repo}"=="helm/charts"]
[source,bash]
----
$ helm install stable/hazelcast-jet
----
endif::[]
=== Introduction
This chart bootstraps a
https://github.com/hazelcast/hazelcast-jet-docker[Hazelcast Jet] and
https://github.com/hazelcast/hazelcast-jet-management-center-docker[Hazelcast
Jet Management Center] deployments on a http://kubernetes.io[Kubernetes] cluster
using the https://helm.sh[Helm] package manager.
=== Prerequisites
* Kubernetes 1.9+
=== Installing the Chart
To install the chart with the release name `+my-release+`:
ifeval::["{repo}"=="hazelcast/charts"]
[source,bash]
----
$ helm install --name my-release hazelcast/hazelcast-jet
----
endif::[]
ifeval::["{repo}"=="helm/charts"]
[source,bash]
----
$ helm install --name my-release stable/hazelcast-jet
----
endif::[]
The command deploys Hazelcast Jet on the Kubernetes cluster in the default
configuration. The link:#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:
[source,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.
[width="100%",cols="22%,53%,25%",options="header",]
|===
|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.yaml.hazelcast-jet+` and `+jet.yaml.hazelcast+` |Hazelcast Jet and IMDG
YAML configurations (`+hazelcast-jet.yaml+` and `+hazelcast.yaml+` embedded into
`+values.yaml+`) |`+{DEFAULT_JET_YAML}+` and `+{DEFAULT_HAZELCAST_YAML}+`
|`+jet.configurationFiles+` |Hazelcast configuration files |`+nil+`
|`+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+`
|`+securityContext.enabled+` |Enables Security Context for Hazelcast Jet and
Hazelcast Jet Management Center |`+true+`
|`+securityContext.runAsUser+` |User ID used to run the Hazelcast Jet and
Hazelcast Jet Management Center containers |`+1001+`
|`+securityContext.fsGroup+` |Group ID associated with the Hazelcast Jet and
Hazelcast Jet Management Center container |`+1001+`
|`+metrics.enabled+` |Turn on and off JMX Prometheus metrics available at
`+/metrics+` |`+false+`
|`+metrics.service.type+` |Type of the metrics service |`+ClusterIP+`
|`+metrics.service.port+` |Port of the `+/metrics+` endpoint and the metrics
service |`+8080+`
|`+metrics.service.annotations+` |Annotations for the Prometheus discovery |
|`+managementcenter.enabled+` |Turn on and off Hazelcast Jet Management Center
application |`+true+`
|`+managementcenter.image.repository+` |Hazelcast Jet Management Center Image
name |`+hazelcast/hazelcast-jet-management-center+`
|`+managementcenter.image.tag+` |Hazelcast Jet Management Center Image tag
(NOTE: must be the same or one minor release greater than Hazelcast image
version) |`+{VERSION}+`
|`+managementcenter.image.pullPolicy+` |Image pull policy |`+IfNotPresent+`
|`+managementcenter.image.pullSecrets+` |Specify docker-registry secret names as
an array |`+nil+`
|`+managementcenter.javaOpts+` |Additional JAVA_OPTS properties for Hazelcast
Jet Management Center |`+nil+`
|`+managementcenter.licenseKey+` |License Key for Hazelcast Jet Management
Center |`+nil+`
|`+managementcenter.licenseKeySecretName+` |Kubernetes Secret Name, where Jet
Management Center License Key is stored (can be used instead of licenseKey)
|`+nil+`
|`+managementcenter.nodeSelector+` |Hazelcast Jet Management Center node labels
for pod assignment |`+nil+`
|`+managementcenter.resources+` |CPU/Memory resource requests/limits |`+nil+`
|`+managementcenter.service.type+` |Kubernetes service type (`ClusterIP',
`LoadBalancer', or `NodePort') |`+ClusterIP+`
|`+managementcenter.service.port+` |Kubernetes service port |`+8081+`
|`+managementcenter.livenessProbe.enabled+` |Turn on and off liveness probe
|`+true+`
|`+managementcenter.livenessProbe.initialDelaySeconds+` |Delay before liveness
probe is initiated |`+30+`
|`+managementcenter.livenessProbe.periodSeconds+` |How often to perform the
probe |`+10+`
|`+managementcenter.livenessProbe.timeoutSeconds+` |When the probe times out
|`+5+`
|`+managementcenter.livenessProbe.successThreshold+` |Minimum consecutive
successes for the probe to be considered successful after having failed |`+1+`
|`+managementcenter.livenessProbe.failureThreshold+` |Minimum consecutive
failures for the probe to be considered failed after having succeeded. |`+3+`
|`+managementcenter.readinessProbe.enabled+` |Turn on and off readiness probe
|`+true+`
|`+managementcenter.readinessProbe.initialDelaySeconds+` |Delay before readiness
probe is initiated |`+30+`
|`+managementcenter.readinessProbe.periodSeconds+` |How often to perform the
probe |`+10+`
|`+managementcenter.readinessProbe.timeoutSeconds+` |When the probe times out
|`+1+`
|`+managementcenter.readinessProbe.successThreshold+` |Minimum consecutive
successes for the probe to be considered successful after having failed |`+1+`
|`+managementcenter.readinessProbe.failureThreshold+` |Minimum 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,
ifeval::["{repo}"=="hazelcast/charts"]
[source,bash]
----
$ helm install --name my-release \
--set cluster.memberCount=3,serviceAccount.create=false \
hazelcast/hazelcast-jet
----
endif::[]
ifeval::["{repo}"=="helm/charts"]
[source,bash]
----
$ helm install --name my-release \
--set cluster.memberCount=3,serviceAccount.create=false \
stable/hazelcast-jet
----
endif::[]
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,
ifeval::["{repo}"=="hazelcast/charts"]
[source,bash]
----
$ helm install --name my-release -f values.yaml hazelcast/hazelcast-jet
----
endif::[]
ifeval::["{repo}"=="helm/charts"]
[source,bash]
----
$ helm install --name my-release -f values.yaml stable/hazelcast-jet
----
endif::[]
____
*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.
[source,yaml]
----
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,
ifeval::["{repo}"=="hazelcast/charts"]
[source,bash]
----
$ helm install --name my-jet-release \
--set jet.yaml.hazelcast-jet.instance.backup-count=2,jet.yaml.hazelcast.network.kubernetes.service-name=jet-service \
hazelcast/hazelcast-jet
----
endif::[]
ifeval::["{repo}"=="helm/charts"]
[source,bash]
----
$ 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
----
endif::[]
-177
View File
@@ -1,177 +0,0 @@
# 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 stable/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 stable/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` |
| `securityContext.enabled` | Enables Security Context for Hazelcast Jet | `true` |
| `securityContext.runAsUser` | User ID used to run the Hazelcast Jet containers | `1001` |
| `securityContext.fsGroup` | Group ID associated with the Hazelcast Jet container | `1001` |
| `metrics.enabled` | Turn on and off JMX Prometheus metrics available at `/metrics` | `false` |
| `metrics.service.type` | Type of the metrics service | `ClusterIP` |
| `metrics.service.port` | Port of the `/metrics` endpoint and the metrics service | `8080` |
| `metrics.service.annotations` | Annotations for the Prometheus discovery | |
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 stable/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>
```
+25 -1
View File
@@ -58,4 +58,28 @@ To access Hazelcast Jet from outside the Kubernetes cluster:
*) Get health info:
$ curl http://$NODE_IP:$NODE_PORT/hazelcast/health
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.managementcenter.enabled }}
-------------------------------------------------------------------------------
To access Hazelcast Jet Management Center:
{{- if contains "LoadBalancer" .Values.managementcenter.service.type }}
*) Check Management Center external IP:
$ export MANAGEMENT_CENTER_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "hazelcast-jet-management-center.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
*) Open Browser at: http://$MANAGEMENT_CENTER_IP:{{ .Values.managementcenter.service.port }}/
{{- else if contains "ClusterIP" .Values.managementcenter.service.type }}
*) Forward port from POD:
$ export POD=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "hazelcast-jet.name" . }},role=hazelcast-jet-management-center" -o jsonpath="{.items[0].metadata.name}")
$ kubectl port-forward --namespace {{ .Release.Namespace }} $POD 8081:8081
*) Open Browser at: http://127.0.0.1:8081
{{- else if contains "NodePort" .Values.managementcenter.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-management-center.fullname" . }})
*) Open Browser at: http://$NODE_IP:$NODE_PORT/
{{- end }}
{{- end }}
@@ -41,3 +41,13 @@ Create the name of the service account to use
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
{{/*
Create a default fully qualified Hazelcast Jet Management Center 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-management-center.fullname" -}}
{{ (include "hazelcast-jet.fullname" .) | trunc 45 | }}-management-center
{{- end -}}
+8 -1
View File
@@ -1,4 +1,4 @@
{{- if .Values.jet.configurationFiles }}
{{- if or .Values.jet.configurationFiles .Values.jet.yaml }}
apiVersion: v1
kind: ConfigMap
metadata:
@@ -13,4 +13,11 @@ data:
{{ $key }}: |-
{{ $val | indent 4}}
{{- end }}
hazelcast.yaml: |-
hazelcast:
{{ toYaml .Values.jet.yaml.hazelcast | indent 5 }}
{{ $jetYaml := index .Values "jet" "yaml" "hazelcast-jet"}}
hazelcast-jet.yaml: |-
hazelcast-jet:
{{ toYaml $jetYaml | indent 5 }}
{{- end -}}
@@ -0,0 +1,18 @@
{{- if or .Values.managementcenter.configurationFiles .Values.managementcenter.yaml}}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "hazelcast-jet-management-center.fullname" . }}-configuration
labels:
app.kubernetes.io/name: {{ template "hazelcast-jet.name" . }}
helm.sh/chart: {{ template "hazelcast-jet.chart" . }}
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
data:
{{- range $key, $val := .Values.managementcenter.configurationFiles }}
{{ $key }}: |-
{{ $val | indent 4}}
{{- end }}
hazelcast-client.yaml: |-
{{ toYaml .Values.managementcenter.yaml | indent 4 }}
{{- end -}}
@@ -0,0 +1,95 @@
{{- if .Values.managementcenter.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "hazelcast-jet-management-center.fullname" . }}
labels:
app.kubernetes.io/name: {{ template "hazelcast-jet.name" . }}
helm.sh/chart: {{ template "hazelcast-jet.chart" . }}
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: {{ template "hazelcast-jet.name" . }}
helm.sh/chart: {{ template "hazelcast-jet.chart" . }}
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
role: hazelcast-jet-management-center
template:
metadata:
labels:
app.kubernetes.io/name: {{ template "hazelcast-jet.name" . }}
helm.sh/chart: {{ template "hazelcast-jet.chart" . }}
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
role: hazelcast-jet-management-center
spec:
{{- if .Values.managementcenter.image.pullSecrets }}
imagePullSecrets:
{{- range .Values.managementcenter.image.pullSecrets }}
- name: {{ . }}
{{- end}}
{{- end}}
{{- if .Values.managementcenter.nodeSelector }}
nodeSelector:
{{ toYaml .Values.managementcenter.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.securityContext.enabled }}
securityContext:
runAsUser: {{ .Values.securityContext.runAsUser }}
fsGroup: {{ .Values.securityContext.fsGroup }}
{{- end }}
containers:
- name: {{ template "hazelcast-jet-management-center.fullname" . }}
image: "{{ .Values.managementcenter.image.repository }}:{{ .Values.managementcenter.image.tag }}"
imagePullPolicy: {{ .Values.managementcenter.image.pullPolicy | quote }}
resources:
{{ toYaml .Values.managementcenter.resources | indent 10 }}
ports:
- name: mc-port
containerPort: 8081
{{- if .Values.managementcenter.livenessProbe.enabled }}
livenessProbe:
httpGet:
path: /
port: 8081
initialDelaySeconds: {{ .Values.managementcenter.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.managementcenter.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.managementcenter.livenessProbe.timeoutSeconds }}
successThreshold: {{ .Values.managementcenter.livenessProbe.successThreshold }}
failureThreshold: {{ .Values.managementcenter.livenessProbe.failureThreshold }}
{{- end }}
{{- if .Values.managementcenter.readinessProbe.enabled }}
readinessProbe:
httpGet:
path: /
port: 8081
initialDelaySeconds: {{ .Values.managementcenter.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.managementcenter.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.managementcenter.readinessProbe.timeoutSeconds }}
successThreshold: {{ .Values.managementcenter.readinessProbe.successThreshold }}
failureThreshold: {{ .Values.managementcenter.readinessProbe.failureThreshold }}
{{- end }}
volumeMounts:
- name: hazelcast-jet-management-center-storage
mountPath: /data/hazelcast-jet-management-center
env:
- name: MC_LICENSE_KEY
{{- if .Values.managementcenter.licenseKeySecretName }}
valueFrom:
secretKeyRef:
name: {{ .Values.managementcenter.licenseKeySecretName }}
key: key
{{- else }}
value: {{ .Values.managementcenter.licenseKey }}
{{- end }}
- name: JAVA_OPTS
value: " -Djet.clientConfig=/data/hazelcast-jet-management-center/hazelcast-client.yaml -DserviceName={{ template "hazelcast-jet.fullname" . }} -Dnamespace={{ .Release.Namespace }} {{ .Values.managementcenter.javaOpts }}"
serviceAccountName: {{ template "hazelcast-jet.serviceAccountName" . }}
volumes:
- name: hazelcast-jet-management-center-storage
configMap:
name: {{ template "hazelcast-jet-management-center.fullname" . }}-configuration
{{- end -}}
@@ -0,0 +1,23 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "hazelcast-jet-management-center.fullname" . }}
labels:
app.kubernetes.io/name: {{ template "hazelcast-jet.name" . }}
helm.sh/chart: {{ template "hazelcast-jet.chart" . }}
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
spec:
type: {{ .Values.managementcenter.service.type }}
{{- if .Values.managementcenter.service.clusterIP }}
clusterIP: {{ .Values.managementcenter.service.clusterIP }}
{{- end }}
selector:
app.kubernetes.io/name: {{ template "hazelcast-jet.name" . }}
app.kubernetes.io/instance: "{{ .Release.Name }}"
role: hazelcast-jet-management-center
ports:
- protocol: TCP
port: {{ .Values.managementcenter.service.port }}
targetPort: mc-port
name: mc-port
@@ -51,7 +51,7 @@ spec:
{{- if .Values.metrics.enabled }}
- name: metrics
containerPort: {{ .Values.metrics.service.port }}
{{- end }}
{{- end }}
{{- if .Values.livenessProbe.enabled }}
livenessProbe:
httpGet:
@@ -19,6 +19,10 @@ spec:
securityContext:
runAsNonRoot: true
runAsUser: 1001
{{- if .Values.nodeSelector }}
nodeSelector:
{{ toYaml .Values.nodeSelector | indent 4 }}
{{- end }}
containers:
- name: "{{ template "hazelcast-jet.fullname" . }}-test"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
@@ -40,4 +44,4 @@ spec:
capabilities:
drop:
- ALL
restartPolicy: Never
restartPolicy: Never
@@ -0,0 +1,46 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ template "hazelcast-jet-management-center.fullname" . }}-test-{{ randAlphaNum 5 | lower }}"
annotations:
"helm.sh/hook": test-success
"helm.sh/hook-delete-policy": hook-succeeded, hook-failed
labels:
app.kubernetes.io/name: {{ template "hazelcast-jet.name" . }}
helm.sh/chart: {{ template "hazelcast-jet.chart" . }}
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
app.kubernetes.io/component: "test"
role: test
spec:
hostNetwork: false
hostPID: false
hostIPC: false
securityContext:
runAsNonRoot: true
runAsUser: 1001
{{- if .Values.nodeSelector }}
nodeSelector:
{{ toYaml .Values.nodeSelector | indent 4 }}
{{- end }}
containers:
- name: "{{ template "hazelcast-jet-management-center.fullname" . }}-test"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command:
- "bash"
- "-c"
- |
set -ex
# Get the HTTP Response Code of the Deployment
HEALTH_CHECK_HTTP_RESPONSE_CODE=$(curl --write-out %{http_code} --silent --output /dev/null {{ template "hazelcast-jet-management-center.fullname" . }}:{{ .Values.managementcenter.service.port }}/login)
test ${HEALTH_CHECK_HTTP_RESPONSE_CODE} -eq 200
securityContext:
runAsNonRoot: true
runAsUser: 1001
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
restartPolicy: Never
+147 -48
View File
@@ -28,54 +28,58 @@ jet:
rest: true
# javaOpts are additional JAVA_OPTS properties for Hazelcast Jet member
javaOpts:
# configurationFiles are Hazelcast Jet configuration files
configurationFiles:
hazelcast.yaml: |-
hazelcast:
network:
join:
multicast:
enabled: false
kubernetes:
enabled: true
namespace: ${namespace}
service-name: ${serviceName}
resolve-not-ready-addresses: true
hazelcast-jet.yaml: |-
hazelcast-jet:
instance:
# period between flow control packets in milliseconds
flow-control-period: 100
# number of backup copies to configure for Hazelcast IMaps used internally in a Jet job
backup-count: 1
# the delay after which auto-scaled jobs will restart if a new member is added to the
# cluster. The default is 10 seconds. Has no effect on jobs with auto scaling disabled
scale-up-delay-millis: 10000
# Sets whether lossless job restart is enabled for the node. With
# lossless restart you can restart the whole cluster without losing the
# jobs and their state. The feature is implemented on top of the Hot
# Restart feature of Hazelcast IMDG which persists the data to disk.
lossless-restart-enabled: false
edge-defaults:
# capacity of the concurrent SPSC queue between each two processors
queue-size: 1024
# network packet size limit in bytes, only applies to distributed edges
packet-size-limit: 16384
# receive window size multiplier, only applies to distributed edges
receive-window-multiplier: 3
metrics:
# whether metrics collection is enabled
enabled: true
# whether jmx mbean metrics collection is enabled
jmx-enabled: true
# the number of seconds the metrics will be retained on the instance
retention-seconds: 120
# the metrics collection interval in seconds
collection-interval-seconds: 5
# 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
# Jet and Hazelcast IMDG YAML configuration files
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:
# period between flow control packets in milliseconds
flow-control-period: 100
# number of backup copies to configure for Hazelcast IMaps used internally in a Jet job
backup-count: 1
# the delay after which auto-scaled jobs will restart if a new member is added to the
# cluster. The default is 10 seconds. Has no effect on jobs with auto scaling disabled
scale-up-delay-millis: 10000
# Sets whether lossless job restart is enabled for the node. With
# lossless restart you can restart the whole cluster without losing the
# jobs and their state. The feature is implemented on top of the Hot
# Restart feature of Hazelcast IMDG which persists the data to disk.
lossless-restart-enabled: false
edge-defaults:
# capacity of the concurrent SPSC queue between each two processors
queue-size: 1024
# network packet size limit in bytes, only applies to distributed edges
packet-size-limit: 16384
# receive window size multiplier, only applies to distributed edges
receive-window-multiplier: 3
metrics:
# whether metrics collection is enabled
enabled: true
# whether jmx mbean metrics collection is enabled
jmx-enabled: true
# the number of seconds the metrics will be retained on the instance
retention-seconds: 120
# the metrics collection interval in seconds
collection-interval-seconds: 5
# 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
# configurationFiles are any additional Hazelcast Jet configuration files
# configurationFiles:
# nodeSelector is an array of Hazelcast Node labels for POD assignments
# ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
@@ -133,6 +137,7 @@ service:
# 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
@@ -164,3 +169,97 @@ metrics:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
# Hazelcast Jet Management Center application properties
managementcenter:
# enabled is a flag to enable Hazelcast Jet Management Center application
enabled: true
## Hazelcast Jet Management Center image version
## ref: https://hub.docker.com/r/hazelcast/hazelcast-jet-management-center/tags/
##
image:
# repository is the Hazelcast Jet Management Center image name
repository: "hazelcast/hazelcast-jet-management-center"
# tag is the Hazelcast Jet Management Center image tag
tag: "3.1"
# 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
# javaOpts are additional JAVA_OPTS properties for Hazelcast Jet Management Center
javaOpts:
# licenseKey is the license key for Hazelcast Jet Management Center
# if not provided, it can be filled in the Management Center web interface
licenseKey:
# licenseKeySecretName is the name of the secret where the Hazelcast Jet Management Center License Key is stored (can be used instead of licenseKey)
# licenseKeySecretName:
# nodeSelector is an array of Hazelcast Jet Management Center Node labels for POD assignments
# ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
nodeSelector: {}
# Jet Client configuration YAML file which will be used by Hazelcast Jet Management Center
yaml:
hazelcast-client:
network:
kubernetes:
enabled: true
namespace: ${namespace}
service-name: ${serviceName}
resolve-not-ready-addresses: true
# configurationFiles are any additional Hazelcast Jet Client configuration files
# configurationFiles:
# Configure resource requests and limits
# ref: http://kubernetes.io/docs/user-guide/compute-resources/
#
# resources:
# requests:
# memory: 256Mi
# cpu: 100m
# Hazelcast Jet Management Center Service properties
service:
# type defines the Kubernetes service type ('ClusterIP', 'LoadBalancer', or 'NodePort')
type: LoadBalancer
# port is the Kubernetes service port
port: 8081
# Hazelcast Jet Management Center 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 Jet Management Center 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