Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added helm-releases/pai-0.3.0.tgz
Binary file not shown.
9 changes: 0 additions & 9 deletions helm/Chart.lock

This file was deleted.

13 changes: 1 addition & 12 deletions helm/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,11 @@ apiVersion: v2
name: parseable
description: Helm chart for Parseable OSS version. Columnar data lake platform - purpose built for observability
type: application
version: 2.8.2
version: 4.0.0
appVersion: "v2.8.0"
icon: "https://raw.githubusercontent.com/parseablehq/.github/main/images/logo.svg"

maintainers:
- name: Parseable Team
email: hi@parseable.com
url: https://parseable.com

dependencies:
- name: vector
version: 0.20.1
repository: https://helm.vector.dev
condition: vector.enabled
- name: fluent-bit
version: 0.48.0
repository: https://fluent.github.io/helm-charts
condition: fluent-bit.enabled

93 changes: 92 additions & 1 deletion helm/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,94 @@
# Parseable Helm Chart

Refer the Parseable Helm Chart [documentation ↗︎](https://www.parseable.io/docs/installation/kubernetes-helm)
`values.yaml` holds the defaults. Layer an overlay from `overlays/` with `-f` to
pick a topology / store, and stack `overlays/enterprise.yaml` for Enterprise.

```
overlays/
standalone.yaml single all-in-one pod (local-store)
aws.yaml distributed on S3
gcp.yaml distributed on GCS
azure.yaml distributed on Azure Blob
enterprise.yaml adds prism; layer on top of a store overlay
```

## Standalone (single pod, local-store)

```sh
kubectl create namespace parseable

kubectl -n parseable create secret generic parseable-env-secret \
--from-literal=addr=0.0.0.0:8000 \
--from-literal=username=admin \
--from-literal=password=admin

helm install parseable ./ -n parseable -f overlays/standalone.yaml
```

## Distributed (querier + ingestors)

Create the namespace, then the object-store secret for your cloud (below).

```sh
kubectl create namespace parseable
```

### AWS (S3)

```sh
kubectl -n parseable create secret generic parseable-env-secret \
--from-literal=addr=0.0.0.0:8000 \
--from-literal=username=admin --from-literal=password=admin \
--from-literal=s3.url=<endpoint> \
--from-literal=s3.access.key=<key> --from-literal=s3.secret.key=<secret> \
--from-literal=s3.bucket=<bucket> --from-literal=s3.region=<region>

helm install parseable ./ -n parseable -f overlays/aws.yaml
```

### GCP (GCS)

```sh
kubectl -n parseable create secret generic parseable-env-secret \
--from-literal=addr=0.0.0.0:8000 \
--from-literal=username=admin --from-literal=password=admin \
--from-literal=gcs.url=<url> --from-literal=gcs.bucket=<bucket>

kubectl -n parseable create secret generic parseable-gcs-key \
--from-file=key.json=<path-to-service-account-key.json>

helm install parseable ./ -n parseable -f overlays/gcp.yaml
```

### Azure (Blob)

```sh
kubectl -n parseable create secret generic parseable-env-secret \
--from-literal=addr=0.0.0.0:8000 \
--from-literal=username=admin --from-literal=password=admin \
--from-literal=azr.access_key=<key> --from-literal=azr.account=<account> \
--from-literal=azr.container=<container> \
--from-literal=azr.url=https://<account>.blob.core.windows.net

helm install parseable ./ -n parseable -f overlays/azure.yaml
```

## Enterprise (adds prism)

Stack `overlays/enterprise.yaml` on top of a store overlay, and create the license secret.

```sh
kubectl -n parseable create secret generic parseable-license \
--from-file=parseable_license.json=<path>/parseable_license.json \
--from-file=parseable_license.sig=<path>/parseable_license.sig

helm install parseable ./ -n parseable \
-f overlays/aws.yaml -f overlays/enterprise.yaml
```
Comment on lines +51 to +87

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Upgrade command will break cloud-specific installs.

helm upgrade parseable ./ -n parseable -f values.yaml uses the chart's default values. Users who installed with -f values-aws.yaml (or GCP/Azure) would have their store, highAvailability, persistence, and secrets configuration overridden with defaults, potentially breaking their deployment. Helm does not automatically reuse values from the previous install.

🔧 Proposed fix
 ## Upgrade
 
 ```sh
-helm upgrade parseable ./ -n parseable -f values.yaml
+helm upgrade parseable ./ -n parseable -f values.yaml          # standalone
+helm upgrade parseable ./ -n parseable -f values-aws.yaml     # AWS
+helm upgrade parseable ./ -n parseable -f values-gcp.yaml     # GCP
+helm upgrade parseable ./ -n parseable -f values-azure.yaml   # Azure
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```sh
helm upgrade parseable ./ -n parseable -f values.yaml
```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@helm/README.md` around lines 33 - 35, The Helm upgrade example in the README
is too generic and can overwrite cloud-specific settings; update the upgrade
guidance referenced by the helm upgrade command to show the correct values file
for each deployment variant. Make the instructions explicitly distinguish the
standalone, AWS, GCP, and Azure cases so users reuse the same
environment-specific values used at install time instead of defaulting to
values.yaml.


## Upgrade / Uninstall

```sh
helm upgrade parseable ./ -n parseable -f overlays/aws.yaml
helm uninstall parseable -n parseable
```
Binary file removed helm/charts/fluent-bit-0.48.1.tgz
Binary file not shown.
Binary file removed helm/charts/vector-0.20.1.tgz
Binary file not shown.
19 changes: 19 additions & 0 deletions helm/overlays/aws.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Parseable on AWS (S3), distributed mode.
parseable:
deploymentMode: distributed
store:
type: s3-store
secretName: parseable-env-secret

distributed:
ingestor:
replicas: 3
persistence:
staging:
storageClass: gp3
size: 5Gi
querier:
persistence:
hotTier:
storageClass: gp3
size: 100Gi
19 changes: 19 additions & 0 deletions helm/overlays/azure.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Parseable on Azure (Blob), distributed mode.
parseable:
deploymentMode: distributed
store:
type: blob-store
secretName: parseable-env-secret

distributed:
ingestor:
replicas: 3
persistence:
staging:
storageClass: managed-csi
size: 5Gi
querier:
persistence:
hotTier:
storageClass: managed-csi
size: 100Gi
13 changes: 13 additions & 0 deletions helm/overlays/enterprise.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Parseable Enterprise (adds the prism coordinator).
# Layer this on top of a store overlay, e.g.:
# helm install parseable ./ -n parseable -f overlays/aws.yaml -f overlays/enterprise.yaml
# Requires a license secret (parseable-license) with keys
# parseable_license.json and parseable_license.sig.
parseable:
deploymentMode: distributed
enterprise:
enabled: true
image:
repository: quay.io/parseablehq/parseable-enterprise
tag: "" # defaults to .Chart.AppVersion
pullPolicy: IfNotPresent
23 changes: 23 additions & 0 deletions helm/overlays/gcp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Parseable on GCP (GCS), distributed mode.
parseable:
deploymentMode: distributed
store:
type: gcs-store
secretName: parseable-env-secret
gcsCredentials:
secretName: parseable-gcs-key
secretKey: key.json
mountPath: /var/secrets/google

distributed:
ingestor:
replicas: 3
persistence:
staging:
storageClass: standard-rwo
size: 5Gi
querier:
persistence:
hotTier:
storageClass: standard-rwo
size: 100Gi
21 changes: 21 additions & 0 deletions helm/overlays/standalone.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Parseable standalone: a single all-in-one pod on local-store.
# Simplest way to run Parseable; does not scale horizontally (OSS only).
parseable:
deploymentMode: standalone
store:
type: local-store

standalone:
unified:
persistence:
# local-store keeps ingested data on this volume, so persist it
data:
enabled: true
storageClass: ""
accessMode: ReadWriteOnce
size: 10Gi
staging:
enabled: true
storageClass: ""
accessMode: ReadWriteOnce
size: 5Gi
61 changes: 5 additions & 56 deletions helm/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ Expand the name of the chart.

{{/*
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 "parseable.fullname" -}}
{{- if .Values.parseable.fullnameOverride }}
Expand All @@ -24,76 +22,27 @@ If release name contains chart name it will be used as a full name.
{{- end }}

{{/*
Create chart name and version as used by the chart label.
Chart name and version, for the helm.sh/chart label.
*/}}
{{- define "parseable.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
Metadata labels attached to every object (no component/selector labels).
*/}}
{{- define "parseable.labels" -}}
helm.sh/chart: {{ include "parseable.chart" . }}
{{ include "parseable.labelsSelector" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Ingestor Labels
*/}}
{{- define "parseable.ingestorLabels" -}}
helm.sh/chart: {{ include "parseable.chart" . }}
{{ include "parseable.ingestorLabelsSelector" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/name: {{ include "parseable.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Querier Labels
*/}}
{{- define "parseable.querierLabels" -}}
helm.sh/chart: {{ include "parseable.chart" . }}
{{ include "parseable.querierLabelsSelector" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "parseable.labelsSelector" -}}
app.kubernetes.io/name: {{ include "parseable.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{/*
Ingestor Labels Selector for ingestor statefulset
*/}}
{{- define "parseable.ingestorLabelsSelector" -}}
app.kubernetes.io/name: {{ include "parseable.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.parseable.com/type: ingestor
{{- end }}

{{/*
Querier Labels Selector for querier deployment
*/}}
{{- define "parseable.querierLabelsSelector" -}}
app.kubernetes.io/name: {{ include "parseable.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.parseable.com/type: querier
{{- end }}

{{/*
Create the name of the service account to use
Name of the service account to use.
*/}}
{{- define "parseable.serviceAccountName" -}}
{{- if .Values.parseable.serviceAccount.create }}
Expand Down
52 changes: 0 additions & 52 deletions helm/templates/_helpers_config_logstream.txt

This file was deleted.

Loading
Loading