From ba148dde93983d755e77ff11ec09b5840ace0b87 Mon Sep 17 00:00:00 2001 From: 1doce8 Date: Thu, 17 Apr 2025 14:49:32 +0200 Subject: [PATCH] feat(graph-node): add pg and ipfs charts as dependency --- charts/graph-node/Chart.lock | 9 +++ charts/graph-node/Chart.yaml | 14 ++++- charts/graph-node/README.md | 54 ++++++++++++++++++ .../graph-node/charts/ipfs-cluster-0.1.14.tgz | Bin 0 -> 7273 bytes .../graph-node/charts/postgresql-16.6.3.tgz | Bin 0 -> 81554 bytes charts/graph-node/templates/NOTES.txt | 27 +++++++++ charts/graph-node/templates/_helpers.tpl | 12 ++++ .../graph-node/templates/graph-node/all.yaml | 36 +++++++++++- charts/graph-node/values.yaml | 33 ++++++++++- 9 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 charts/graph-node/Chart.lock create mode 100644 charts/graph-node/charts/ipfs-cluster-0.1.14.tgz create mode 100644 charts/graph-node/charts/postgresql-16.6.3.tgz diff --git a/charts/graph-node/Chart.lock b/charts/graph-node/Chart.lock new file mode 100644 index 00000000..032b1167 --- /dev/null +++ b/charts/graph-node/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: postgresql + repository: https://charts.bitnami.com/bitnami + version: 16.6.3 +- name: ipfs-cluster + repository: https://ethpandaops.github.io/ethereum-helm-charts + version: 0.1.14 +digest: sha256:1547f7cc44c8512eafcf92aa9cb7476c77f977dc646bb8661c9bd2bbc50aaedf +generated: "2025-04-17T12:36:59.465701+02:00" diff --git a/charts/graph-node/Chart.yaml b/charts/graph-node/Chart.yaml index 805f2f33..b221921b 100644 --- a/charts/graph-node/Chart.yaml +++ b/charts/graph-node/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.5.9 +version: 0.5.10 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to @@ -23,3 +23,15 @@ version: 0.5.9 # It is recommended to use it with quotes. # renovate: image=graphprotocol/graph-node appVersion: "v0.36.1" + +dependencies: + - name: postgresql + alias: postgresql + version: "16.6.3" + repository: https://charts.bitnami.com/bitnami + condition: postgresql.enabled + - name: ipfs-cluster + alias: ipfs-cluster + version: "0.1.14" + repository: https://ethpandaops.github.io/ethereum-helm-charts + condition: ipfs-cluster.enabled \ No newline at end of file diff --git a/charts/graph-node/README.md b/charts/graph-node/README.md index 78bfc98e..c43062f7 100644 --- a/charts/graph-node/README.md +++ b/charts/graph-node/README.md @@ -322,3 +322,57 @@ We welcome and appreciate your contributions! Please see the [Contributor Guide] - [Erigon](../erigon) - [Proxyd](../proxyd) + +### Dependencies + +The chart includes optional dependencies for PostgreSQL and IPFS cluster. These dependencies are enabled by default and will automatically configure Graph Node to use them. + +#### PostgreSQL Dependency + +The chart includes a PostgreSQL dependency that can be used as the primary database for Graph Node. When enabled, it will automatically configure the following environment variables: + +- `PRIMARY_SUBGRAPH_DATA_PGHOST`: Defaults to `-postgresql` +- `PRIMARY_SUBGRAPH_DATA_PGDATABASE`: Defaults to `graph-node` +- `PRIMARY_SUBGRAPH_DATA_PGUSER`: Defaults to `postgres` +- `PRIMARY_SUBGRAPH_DATA_PGPASSWORD`: Automatically retrieved from the PostgreSQL secret + +You can override any of these values by providing your own configuration in the `env` and `secretEnv` sections. + +Example configuration: +```yaml +postgresql: + enabled: true + secretName: postgresql + global: + postgresql: + auth: + database: graph-node + primary: + extendedConfiguration: | + max_connections = 10000 + resources: + limits: + cpu: 2000m + ephemeral-storage: 2Gi + memory: 4000Mi + requests: + cpu: 100m + ephemeral-storage: 50Mi + memory: 128Mi +``` + +#### IPFS Cluster Dependency + +The chart includes an IPFS cluster dependency that can be used for IPFS operations. When enabled, it will automatically configure the following environment variable: + +- `IPFS`: Defaults to `http://ipfs--ipfs-cluster:5001` + +You can override this value by providing your own configuration in the `env` section. + +Example configuration: +```yaml +ipfs-cluster: + enabled: true + p2pNodePort: + enabled: false +``` \ No newline at end of file diff --git a/charts/graph-node/charts/ipfs-cluster-0.1.14.tgz b/charts/graph-node/charts/ipfs-cluster-0.1.14.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c04981a5c7c51523af712e46f6225e6becb0fd94 GIT binary patch literal 7273 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

