blob: 478e1a3c913866b01c0f411be4850170fd3c5f11 [file] [log] [blame] [view]
---
id: deploy-kubernetes
title: Kubernetes Deployment
sidebar_label: Kubernetes Deployment
---
## Prerequisites
Requires Helm (https://helm.sh/) and an actively running Kubernetes cluster.
## Usage
We provide helm chart options to get you going in the `installer/k8s`folder.
**Starting** the default helm chart option is as easy as simply running the following command from the root of this folder:
> **NOTE**: Starting might take a while since we also initially pull all Docker images from Dockerhub.
```bash
helm install streampipes ./
```
After a while, all containers should successfully started, indicated by the `Running` status.
The `values.yaml` file contains several configuration options to customize your StreamPipes installation. See the section below for all configuration options.
## Ingress
The helm chart provides several options to configure an Ingress or to define an Ingressroute that directly integrates with Traefik.
## Dynamic Volume Provisioning
You can override the `storageClassName` variable to configure StreamPipes for dynamic volume provisioning.
## Parameters
Here is an overview of the supported parameters to configure StreamPipes.
### Common parameters
| Parameter Name | Description | Value |
|--------------------------------------------------|---------------------------------------------------------|-----------------------------------------|
| deployment | Deployment type (lite or full) | lite |
| preferredBroker | Preferred broker for deployment | "nats" |
| monitoringSystem | Enable monitoring system (true/false) | false |
| pullPolicy | Image pull policy | "Always" |
| restartPolicy | Restart policy for the container | Always |
| persistentVolumeReclaimPolicy | Reclaim policy for persistent volumes | "Delete" |
| persistentVolumeAccessModes | Access mode for persistent volumes | "ReadWriteOnce" |
| initialDelaySeconds | Initial delay for liveness and readiness probes | 60 |
| periodSeconds | Interval between liveness and readiness probes | 30 |
| failureThreshold | Number of consecutive failures for readiness probes | 30 |
| hostPath | Host path for the application | "" |
### StreamPipes common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|---------------------------------------------------------|------------------------------------------|
| streampipes.version | StreamPipes version | "0.93.0-SNAPSHOT" |
| streampipes.registry | StreamPipes registry URL | "apachestreampipes" |
| streampipes.auth.secretName | The secret name for storing secrets | "sp-secrets" |
| streampipes.auth.users.admin.user | The initial admin user | "admin@streampipes.apache.org" |
| streampipes.auth.users.admin.password | The initial admin password (leave empty for autogen) | "admin" |
| streampipes.auth.users.service.user | The initial service account user | "sp-service-client" |
| streampipes.auth.users.service.secret | The initial service account secret | empty (auto-generated) |
| streampipes.auth.encryption.passcode | Passcode for value encryption | empty (auto-generated) |
| streampipes.core.appName | StreamPipes backend application name | "backend" |
| streampipes.core.port | StreamPipes backend port | 8030 |
| streampipes.core.persistence.storageClassName | Storage class name for backend PVs | "hostpath" |
| streampipes.core.persistence.storageSize | Size of the backend PV | "1Gi" |
| streampipes.core.persistence.claimName | Name of the backend PersistentVolumeClaim | "backend-pvc" |
| streampipes.core.persistence.pvName | Name of the backend PersistentVolume | "backend-pv" |
| streampipes.core.service.name | Name of the backend service | "backend" |
| streampipes.core.service.port | TargetPort of the StreamPipes backend service | 8030 |
| streampipes.ui.appName | StreamPipes UI application name | "ui" |
| streampipes.ui.resolverActive | Flag for enabling DNS resolver for Nginx proxy | true |
| streampipes.ui.port | StreamPipes UI port | 8088 |
| streampipes.ui.resolver | DNS resolver for Nginx proxy | "kube-dns.kube-system.svc.cluster.local" |
| streampipes.ui.service.name | Name of the UI service | "ui" |
| streampipes.ui.service.type | Type of the UI service | "ClusterIP" |
| streampipes.ui.service.nodePort | Node port for the UI service | 8088 |
| streampipes.ui.service.port | TargetPort of the StreamPipes UI service | 8088 |
| streampipes.ingress.active | Flag for enabling Ingress for StreamPipes | false |
| streampipes.ingress.annotations | Annotations for Ingress | {} |
| streampipes.ingress.host | Hostname for Ingress | "" |
| streampipes.ingressroute.active | Flag for enabling IngressRoute for StreamPipes | true |
| streampipes.ingressroute.annotations | Annotations for IngressRoute | {} |
| streampipes.ingressroute.entryPoints | Entry points for IngressRoute | ["web", "websecure"] |
| streampipes.ingressroute.host | Hostname for IngressRoute | "" |
| streampipes.ingressroute.certResolverActive | Flag for enabling certificate resolver for IngressRoute | true |
| streampipes.ingressroute.certResolver | Certificate resolver for IngressRoute | "" |
### Extensions common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|---------------------------------------------------------|------------------------------------------|
| extensions.iiot.appName | IIoT extensions application name | extensions-all-iiot |
| extensions.iiot.port | Port for the IIoT extensions application | 8090 |
| extensions.iiot.service.name | Name of the IIoT extensions service | extensions-all-iiot |
| extensions.iiot.service.port | TargetPort of the IIoT extensions service | 8090 |
### External common parameters
#### Consul common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| external.consul.appName | Consul application name | "consul" |
| external.consul.version | Consul version | 1.14.3 |
| external.consul.webPort | Port number for the Consul web interface | 8500 |
| external.consul.dnsPort | Port number for the Consul DNS interface | 8600 |
| external.consul.persistence.storageClassName | Storage class name for Consul PVs | "hostpath" |
| external.consul.persistence.storageSize | Size of the Consul PV | "1Gi" |
| external.consul.persistence.claimName | Name of the Consul PersistentVolumeClaim | "consul-pvc" |
| external.consul.persistence.pvName | Name of the Consul PersistentVolume | "consul-pv" |
| external.consul.service.name | Name of the Consul service | "consul" |
| external.consul.service.webPort | TargetPort of the Consul service for web interface | 8500 |
| external.consul.service.dnsPort | TargetPort of the Consul service for DNS interface | 8600 |
#### Couchdb common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| external.couchdb.appName | CouchDB application name | "couchdb" |
| external.couchdb.version | CouchDB version | 3.3.1 |
| external.couchdb.user | CouchDB admin username | "admin" |
| external.couchdb.password | CouchDB admin password | empty (auto-generated) |
| external.couchdb.port | Port for the CouchDB service | 5984 |
| external.couchdb.service.name | Name of the CouchDB service | "couchdb" |
| external.couchdb.service.port | TargetPort of the CouchDB service | 5984 |
| external.couchdb.persistence.storageClassName | Storage class name for CouchDB PVs | "hostpath" |
| external.couchdb.persistence.storageSize | Size of the CouchDB PV | "1Gi" |
| external.couchdb.persistence.claimName | Name of the CouchDB PersistentVolumeClaim | "couchdb-pvc" |
| external.couchdb.persistence.pvName | Name of the CouchDB PersistentVolume | "couchdb-pv" |
#### Influxdb common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| external.influxdb.appName | InfluxDB application name | "influxdb" |
| external.influxdb.version | InfluxDB version | 2.6 |
| external.influxdb.username | InfluxDB admin username | "admin" |
| external.influxdb.password | InfluxDB admin password | empty (auto-generated) |
| external.influxdb.adminToken | InfluxDB admin token | empty (auto-generated) |
| external.influxdb.initOrg | InfluxDB initial organization | "sp" |
| external.influxdb.initBucket | InfluxDB initial bucket | "sp" |
| external.influxdb.initMode | InfluxDB initialization mode | "setup" |
| external.influxdb.apiPort | Port number for the InfluxDB service (API) | 8083 |
| external.influxdb.httpPort | Port number for the InfluxDB service (HTTP) | 8086 |
| external.influxdb.grpcPort | Port number for the InfluxDB service (gRPC) | 8090 |
| external.influxdb.service.name | Name of the InfluxDB service | "influxdb" |
| external.influxdb.service.apiPort | TargetPort of the InfluxDB service for API | 8083 |
| external.influxdb.service.httpPort | TargetPort of the InfluxDB service for HTTP | 8086 |
| external.influxdb.service.grpcPort | TargetPort of the InfluxDB service for gRPC | 8090 |
| external.influxdb.persistence.storageClassName | Storage class name for InfluxDB PVs | "hostpath" |
| external.influxdb.persistence.storageSize | Size of the InfluxDB PV | "1Gi" |
| external.influxdb.persistence.storageSizeV1 | Size of the InfluxDB PV for v1 databases | "1Gi" |
| external.influxdb.persistence.claimName | Name of the InfluxDBv2 PersistentVolumeClaim | "influxdb2-pvc" |
| external.influxdb.persistence.claimNameV1 | Name of the InfluxDBv1 PersistentVolumeClaim | "influxdb-pvc" |
| external.influxdb.persistence.pvName | Name of the InfluxDBv2 PersistentVolume | "influxdb2-pv" |
| external.influxdb.persistence.pvNameV1 | Name of the InfluxDBv1 PersistentVolume | "influxdb-pv" |
#### Nats common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| external.nats.appName | NATS application name | "nats" |
| external.nats.port | Port for the NATS service | 4222 |
| external.nats.version | NATS version | |
| external.nats.service.type | Type of the NATS service | "NodePort" |
| external.nats.service.externalTrafficPolicy | External traffic policy for the NATS service | "Local" |
| external.nats.service.name | Name of the NATS service | "nats" |
| external.nats.service.port | TargetPort of the NATS service | 4222 |
#### Kafka common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| external.kafka.appName | Kafka application name | "kafka" |
| external.kafka.version | Kafka version | 2.2.0 |
| external.kafka.port | Port for the Kafka service | 9092 |
| external.kafka.external.hostname | Name which will be advertised to external clients. Clients which use (default) port 9094 | "localhost"
| external.kafka.service.name | Name of the Kafka service | "kafka" |
| external.kafka.service.port | TargetPort of the Kafka service | 9092 |
| external.kafka.service.portOutside | Port for Kafka client outside of the cluster | 9094 |
| external.kafka.persistence.storageClassName | Storage class name for Kafka PVs | "hostpath" |
| external.kafka.persistence.storageSize | Size of the Kafka PV | "1Gi" |
| external.kafka.persistence.claimName | Name of the Kafka PersistentVolumeClaim | "kafka-pvc" |
| external.kafka.persistence.pvName | Name of the Kafka PersistentVolume | "kafka-pv" |
|
#### Zookeeper common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| external.zookeeper.appName | ZooKeeper application name | "zookeeper" |
| external.zookeeper.version | ZooKeeper version | 3.4.13 |
| external.zookeeper.port | Port for the ZooKeeper service | 2181 |
| external.zookeeper.service.name | Name of the ZooKeeper service | "zookeeper" |
| external.zookeeper.service.port | TargetPort of the ZooKeeper service | 2181 |
| external.zookeeper.persistence.storageClassName | Storage class name for ZooKeeper PVs | "hostpath" |
| external.zookeeper.persistence.storageSize | Size of the ZooKeeper PV | "1Gi" |
| external.zookeeper.persistence.claimName | Name of the ZooKeeper PersistentVolumeClaim | "zookeeper-pvc" |
| external.zookeeper.persistence.pvName | Name of the ZooKeeper PersistentVolume | "zookeeper-pv" |
#### Pulsar common parameters
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| external.pulsar.appName | pulsar application name | "pulsar" |
| external.pulsar.version | pulsar version | 3.0.0 |
| external.pulsar.port | Port for the pulsar service | 6650 |
| external.pulsar.service.name | Name of the pulsar service | "pulsar" |
| external.pulsar.service.port | TargetPort of the pulsar service | 6650 |
| external.pulsar.persistence.storageClassName | Storage class name for pulsar PVs | "hostpath" |
| external.pulsar.persistence.storageSize | Size of the pulsar PV | "1Gi" |
| external.pulsar.persistence.claimName | Name of the pulsar PersistentVolumeClaim | "pulsar-pvc" |
| external.pulsar.persistence.pvName | Name of the pulsar PersistentVolume | "pulsar-pv" |
### Monitoring common parameters
#### Monitoring - Prometheus
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| prometheus.appName | Prometheus application name | "prometheus" |
| prometheus.version | Prometheus version | 2.45.0 |
| prometheus.port | Prometheus port | 9090 |
| prometheus.service.name | Prometheus service name | "prometheus" |
| prometheus.service.port | Prometheus service port | 9090 |
| prometheus.persistence.storageClassName | Prometheus storage class name | "hostpath" |
| prometheus.persistence.storageSize | Prometheus storage size | "2Gi" |
| prometheus.persistence.claimName | Prometheus PVC claim name | "prometheus-pvc" |
| prometheus.persistence.pvName | Prometheus PV name | "prometheus-pv" |
| prometheus.persistence.tokenStorageSize | Prometheus token storage size | "16Ki" |
| prometheus.config.scrapeInterval | Prometheus scrape interval | 10s |
| prometheus.config.evaluationInterval | Prometheus evaluation interval | 15s |
| prometheus.config.backendJobName | Prometheus backend job name | "backend" |
| prometheus.config.extensionsName | Prometheus extensions job name | "extensions-all-iiot" |
| prometheus.config.tokenFileName | Prometheus token file name | "token" |
| prometheus.config.tokenFileDir | Prometheus token file directory | "/opt/data"
#### Monitoring - Grafana
| Parameter Name | Description | Value |
|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
| grafana.appName | Grafana application name | "grafana" |
| grafana.version | Grafana version | 10.1.2 |
| grafana.port | Grafana port | 3000 |
| grafana.service.name | Grafana service name | "grafana" |
| grafana.service.port | Grafana service port | 3000 |
| grafana.persistence.storageClassName | Grafana storage class name | "hostpath" |
| grafana.persistence.storageSize | Grafana storage size | "1Gi" |
| grafana.persistence.claimName | Grafana PVC claim name | "grafana-pvc" |
| grafana.persistence.pvName | Grafana PV name | "grafana-pv" |
## Auto-generation of parameters.
The helm chart includes a `secrets.yaml` file which auto-generates several settings as follows:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: sp-secrets
namespace: {{ .Release.Namespace | quote }}
type: Opaque
data:
sp-initial-admin-password: {{ ternary (randAlphaNum 10) .Values.streampipes.auth.users.admin.password (empty .Values.streampipes.auth.users.admin.password) | b64enc | quote }}
sp-initial-client-secret: {{ ternary (randAlphaNum 35) .Values.streampipes.auth.users.service.secret (empty .Values.streampipes.auth.users.service.secret) | b64enc | quote }}
sp-encryption-passcode: {{ ternary (randAlphaNum 20) .Values.streampipes.auth.encryption.passcode (empty .Values.streampipes.auth.encryption.passcode) | b64enc | quote }}
sp-couchdb-password: {{ ternary (randAlphaNum 20) .Values.external.couchdb.password (empty .Values.external.couchdb.password) | b64enc | quote }}
sp-ts-storage-password: {{ ternary (randAlphaNum 20) .Values.external.influxdb.password (empty .Values.external.influxdb.password) | b64enc | quote }}
sp-ts-storage-token: {{ ternary (randAlphaNum 20) .Values.external.influxdb.adminToken (empty .Values.external.influxdb.adminToken) | b64enc | quote }}
```
## Deleting the current helm chart deployment:
```bash
helm uninstall streampipes
```