Newer
Older
  
## Changelog
see [RELEASENOTES.md](RELEASENOTES.md)
A Helm chart for Graylog on Kubernetes
## TL;DR
```bash
helm repo add groundhog2k https://groundhog2k.github.io/helm-charts/
helm install my-release groundhog2k/graylog
```
## Introduction
This chart uses the original [Graylog image from Docker Hub](https://hub.docker.com/r/graylog/graylog/) to deploy a stateful Graylog instance in a Kubernetes cluster.
## Prerequisites
- Kubernetes 1.12+
- Helm 3.x
- PV provisioner support in the underlying infrastructure
## Hint
OpenSearch/Elasticsearch can be installed by using the respective helm charts and setting the hostname in `settings.elastic.hosts`
MongoDB can be referenced by installed using the subchart with `mongodb.enabled` or by pointing to another MongoDB installation. (see Database settings)
## Installing the Chart
To install the chart with the release name `my-release`:
```bash
helm install my-release groundhog2k/graylog
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```bash
## Requirements
| Repository | Name | Version |
|------------|------|---------|
| @groundhog2k | mongodb | 0.6.8 |
## Common parameters
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| fullnameOverride | string | `""` | Fully override the deployment name |
| nameOverride | string | `""` | Partially override the deployment name |
## Deployment parameters
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
| image.registry | string | `"docker.io"` | Image registry |
| image.repository | string | `"graylog/graylog"` | Image name |
| image.tag | string | `""` | Image tag |
| initImage.pullPolicy | string | `"IfNotPresent"` | Init container image pull policy |
| initImage.registry | string | `"docker.io"` | Image registry |
| initImage.repository | string | `"maxmindinc/geoipupdate"` | Default init container image |
| initImage.tag | string | `"latest"` | Init container image tag |
| imagePullSecrets | list | `[]` | Image pull secrets |
| startupProbe | object | `see values.yaml` | Startup probe configuration |
| livenessProbe | object | `see values.yaml` | Liveness probe configuration |
| readinessProbe | object | `see values.yaml` | Readiness probe configuration |
| customStartupProbe | object | `{}` | Custom startup probe (overwrites default startup probe configuration) |
| customLivenessProbe | object | `{}` | Custom liveness probe (overwrites default liveness probe configuration) |
| customReadinessProbe | object | `{}` | Custom readiness probe (overwrites default readiness probe configuration) |
| resources | object | `{}` | Resource limits and requests |
| nodeSelector | object | `{}` | Deployment node selector |
| customLabels | object | `{}` | Additional labels for Deployment or StatefulSet |
| customAnnotations | object | `{}` | Additional annotations for Deployment or StatefulSet |
| podAnnotations | object | `{}` | Additional pod annotations |
| podLabels | object | `{}` | Additional pod labels |
| podSecurityContext | object | `see values.yaml` | Pod security context |
| securityContext | object | `see values.yaml` | Container security context |
| env | list | `[]` | Additional container environmment variables |
| args | list | `[]` | Additional container command arguments |
| serviceAccount.annotations | object | `{}` | Additional service account annotations |
| serviceAccount.create | bool | `false` | Enable service account creation |
| serviceAccount.name | string | `""` | Name of the service account |
| affinity | object | `{}` | Pod affinity |
| tolerations | list | `[]` | Pod tolerations |
| topologySpreadConstraints | object | `{}` | Topology spread constraints for pods |
| podManagementPolicy | string | `OrderedReady` | Pod management policy |
| updateStrategyType | string | `RollingUpdate` | Update strategy |
| replicaCount | int | `1` | Number of replicas (Not supported - Don't change in this chart version) |
groundhog2k
committed
| revisionHistoryLimit | int | `nil` | Maximum number of revisions maintained in revision history
| podDisruptionBudget | object | `{}` | Pod disruption budget |
| podDisruptionBudget.minAvailable | int | `nil` | Minimum number of pods that must be available after eviction |
| podDisruptionBudget.maxUnavailable | int | `nil` | Maximum number of pods that can be unavailable after eviction |
## Service paramters
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| service.type | string | `"ClusterIP"` | Service type |
| service.http | int | `80` | Graylog http service port |
| service.nodePort | int | `nil` | The http node port (only relevant for type LoadBalancer or NodePort) |
| service.clusterIP | string | `nil` | The cluster ip address (only relevant for type LoadBalancer or NodePort) |
| service.loadBalancerIP | string | `nil` | The load balancer ip address (only relevant for type LoadBalancer) |
| service.annotations | object | `{}` | Additional service annotations |
| service.labels | object | `{}` | Additional service labels |
## Extra service parameters
Section to define all additional UDP/TCP inputs for Graylog
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| extraServices[].name | string | `nil` | Unique name of the input service |
| extraServices[].type | string | `nil` | Service type (ClusterIP / NodePort / LoadBalancer) |
| extraServices[].protocol | string | `nil` | Protocol type (TCP / UDP) |
| extraServices[].containerPort | int | `nil` | Container port |
| extraServices[].port | int | `nil` | Service port |
| extraServices[].nodePort | int | `nil` | The http node port (only relevant for type LoadBalancer or NodePort) |
| extraServices[].clusterIP | string | `nil` | The cluster ip address (only relevant for type LoadBalancer or NodePort) |
| extraServices[].loadBalancerIP | string | `nil` | The load balancer ip address (only relevant for type LoadBalancer) |
| extraServices[].annotations | object | `{}` | Additional service annotations |
| extraServices[].labels | object | `{}` | Additional service labels |
## Ingress parameters
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| ingress.enabled | bool | `false` | Enable ingress for Gitea service |
| ingress.className | string | `nil` | Optional ingress class name |
| ingress.annotations | object | `{}` | Additional annotations for ingress |
| ingress.labels | object | `{}` | Additional ingress lables |
| ingress.hosts[].host | string | `nil` | Hostname for the ingress endpoint |
| ingress.hosts[].host.paths[] | string | `nil` | Path routing for the ingress endpoint host |
| ingress.tls | list | `[]` | Ingress TLS parameters |
## Network policies
Allows to define optional network policies for [ingress and egress](https://kubernetes.io/docs/concepts/services-networking/network-policies/)
The policyTypes will be automatically set
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| networkPolicy.ingress | object | `{}` | Ingress network policies |
| networkPolicy.egress | object | `{}` | Egress network policies |
## Database settings
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| externalDatabase.host | string | `nil` | External MongoDB database host |
| externalDatabase.name | string | `"graylog"` | External database name |
| externalDatabase.user | string | `nil` | External database user name |
| externalDatabase.password | string | `nil` | External database user password |
| mongodb.enabled | bool | `false` | Enable MongoDB deployment (will disable external database settings) |
| mongodb.settings.rootUsername | string | `admin` | The root username |
| mongodb.settings.rootPassword | string | `{}` | The root users password |
| mongodb.userDatabase | object | `{}` | Optional MongoDB user database |
| mongodb.userDatabase.name | string | `nil` | Name of the user database |
| mongodb.userDatabase.user | string | `nil` | User name with full access to user database|
| mongodb.userDatabase.password | string | `nil` | Password of created user |
| mongodb.storage | object | `see values.yaml` | MongoDB storage settings |
## MaxMind GeoIP2 database
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| initGeoIPDatabase.enabled | bool | `false` | Enable GeoIP database download |
| initGeoIPDatabase.accountId | string | `""` | MaxMind UserId / AccountId |
| initGeoIPDatabase.licenseKey | string | `""` | MaxMind license key |
| initGeoIPDatabase.editionId | string | `"GeoLite2-City"` | Default database edition id - see [MaxMind page](https://www.maxmind.com/en/accounts/473747/geoip/downloads) |
| initGeoIPDatabase.host | string | `""` | The MaxMind download host (not necessary to change that - default updates.maxmind.com)|
| initGeoIPDatabase.proxy | string | `""` | A valid proxy if internet access is running through a proxy |
| initGeoIPDatabase.proxyUserPassword | string | `""` | Proxy username and password in format "username:password" |
## Storage parameters
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| storage.accessModes[0] | string | `"ReadWriteOnce"` | Storage access mode |
| storage.persistentVolumeClaimName | string | `nil` | PVC name when existing storage volume should be used |
| storage.volumeName | string | `"graylog-volume"` | Internal volume name |
| storage.requestedSize | string | `nil` | Size for new PVC, when no existing PVC is used |
| storage.className | string | `nil` | Storage class name |
| storage.annotations | object | `{}` | Additional storage annotations |
| storage.labels | object | `{}` | Additional storage labels |
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
## Graylog parameters
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| settings.http.externalUri | string | `http://127.0.0.1:9000/` | External URI for Graylog |
| settings.http.publishUri | string | `nil` | Graylog publish URI |
| settings.clusterName | string | `singlenode-cluster` | Cluster name |
| settings.javaOpts | string | `nil` | Additional JVM options for Graylog |
| settings.passwordSecret | string | `somepasswordpepper` | Secret for password encryption and salting |
| settings.rootUser.username | string | `"admin"` | Graylog root user name |
| settings.rootUser.sha2password | string | `"8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"` | Graylog root user password SHA2 (default: "admin") |
| settings.rootUser.email | string | `""` | Graylog root user email address |
| settings.rootUser.timezone | string | `"UTC"` | Graylog root user timezone |
| settings.journal.maxAge | string | `"12h"` | Graylog max. journal age |
| settings.journal.maxSize | string | `"5gb"` | Graylog max. journal size |
| settings.elastic.hosts | string | `"http://127.0.0.1:9200"` | Comma separated list of Elasticsearch hosts (only used when `elasticsearch.enabled` is false) |
| settings.elastic.indexPrefix | string | `"graylog"` | Elasticsearch index prefix |
| settings.smtp.enabled | bool | `false` | Enable/Disable SMTP |
| settings.smtp.host | string | `"mail.example.com"` | SMTP host name |
| settings.smtp.port | int | `587` | SMTP port |
| settings.smtp.useAuth | bool | `true` | Use SMTP authentication |
| settings.smtp.useTls | bool | `true` | Use SMTP with STARTTLS |
| settings.smtp.useSsl | bool | `false` | Enable SMTP over SSL (SMTPS) |
| settings.smtp.username | string | `"you@example.com"` | SMTP username |
| settings.smtp.password | string | `"secret"` | SMTP password |
| settings.smtp.emailFrom | string | `"you@example.com"` | Mail from address |
| settings.smtp.subjectPrefix | string | `"[graylog]"` | Mail subject prefix |
Further Graylog parameter can be set via environment variables (see Deployment parameter: `env:`)