diff --git a/charts/namada-indexer/.helmignore b/charts/namada-indexer/.helmignore new file mode 100644 index 0000000..328945e --- /dev/null +++ b/charts/namada-indexer/.helmignore @@ -0,0 +1,32 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. + +# # Ignore all .tgz files except in charts directory +# /charts/*.tgz +# !charts/*.tgz + +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ + +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ + +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ + +# Project specific +.releaserc.js diff --git a/charts/namada-indexer/.releaserc.js b/charts/namada-indexer/.releaserc.js new file mode 100644 index 0000000..6763f80 --- /dev/null +++ b/charts/namada-indexer/.releaserc.js @@ -0,0 +1,17 @@ +const chartName = 'namada-indexer'; +const chartPath = __dirname; + +module.exports = { + extends: '../.github/chart-release.config.js', + tagFormat: 'namada-indexer-v${version}', + plugins: [ + '@semantic-release/commit-analyzer', + '@semantic-release/release-notes-generator', + '@semantic-release/changelog', + '@semantic-release/git', + '@semantic-release/github', + ['@semantic-release/exec', { + prepareCmd: 'sed -i "s/^version:.*$/version: ${nextRelease.version}/" Chart.yaml && helm package . --version ${nextRelease.version} --app-version ${nextRelease.version} && mv *.tgz ../' + }] + ] +}; diff --git a/charts/namada-indexer/Chart.lock b/charts/namada-indexer/Chart.lock new file mode 100644 index 0000000..b96fbc2 --- /dev/null +++ b/charts/namada-indexer/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: postgres-operator + repository: https://opensource.zalando.com/postgres-operator/charts/postgres-operator + version: 1.13.0 +- name: redis + repository: https://charts.bitnami.com/bitnami + version: 20.5.0 +digest: sha256:8336dfdf07439b8fb5ff7e54910d67b4833b1a02394bfddb438241eb827c9a17 +generated: "2024-12-11T14:02:20.240034Z" diff --git a/charts/namada-indexer/Chart.yaml b/charts/namada-indexer/Chart.yaml new file mode 100644 index 0000000..cd988bc --- /dev/null +++ b/charts/namada-indexer/Chart.yaml @@ -0,0 +1,16 @@ +apiVersion: v2 +name: namada-indexer +description: A Helm chart for deploying a namada indexer +type: application +version: 0.0.0-development +appVersion: "1.0" + +dependencies: + - name: postgres-operator + version: "1.13.0" + repository: "https://opensource.zalando.com/postgres-operator/charts/postgres-operator" + condition: postgresOperator.install.enabled + - name: redis + version: "20.5.0" + repository: "https://charts.bitnami.com/bitnami" + condition: redis.install.enabled diff --git a/charts/namada-indexer/cleanup.sh b/charts/namada-indexer/cleanup.sh new file mode 100755 index 0000000..d1e4d85 --- /dev/null +++ b/charts/namada-indexer/cleanup.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +NAMESPACE="namada-indexer" +RELEASE_NAME="namada-indexer" + +echo "🗑️ Cleaning up resources in namespace: $NAMESPACE" + +# Delete Helm release +echo "Removing Helm release..." +helm uninstall $RELEASE_NAME -n $NAMESPACE + +# Delete PostgreSQL resources +echo "Removing PostgreSQL resources..." +kubectl delete postgresql -n $NAMESPACE --all +kubectl delete deployment -n $NAMESPACE -l application=db-connection-pooler +kubectl delete statefulset -n $NAMESPACE --all + +# Delete PostgreSQL Services +echo "Removing PostgreSQL Services..." +kubectl delete svc -n $NAMESPACE \ + namada-indexer-db \ + namada-indexer-db-config \ + namada-indexer-db-repl \ + namada-indexer-db-pooler \ + namada-indexer-db-repl-pooler \ + namada-indexer-db-pooler-repl + +# Delete Other Services +echo "Removing Other Services..." +kubectl delete svc -n $NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME + +# Delete PVCs +echo "Removing PVCs..." +kubectl delete pvc -n $NAMESPACE --all + +# Delete ConfigMaps +echo "Removing ConfigMaps..." +kubectl delete configmap -n $NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME + +# Delete PostgreSQL Operator Secrets +echo "Removing PostgreSQL Operator Secrets..." +kubectl delete secret -n $NAMESPACE \ + namada.namada-indexer-db.credentials.postgresql.acid.zalan.do \ + pooler.namada-indexer-db.credentials.postgresql.acid.zalan.do \ + postgres.namada-indexer-db.credentials.postgresql.acid.zalan.do \ + standby.namada-indexer-db.credentials.postgresql.acid.zalan.do + +# Delete Other Secrets +echo "Removing Other Secrets..." +kubectl delete secret -n $NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME + +# Delete Ingress +echo "Removing Ingress..." +kubectl delete ingress -n $NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME + +# Optional: Delete the namespace itself (uncomment if needed) +# echo "Removing namespace..." +# kubectl delete namespace $NAMESPACE + +echo "✅ Cleanup completed!" diff --git a/charts/namada-indexer/templates/_helpers.tpl b/charts/namada-indexer/templates/_helpers.tpl new file mode 100644 index 0000000..4ada5fd --- /dev/null +++ b/charts/namada-indexer/templates/_helpers.tpl @@ -0,0 +1,160 @@ +{{- define "namada-indexer.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- define "namada-indexer.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} + +{{- define "namada-indexer.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common labels +*/}} +{{- define "namada-indexer.labels" -}} +helm.sh/chart: {{ include "namada-indexer.chart" . }} +{{ include "namada-indexer.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "namada-indexer.selectorLabels" -}} +app.kubernetes.io/name: {{ include "namada-indexer.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "namada-indexer.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "namada-indexer.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Container configuration helper +*/}} +{{- define "namada-indexer.containerConfig" -}} +{{- $ := index . 0 -}} +{{- $container := index . 1 -}} +{{- with $container -}} +{{- if .command }} +command: +{{- toYaml .command | nindent 2 }} +{{- end }} +{{- if .args }} +args: +{{- toYaml .args | nindent 2 }} +{{- end }} +{{- if .ports }} +ports: +{{- toYaml .ports | nindent 2 }} +{{- end }} +{{- if .livenessProbe }} +livenessProbe: +{{- toYaml .livenessProbe | nindent 2 }} +{{- end }} +{{- end }} +{{- if $.Values.containerDefaults }} +resources: +{{- toYaml $.Values.containerDefaults.resources | nindent 2 }} +envFrom: +{{- toYaml $.Values.containerDefaults.envFrom | nindent 2 }} +env: +{{- end }} +{{- end }} + +{{/* +Database configuration helper +*/}} +{{- define "namada-indexer.dbConfig" -}} +{{- if .Values.postgresOperator.enabled }} +DB_HOST: "{{ include "namada-indexer.fullname" . }}-db.{{ .Release.Namespace }}.svc.cluster.local" +SECRET_NAME: "namada.{{ .Release.Namespace }}-db.credentials.postgresql.acid.zalan.do" +{{- else if .Values.externalPostgres.enabled }} +DB_HOST: {{ .Values.externalPostgres.host | quote }} +SECRET_NAME: {{ .Values.externalPostgres.credentialSecret.name | quote }} +{{- end }} +{{- end }} + +{{/* +Database environment variables +*/}} +{{- define "namada-indexer.dbEnv" -}} +{{- if .Values.postgresOperator.enabled }} +- name: DB_USER + valueFrom: + secretKeyRef: + name: namada.{{ .Release.Name }}-db.credentials.postgresql.acid.zalan.do + key: username +- name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: namada.{{ .Release.Name }}-db.credentials.postgresql.acid.zalan.do + key: password +{{- else if .Values.externalPostgres.enabled }} +- name: DB_USER + valueFrom: + secretKeyRef: + name: {{ .Values.externalPostgres.credentialSecret.name }} + key: {{ .Values.externalPostgres.credentialSecret.usernameKey | default "username" }} +- name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.externalPostgres.credentialSecret.name }} + key: {{ .Values.externalPostgres.credentialSecret.passwordKey | default "password" }} +{{- end }} +{{- end }} + +{{/* +Database configuration validation +*/}} +{{- define "namada-indexer.validateDbConfig" -}} +{{- if and .Values.postgresOperator.enabled .Values.externalPostgres.enabled }} +{{- fail "Cannot enable both postgresOperator and externalPostgres at the same time" }} +{{- end }} +{{- if not (or .Values.postgresOperator.enabled .Values.externalPostgres.enabled) }} +{{- fail "Either postgresOperator or externalPostgres must be enabled" }} +{{- end }} +{{- end }} + +{{/* +Redis configuration helper +*/}} +{{- define "namada-indexer.redisConfig" -}} +{{- if .Values.redis.install.enabled }} +REDIS_HOST: "{{ .Release.Name }}-redis-master.{{ .Release.Namespace }}.svc.cluster.local" +REDIS_PORT: "6379" +REDIS_SECRET_NAME: "{{ .Release.Name }}-redis" +{{- else if .Values.externalRedis.enabled }} +REDIS_HOST: {{ .Values.externalRedis.host | quote }} +REDIS_PORT: {{ .Values.externalRedis.port | quote }} +REDIS_SECRET_NAME: {{ .Values.externalRedis.credentialSecret.name | quote }} +{{- end }} +{{- end }} + +{{/* +Redis configuration validation +*/}} +{{- define "namada-indexer.validateRedisConfig" -}} +{{- if and .Values.redis.install.enabled .Values.externalRedis.enabled }} +{{- fail "Cannot enable both redis.install and externalRedis at the same time" }} +{{- end }} +{{- if not (or .Values.redis.install.enabled .Values.externalRedis.enabled) }} +{{- fail "Either redis.install or externalRedis must be enabled" }} +{{- end }} +{{- end }} diff --git a/charts/namada-indexer/templates/configmap.yaml b/charts/namada-indexer/templates/configmap.yaml new file mode 100644 index 0000000..5cd7345 --- /dev/null +++ b/charts/namada-indexer/templates/configmap.yaml @@ -0,0 +1,21 @@ +{{- $dbConfig := include "namada-indexer.dbConfig" . | fromYaml }} +{{- $redisConfig := include "namada-indexer.redisConfig" . | fromYaml }} +{{- range $name, $configmap := .Values.configmaps }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "namada-indexer.fullname" $ }}-{{ $name }} + labels: + {{- include "namada-indexer.labels" $ | nindent 4 }} +data: + {{- if $dbConfig }} + {{- toYaml $dbConfig | nindent 2 }} + {{- end }} + {{- if $redisConfig }} + {{- toYaml $redisConfig | nindent 2 }} + {{- end }} + {{- range $key, $value := $configmap.data }} + {{ $key }}: {{ $value | quote }} + {{- end }} +{{- end }} diff --git a/charts/namada-indexer/templates/deployment.yaml b/charts/namada-indexer/templates/deployment.yaml new file mode 100644 index 0000000..af8ed80 --- /dev/null +++ b/charts/namada-indexer/templates/deployment.yaml @@ -0,0 +1,181 @@ +{{- include "namada-indexer.validateDbConfig" . }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "namada-indexer.fullname" . }} + labels: + {{- include "namada-indexer.labels" . | nindent 4 }} + {{- with .Values.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.replicaCount }} + strategy: + {{- toYaml .Values.strategy | nindent 4 }} + selector: + matchLabels: + {{- include "namada-indexer.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "namada-indexer.selectorLabels" . | nindent 8 }} + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "namada-indexer.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + {{- range $key, $value := .Values.containers }} + - name: {{ $key }} + image: {{ $value.image }} + imagePullPolicy: {{ $.Values.imagePullPolicy | default "IfNotPresent" }} + {{- with $.Values.containerDefaults }} + # Apply all defaults first + {{- if .command }} + command: + {{- toYaml .command | nindent 12 }} + {{- end }} + {{- if .args }} + args: + {{- toYaml .args | nindent 12 }} + {{- end }} + {{- if .ports }} + ports: + {{- toYaml .ports | nindent 12 }} + {{- end }} + {{- if .resources }} + resources: + {{- toYaml .resources | nindent 12 }} + {{- end }} + {{- if .livenessProbe }} + livenessProbe: + {{- toYaml .livenessProbe | nindent 12 }} + {{- end }} + {{- if .readinessProbe }} + readinessProbe: + {{- toYaml .readinessProbe | nindent 12 }} + {{- end }} + {{- if .volumeMounts }} + volumeMounts: + {{- toYaml .volumeMounts | nindent 12 }} + {{- end }} + {{- end }} + + # Then apply container-specific overrides + {{- if $value.ports }} + ports: + {{- toYaml $value.ports | nindent 12 }} + {{- end }} + {{- if $value.command }} + command: + {{- toYaml $value.command | nindent 12 }} + {{- end }} + {{- if $value.args }} + args: + {{- toYaml $value.args | nindent 12 }} + {{- end }} + + # Merge envFrom from both defaults and container-specific + envFrom: + {{- if $.Values.containerDefaults.envFrom }} + {{- toYaml $.Values.containerDefaults.envFrom | nindent 12 }} + {{- end }} + {{- if $value.envFrom }} + {{- toYaml $value.envFrom | nindent 12 }} + {{- end }} + {{- range $.Values.externalSecrets }} + - secretRef: + name: {{ .target.name }} + {{- end }} + env: + {{- include "namada-indexer.dbEnv" $ | nindent 12 }} + {{- with $value.env }} + {{- toYaml . | nindent 12 }} + {{- end }} + + {{- if $value.volumeMounts }} + volumeMounts: + {{- toYaml $value.volumeMounts | nindent 12 }} + {{- end }} + {{- if $value.env }} + env: + {{- toYaml $value.env | nindent 12 }} + {{- end }} + {{- if $value.resources }} + resources: + {{- toYaml $value.resources | nindent 12 }} + {{- end }} + {{- if $value.livenessProbe }} + livenessProbe: + {{- toYaml $value.livenessProbe | nindent 12 }} + {{- end }} + {{- if $value.readinessProbe }} + readinessProbe: + {{- toYaml $value.readinessProbe | nindent 12 }} + {{- end }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if .Values.initContainers }} + initContainers: + {{- range $key, $value := .Values.initContainers }} + - name: {{ $key }} + image: {{ $value.image }} + imagePullPolicy: {{ $.Values.imagePullPolicy | default "IfNotPresent" }} + command: {{- toYaml $value.command | nindent 12 }} + # Merge envFrom from both defaults and container-specific + envFrom: + {{- if $.Values.containerDefaults.envFrom }} + {{- toYaml $.Values.containerDefaults.envFrom | nindent 12 }} + {{- end }} + {{- if $value.envFrom }} + {{- toYaml $value.envFrom | nindent 12 }} + {{- end }} + env: + {{- include "namada-indexer.dbEnv" $ | nindent 12 }} + {{- if $value.env }} + {{- toYaml $value.env | nindent 12 }} + {{- end }} + {{- if $value.volumeMounts }} + volumeMounts: + {{- toYaml $value.volumeMounts | nindent 12 }} + {{- end }} + {{- end }} + {{- end }} + volumes: + {{- if .Values.additionalVolumes }} + {{- range $key, $value := .Values.additionalVolumes }} + - name: {{ $key }} + {{- if $value.hostPath }} + hostPath: + path: {{ $value.hostPath.path }} + type: {{ $value.hostPath.type | default "DirectoryOrCreate" }} + {{- end }} + {{- if $value.configMap }} + configMap: + name: {{ $value.configMap.name }} + {{- end }} + {{- if $value.secret }} + secret: + secretName: {{ $value.secret.secretName }} + {{- end }} + {{- end }} + {{- end }} + restartPolicy: OnFailure diff --git a/charts/namada-indexer/templates/ingress.yaml b/charts/namada-indexer/templates/ingress.yaml new file mode 100644 index 0000000..cef3a5c --- /dev/null +++ b/charts/namada-indexer/templates/ingress.yaml @@ -0,0 +1,42 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "namada-indexer.fullname" . -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "namada-indexer.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if .Values.ingress.className }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + pathType: {{ .pathType }} + backend: + service: + name: {{ $fullName }}-{{ .serviceName }} + port: + number: {{ .servicePort }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/namada-indexer/templates/postgresql.yaml b/charts/namada-indexer/templates/postgresql.yaml new file mode 100644 index 0000000..b3e3e97 --- /dev/null +++ b/charts/namada-indexer/templates/postgresql.yaml @@ -0,0 +1,30 @@ +{{- if .Values.postgresOperator.enabled }} +apiVersion: "acid.zalan.do/v1" +kind: postgresql +metadata: + name: {{ include "namada-indexer.fullname" . }}-db + labels: + {{- include "namada-indexer.labels" . | nindent 4 }} +spec: + teamId: {{ .Values.postgresOperator.teamId }} + volume: + size: {{ .Values.postgresOperator.volume.size }} + {{- if .Values.postgresOperator.volume.storageClass }} + storageClass: {{ .Values.postgresOperator.volume.storageClass }} + {{- end }} + numberOfInstances: {{ .Values.postgresOperator.numberOfInstances }} + users: + {{- toYaml .Values.postgresOperator.users | nindent 4 }} + databases: + {{- toYaml .Values.postgresOperator.databases | nindent 4 }} + postgresql: + version: {{ .Values.postgresOperator.version | quote }} + parameters: + {{- toYaml .Values.postgresOperator.parameters | nindent 6 }} + {{- if .Values.postgresOperator.enableConnectionPooler }} + enableConnectionPooler: {{ .Values.postgresOperator.enableConnectionPooler }} + {{- end }} + {{- if .Values.postgresOperator.enableReplicaConnectionPooler }} + enableReplicaConnectionPooler: {{ .Values.postgresOperator.enableReplicaConnectionPooler }} + {{- end }} +{{- end }} diff --git a/charts/namada-indexer/templates/service-account.yaml b/charts/namada-indexer/templates/service-account.yaml new file mode 100644 index 0000000..5821cb3 --- /dev/null +++ b/charts/namada-indexer/templates/service-account.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "namada-indexer.serviceAccountName" . }} + labels: + {{- include "namada-indexer.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/namada-indexer/templates/service.yaml b/charts/namada-indexer/templates/service.yaml new file mode 100644 index 0000000..f68baa8 --- /dev/null +++ b/charts/namada-indexer/templates/service.yaml @@ -0,0 +1,22 @@ +{{- range $key, $value := .Values.containers }} +{{- if hasKey $value "service" }} +{{- if $value.service.enabled }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ include "namada-indexer.fullname" $ }}-{{ $key }} + labels: + {{- include "namada-indexer.labels" $ | nindent 4 }} +spec: + type: {{ $value.service.type }} + ports: + - port: {{ $value.service.port }} + targetPort: {{ $value.service.targetPort | default $value.containerPort }} + protocol: TCP + name: {{ $key }} + selector: + {{- include "namada-indexer.selectorLabels" $ | nindent 4 }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/namada-indexer/values.yaml b/charts/namada-indexer/values.yaml new file mode 100644 index 0000000..69b1401 --- /dev/null +++ b/charts/namada-indexer/values.yaml @@ -0,0 +1,127 @@ +replicaCount: 1 + +# Common configurations in ConfigMaps +configmaps: + config: + data: + DB_PORT: "5432" + DB_NAME: "namada-indexer" + TENDERMINT_URL: "http://your-namada-node:26657" + +# PostgreSQL Operator Configuration +postgresOperator: + install: + enabled: true + enabled: true + teamId: "your-team" + volume: + size: 100Gi + storageClass: "default" + numberOfInstances: 3 + users: + namada: + - superuser + - createdb + databases: + namada-indexer: namada + version: "16" + parameters: + max_connections: "1000" + shared_buffers: "256MB" + prepared_statements_cache_size: "1GB" + max_prepared_statements: "1000" + +# External Postgres Configuration (if not using operator) +externalPostgres: + enabled: false + host: "" + port: "5432" + database: "" + credentialSecret: + name: "" + usernameKey: "" + passwordKey: "" + +# Redis Configuration +redis: + install: + enabled: true + enabled: true + architecture: replication + sentinel: + enabled: true + masterSet: "mymaster" + quorum: 2 + replica: + replicaCount: 3 + persistence: + enabled: true + size: 10Gi + storageClass: "default" + master: + persistence: + enabled: true + size: 10Gi + storageClass: "default" + +# External Redis Configuration (if not using built-in) +externalRedis: + enabled: false + host: "" + port: "6379" + +# Common container defaults +containerDefaults: + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 50m + memory: 64Mi + envFrom: + - configMapRef: + name: namada-indexer-config + +initContainers: [] + +containers: + chain: + image: "your-registry/namada-indexer/chain:latest" + governance: + image: "your-registry/namada-indexer/governance:latest" + pos: + image: "your-registry/namada-indexer/pos:latest" + rewards: + image: "your-registry/namada-indexer/rewards:latest" + parameters: + image: "your-registry/namada-indexer/parameters:latest" + transactions: + image: "your-registry/namada-indexer/transaction:latest" + webserver: + image: "your-registry/namada-indexer/webserver:latest" + ports: + - name: http + containerPort: 5001 + protocol: TCP + service: + enabled: true + type: ClusterIP + port: 80 + targetPort: 5001 + +imagePullSecrets: + - name: registry-credentials + +ingress: + enabled: false + className: "nginx" + annotations: {} + hosts: + - host: chart-example.local + paths: + - path: / + pathType: Prefix + serviceName: webserver + servicePort: 80 + tls: []