@@ -7,6 +7,37 @@ Official helm chart for Graylog.
77This chart is still in development. We should not distribute this chart or any part of this repository externally until we've cleaned up the git history and recieved approval for external distribution.
88This chart is still under development and does not have locked in api contracts yet.
99
10+
11+ ## Table of Contents
12+ * [ Requirements] ( #requirements )
13+ * [ Installation] ( #installation )
14+ * [ Clone this repo] ( #clone-this-repo )
15+ * [ Install local chart] ( #install-local-chart )
16+ * [ Post-installation] ( #post-installation )
17+ * [ Set root Graylog password] ( #set-root-graylog-password )
18+ * [ Set external access] ( #set-external-access )
19+ * [ LoadBalancer Service] ( #alternative-loadbalancer-service )
20+ * [ Port Forwarding] ( #temporary-access-port-forwarding )
21+ * [ Usage] ( #usage )
22+ * [ Scale Graylog] ( #scale-graylog )
23+ * [ Scale DataNode] ( #scale-datanode )
24+ * [ Scale MongoDB] ( #scale-mongodb )
25+ * [ Modify Graylog ` server.conf ` parameters] ( #modify-graylog-serverconf-parameters )
26+ * [ Customize deployed Kubernetes resources] ( #customize-deployed-kubernetes-resources )
27+ * [ Add inputs] ( #add-inputs )
28+ * [ Enable TLS] ( #enable-tls )
29+ * [ Bring Your Own Certificate] ( #bring-your-own-certificate )
30+ * [ Uninstall] ( #uninstall )
31+ * [ Removing everything] ( #removing-everything )
32+ * [ Debugging] ( #debugging )
33+ * [ Logging] ( #logging )
34+ * [ Graylog Helm Chart Values Reference] ( #graylog-helm-chart-values-reference )
35+ * [ Global] ( #global )
36+ * [ Graylog application] ( #graylog-application )
37+ * [ DataNode] ( #datanode )
38+ * [ Service Account] ( #service-account )
39+ * [ Ingress] ( #ingress )
40+
1041## Requirements
1142- Kubernetes v1.32
1243
@@ -33,28 +64,51 @@ git clone git@github.com:Graylog2/graylog-helm.git
3364cd graylog-helm
3465```
3566
36- ### Set default StorageClass
37- *** If your cluster already has a default ` storageclass ` you can skip this step.***
38-
39- If not, you're unsure, or you don't want to affect cluster-wide settings, set the default ` storageclass ` for this Chart at runtime by passing ` --set global.defaultStorageClass="my-sc" ` to your ` helm install ` command. Or by adding the following lines to ` values-custom.yaml ` :
40- ```
41- global:
42- defaultStorageClass: "my-sc"
67+ ### Install local chart
68+ ``` sh
69+ helm install graylog ./graylog --namespace graylog --create-namespace
4370```
4471
45- Just be sure to pass ` -f values-custom.yaml ` to your ` helm install ` command below!
72+ 🏁 That's it!
73+
74+ ## Post Installation
4675
4776### Set Root Graylog Password
77+ Graylog is installed with a simple password by default. This ** MUST be changed** once all pods achieve the ` RUNNING ` state using
78+ the following command:
79+
4880``` sh
49- read -sp " Enter your new password and press return: " pass
81+ echo " Enter your new password and press return:" && read -s pass
82+ helm upgrade graylog ./graylog --namespace graylog --reuse-values --set " graylog.config.rootPassword=$pass " ; unset pass
5083```
5184
52- ### Install local chart
85+ ### Set External Access
86+
87+ There are a number of ways to enable external access to the Graylog application. We recommend using an
88+ [ Ingress Controller] ( https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/ )
89+ to provide external access both the Graylog UI and the Graylog API, as well as any configured inputs.
90+
91+ Once an Ingress Controller has been installed and configured, run the following command to provision the appropriate
92+ [ Ingress] ( https://kubernetes.io/docs/concepts/services-networking/ingress/ ) resource:
93+
5394``` sh
54- helm install graylog ./graylog --namespace graylog --create-namespace -- set " graylog.config.rootPassword= $pass "
95+ helm upgrade graylog ./graylog -n graylog --set ingress.web.enabled= " true " --reuse-values
5596```
5697
57- 🏁 That's it!
98+ #### Alternative: LoadBalancer Service
99+ Alternatively, external access can be configured directly through the provided service without the need for any
100+ pre-existing dependencies.
101+
102+ ``` sh
103+ helm upgrade graylog ./graylog -n graylog --set graylog.custom.service.type=" LoadBalancer" --reuse-values
104+ ```
105+
106+ #### Temporary access: Port Forwarding
107+ Finally, if you wish to enable external access _ temporarily_ , you can always use port forwarding:
108+
109+ ``` sh
110+ kubectl port-forward service/graylog-svc 9000:9000 -n graylog
111+ ```
58112
59113## Usage
60114
@@ -67,9 +121,9 @@ helm upgrade graylog ./graylog -n graylog --set graylog.replicas=3 --reuse-value
67121helm upgrade graylog ./graylog -n graylog --set graylog.replicas=1 --reuse-values
68122```
69123
70- ### Scale Datanode
124+ ### Scale DataNode
71125``` sh
72- # scaling out: add more Graylog Datanodes to your cluster
126+ # scaling out: add more Graylog Data Nodes to your cluster
73127helm upgrade graylog ./graylog -n graylog --set datanode.replicas=5 --reuse-values
74128```
75129
@@ -150,7 +204,7 @@ You can retrieve this information like this:
150204kubectl get svc graylog-svc -n graylog
151205` ` `
152206
153- # # Bring Your Own Certificate
207+ # ### Bring Your Own Certificate
154208
155209If you already have a TLS certificate-key pair, you can create a Kubernetes secret to store them :
156210` ` ` sh
@@ -162,7 +216,7 @@ Enable TLS for your Graylog installation, referencing the Kubernetes secret:
162216helm upgrade graylog ./graylog -n graylog --reuse-values --set graylog.config.tls.byoc.enabled=true --set graylog.config.tls.byoc.secretName="my-cert"
163217` ` `
164218
165- # ## Uninstall
219+ # # Uninstall
166220` ` ` sh
167221# optional: scale Graylog down to zero
168222kubectl scale sts graylog -n graylog --replicas 0 && kubectl wait --for=delete pod graylog-0 -n graylog
@@ -171,23 +225,23 @@ kubectl scale sts graylog -n graylog --replicas 0 && kubectl wait --for=delete
171225helm uninstall graylog -n graylog
172226` ` `
173227
174- # ### Removing Everything
228+ # ## Removing Everything
175229` ` ` sh
176230# CAUTION: this will delete ALL your data!
177231kubectl delete $(kubectl get pvc -o name -n graylog; kubectl get secret -o name -n graylog) -n graylog
178232` ` `
179233
180- # ## Debugging
234+ # # Debugging
181235Get a YAML output of the values being submitted.
182236` ` ` bash
183237helm template graylog graylog -f graylog/values-glc.yaml | yq
184238` ` `
185239
186- # ## Logging
240+ # # Logging
187241```
188242# Graylog app logs
189243stern statefulset/graylog-app -n graylog-helm-dev-1
190- # Datanode logs
244+ # DataNode logs
191245stern statefulset/graylog-datanode -n graylog-helm-dev-1
192246```
193247
@@ -200,7 +254,7 @@ stern statefulset/graylog-datanode -n graylog-helm-dev-1
200254| `fullnameOverride` | Override the fully qualified name of the application. | `""` |
201255
202256### Global
203- These values affect Graylog, Datanode , and MongoDB
257+ These values affect Graylog, DataNode , and MongoDB
204258
205259| Key Path | Description | Default |
206260|------------------------------| ------------------------------------------- |---------|
@@ -244,20 +298,20 @@ These values affect Graylog, Datanode, and MongoDB
244298| `graylog.custom.service.ports.inputGelfHttp` | GELF HTTP input port. | `12201` |
245299
246300
247- ### Datanode
301+ ### DataNode
248302| Key Path | Description | Default |
249303|--------------------------------------------------------|-------------------------------------------------|-------------------|
250- | `datanode.enabled` | Enable Graylog datanode. | `true` |
251- | `datanode.replicas` | Number of datanode replicas. | `3` |
252- | `datanode.config.nodeIdFile` | Path to datanode ID file. | `""` |
304+ | `datanode.enabled` | Enable Graylog Data Node. | `true` |
305+ | `datanode.replicas` | Number of DataNode replicas. | `3` |
306+ | `datanode.config.nodeIdFile` | Path to DataNode ID file. | `""` |
253307| `datanode.config.opensearchHeap` | OpenSearch heap size. | `"2g"` |
254- | `datanode.config.javaOpts` | Java options for datanode . | `"-Xms1g -Xmx1g"` |
308+ | `datanode.config.javaOpts` | Java options for DataNode . | `"-Xms1g -Xmx1g"` |
255309| `datanode.config.skipPreflightChecks` | Skip startup checks. | `"false"` |
256310| `datanode.config.nodeSearchCacheSize` | Size of search cache. | `"10gb"` |
257311| `datanode.custom.podAnnotations` | Additional pod annotations. | `{}` |
258- | `datanode.custom.nodeSelector` | Node selector for datanode . | `{}` |
259- | `datanode.custom.image.repository` | Datanode image repository. | `""` |
260- | `datanode.custom.image.tag` | Datanode image tag. | `""` |
312+ | `datanode.custom.nodeSelector` | Node selector for DataNode . | `{}` |
313+ | `datanode.custom.image.repository` | DataNode image repository. | `""` |
314+ | `datanode.custom.image.tag` | DataNode image tag. | `""` |
261315| `datanode.custom.image.imagePullPolicy` | Image pull policy. | `IfNotPresent` |
262316| `datanode.custom.image.imagePullSecrets` | Image pull secrets. | `[]` |
263317| `datanode.updateStrategy.type` | Pod update strategy for StatefulSet. | `"RollingUpdate"` |
0 commit comments