#{EEvM%fLy~_Uu00960?YgoL0I~o8 D;o4lX literal 0 HcmV?d00001 diff --git a/charts/graph-node/charts/postgresql-16.6.3.tgz b/charts/graph-node/charts/postgresql-16.6.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..36ca74dcb79a5d83a780bff787c379a488ef1875 GIT binary patch literal 81554 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�S|)CWMn-bhOvdw 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 literal 0 HcmV?d00001 diff --git a/charts/graph-node/templates/NOTES.txt b/charts/graph-node/templates/NOTES.txt index e69de29b..b4f3743f 100644 --- a/charts/graph-node/templates/NOTES.txt +++ b/charts/graph-node/templates/NOTES.txt @@ -0,0 +1,27 @@ +Thank you for installing {{ .Chart.Name }}. + +Your release is named {{ .Release.Name }}. + +To learn more about the release, try: + + $ helm status {{ .Release.Name }} -n {{ .Release.Namespace }} + $ helm get all {{ .Release.Name }} -n {{ .Release.Namespace }} + +{{ if .Values.postgresql.enabled }} +PostgreSQL has been deployed as a dependency: + - Host: {{ .Release.Name }}-postgresql + - Port: 5432 + - Database: graph-node + - Username: postgres + - Password: Retrieved from the {{ .Release.Name }}-postgresql secret +{{ end }} + +{{ if index .Values "ipfs-cluster" "enabled" }} +IPFS Cluster has been deployed as a dependency: + - Service: ipfs-{{ .Release.Name }}-ipfs-cluster + - Port: 5001 + - IPFS API: http://ipfs-{{ .Release.Name }}-ipfs-cluster:5001 +{{ end }} + +To verify the deployment: + $ kubectl get pods -l "app.kubernetes.io/instance={{ .Release.Name }}" -n {{ .Release.Namespace }} \ No newline at end of file diff --git a/charts/graph-node/templates/_helpers.tpl b/charts/graph-node/templates/_helpers.tpl index 62d73fc6..7184e999 100644 --- a/charts/graph-node/templates/_helpers.tpl +++ b/charts/graph-node/templates/_helpers.tpl @@ -5,6 +5,18 @@ Expand the name of the chart. {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} +{{/* +Get PostgreSQL secret name +*/}} +{{- define "graph-node.postgresql.secretName" -}} +{{- $secretName := .Values.postgresql.auth.existingSecret -}} +{{- if not $secretName -}} + {{- printf "%s-postgresql" .Release.Name -}} +{{- else -}} + {{- $secretName -}} +{{- end -}} +{{- end -}} + {{/* 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). diff --git a/charts/graph-node/templates/graph-node/all.yaml b/charts/graph-node/templates/graph-node/all.yaml index a892cd96..bf16d176 100644 --- a/charts/graph-node/templates/graph-node/all.yaml +++ b/charts/graph-node/templates/graph-node/all.yaml @@ -121,15 +121,32 @@ spec: {{- end }} {{- range $key, $val := $values.env }} - name: {{ $key | quote }} + {{- if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGHOST") (empty $val) }} + value: {{ printf "%s-postgresql" $.Release.Name | quote }} + {{- else if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGDATABASE") (empty $val) }} + value: "graph-node" + {{- else if and (eq $key "IPFS") (empty $val) }} + value: {{ printf "http://ipfs-%s-ipfs-cluster:5001" $.Release.Name | quote }} + {{- else }} value: {{ $val | quote }} + {{- end }} {{- end }} {{- range $key, $val := $values.secretEnv }} - name: {{ $key | quote }} + {{- if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGUSER") (empty $val.secretName) }} + value: "postgres" + {{- else }} valueFrom: secretKeyRef: + {{- if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGPASSWORD") (empty $val.secretName) }} + name: {{ printf "%s-postgresql" $.Release.Name | quote }} + key: "postgres-password" + {{- else }} name: {{ $val.secretName | quote }} key: {{ $val.key | quote }} + {{- end }} optional: false + {{- end }} {{- end }} command: - sh @@ -230,15 +247,32 @@ spec: {{- end }} {{- range $key, $val := $values.env }} - name: {{ $key | quote }} + {{- if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGHOST") (empty $val) }} + value: {{ printf "%s-postgresql" $.Release.Name | quote }} + {{- else if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGDATABASE") (empty $val) }} + value: "graph-node" + {{- else if and (eq $key "IPFS") (empty $val) }} + value: {{ printf "http://ipfs-%s-ipfs-cluster:5001" $.Release.Name | quote }} + {{- else }} value: {{ $val | quote }} + {{- end }} {{- end }} - {{- range $key, $val := $values.secretEnv }} + {{- range $key, $val := $values.secretEnv }} - name: {{ $key | quote }} + {{- if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGUSER") (empty $val.secretName) }} + value: "postgres" + {{- else }} valueFrom: secretKeyRef: + {{- if and (eq $key "PRIMARY_SUBGRAPH_DATA_PGPASSWORD") (empty $val.secretName) }} + name: {{ printf "%s-postgresql" $.Release.Name | quote }} + key: "postgres-password" + {{- else }} name: {{ $val.secretName | quote }} key: {{ $val.key | quote }} + {{- end }} optional: false + {{- end }} {{- end }} ports: - name: http-query diff --git a/charts/graph-node/values.yaml b/charts/graph-node/values.yaml index 70541aff..c1461e61 100644 --- a/charts/graph-node/values.yaml +++ b/charts/graph-node/values.yaml @@ -159,12 +159,14 @@ graphNodeDefaults: # -- Environment variable defaults that come from `Secret`s for all Graph Node groups secretEnv: PRIMARY_SUBGRAPH_DATA_PGUSER: - # -- Name of the secret that contains your PG username + # -- Name of the secret that contains your PG username. + # If not specified, will use the dependency PostgreSQL user secretName: # -- Name of the data key in the secret that contains your PG username key: PRIMARY_SUBGRAPH_DATA_PGPASSWORD: - # -- Name of the secret that contains your PG password + # -- Name of the secret that contains your PG password. + # If not specified, will use the dependency PostgreSQL credentials secretName: # -- Name of the data key in the secret that contains your PG password key: @@ -278,3 +280,30 @@ configTemplate: | # There's no 'match' field, so any subgraph that hasn't matched above, matches this rule shards = ["primary"] indexers = {{ toJson .computed.indexPools.default }} + +ipfs-cluster: + enabled: false + p2pNodePort: + enabled: false + +postgresql: + enabled: false + secretName: postgresql + global: + postgresql: + auth: + database: graph-node + primary: + initdb: + args: "--lc-collate=C --lc-ctype=C --encoding=UTF8" + extendedConfiguration: | + max_connections = 10000 + resources: + limits: + cpu: 2000m + ephemeral-storage: 2Gi + memory: 4000Mi + requests: + cpu: 100m + ephemeral-storage: 50Mi + memory: 128Mi \ No newline at end of file