|
| 1 | +# Heimdall-V2 Helm Chart |
| 2 | + |
| 3 | +Deploy and scale [Heimdall-v2](https://github.com/0xPolygon/heimdall-v2) inside Kubernetes with ease |
| 4 | + |
| 5 | +[](https://opensource.org/licenses/Apache-2.0)    |
| 6 | + |
| 7 | +## Features |
| 8 | + |
| 9 | +- Actively maintained by [GraphOps](https://graphops.xyz) and contributors |
| 10 | +- Deploys a scalable pool of `statefulset` instances, with auto-scaling support |
| 11 | +- Strong security defaults (non-root execution, ready-only root filesystem, drops all capabilities) |
| 12 | +- Readiness checks to ensure traffic only hits `Pod`s that are healthy and ready to serve requests |
| 13 | +- Support for `PodMonitor`s to configure Prometheus to scrape metrics ([prometheus-operator](https://github.com/prometheus-operator/prometheus-operator)) |
| 14 | +- Support for configuring Grafana dashboards for polygon ([grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana)) |
| 15 | + |
| 16 | +## Quickstart |
| 17 | + |
| 18 | +To install the chart with the release name `my-release`: |
| 19 | + |
| 20 | +```console |
| 21 | +$ helm repo add graphops http://graphops.github.io/launchpad-charts |
| 22 | +$ helm install my-release graphops/heimdall-v2 |
| 23 | +``` |
| 24 | + |
| 25 | +Once the release is installed, heimdall will begin syncing from snapshot if the following was specified: |
| 26 | +```fromSnapshot: |
| 27 | + # -- Enable initialising Heimdall from a remote Snapshot |
| 28 | + enabled: true |
| 29 | + # -- URL to snapshot to download and extract, see [here](https://snapshots.matic.today) |
| 30 | + snapshotUrl: |
| 31 | +``` |
| 32 | +You can use `kubectl logs` to monitor the download status. See the Values section to install Prometheus `PodMonitor`s and a Grafana dashboard. |
| 33 | + |
| 34 | +## Upgrading |
| 35 | + |
| 36 | +We recommend that you pin the version of the Chart that you deploy. You can use the `--version` flag with `helm install` and `helm upgrade` to specify a chart version constraint. |
| 37 | + |
| 38 | +This project uses [Semantic Versioning](https://semver.org/). Changes to the version of the application (the `appVersion`) that the Chart deploys will generally result in a patch version bump for the Chart. Breaking changes to the Chart or its `values.yaml` interface will be reflected with a major version bump. |
| 39 | + |
| 40 | +We do not recommend that you upgrade the application by overriding `image.tag`. Instead, use the version of the Chart that is built for your desired `appVersion`. |
| 41 | + |
| 42 | +## Values |
| 43 | + |
| 44 | +| Key | Description | Type | Default | |
| 45 | +|-----|-------------|------|---------| |
| 46 | + | fullnameOverride | | string | `""` | |
| 47 | + | grafana.dashboards | Enable creation of Grafana dashboards. [Grafana chart](https://github.com/grafana/helm-charts/tree/main/charts/grafana#grafana-helm-chart) must be configured to search this namespace, see `sidecar.dashboards.searchNamespace` | bool | `false` | |
| 48 | + | grafana.dashboardsConfigMapLabel | Must match `sidecar.dashboards.label` value for the [Grafana chart](https://github.com/grafana/helm-charts/tree/main/charts/grafana#grafana-helm-chart) | string | `"grafana_dashboard"` | |
| 49 | + | grafana.dashboardsConfigMapLabelValue | Must match `sidecar.dashboards.labelValue` value for the [Grafana chart](https://github.com/grafana/helm-charts/tree/main/charts/grafana#grafana-helm-chart) | string | `""` | |
| 50 | + | heimdall.affinity | | object | `{}` | |
| 51 | + | heimdall.affinityPresets.antiAffinityByHostname | Configure anti-affinity rules to prevent multiple Heimdall instances on the same host | bool | `true` | |
| 52 | + | heimdall.config.borRpcUrl | Bor RPC address | string | `""` | |
| 53 | + | heimdall.config.chainId | Override chain_id - Optional, defaults are provided for each network (heimdallv2-137, heimdallv2-80002) | string | `""` | |
| 54 | + | heimdall.config.corsAllowedOrigins | CORS Allowed Origins | string | `"[\"*\"]"` | |
| 55 | + | heimdall.config.downloadGenesis.enabled | Enable downloading the gensis file at init | bool | `true` | |
| 56 | + | heimdall.config.downloadGenesis.genesisSha512 | SHA512 for the Genesis URL file - Specify this if you set a genesisUrl above | string | `""` | |
| 57 | + | heimdall.config.downloadGenesis.genesisUrl | Override URL for the Genesis file - Optional, defaults are provided for mainnet and amoy | string | `""` | |
| 58 | + | heimdall.config.ethRpcUrl | Ethereum RPC address | string | `""` | |
| 59 | + | heimdall.config.extraArgs | Additional CLI arguments to pass to Heimdall | list | `[]` | |
| 60 | + | heimdall.config.fromSnapshot.enabled | Enable initialising Heimdall from a remote Snapshot | bool | `false` | |
| 61 | + | heimdall.config.fromSnapshot.snapshotUrl | URL to snapshot to download and extract, see [here](https://docs.polygon.technology/pos/how-to/snapshots/) | string | `""` | |
| 62 | + | heimdall.config.logFormat | Logs format | string | `"json"` | |
| 63 | + | heimdall.config.logLevel | Log level setup | string | `"info"` | |
| 64 | + | heimdall.config.metrics.enabled | Enable metrics | bool | `true` | |
| 65 | + | heimdall.config.name | Override moniker - Optional, default {{ .Release.Name }} | string | `""` | |
| 66 | + | heimdall.config.network | Specifies the heimdall network instance, one of: `mainnet`, `amoy` | string | `"mainnet"` | |
| 67 | + | heimdall.config.peers | Override persistent peers - Optional, defaults are provided for each network | string | `""` | |
| 68 | + | heimdall.config.seeds | Override seed nodes - Optional, defaults are provided for each network | string | `""` | |
| 69 | + | heimdall.enabled | Enable creation of `StatefulSet` for Heimdall | bool | `true` | |
| 70 | + | heimdall.env | Environment variables to set in key/value format | object | `{}` | |
| 71 | + | heimdall.image.pullPolicy | | string | `"IfNotPresent"` | |
| 72 | + | heimdall.image.repository | Image for Heimdall | string | `"0xpolygon/heimdall-v2"` | |
| 73 | + | heimdall.image.tag | Overrides the image tag | string | Chart.appVersion | |
| 74 | + | heimdall.nodeSelector | | object | `{}` | |
| 75 | + | heimdall.p2pNodePort.enabled | Expose P2P port via NodePort | bool | `false` | |
| 76 | + | heimdall.p2pNodePort.initContainer.image.pullPolicy | Container pull policy | string | `"IfNotPresent"` | |
| 77 | + | heimdall.p2pNodePort.initContainer.image.repository | Container image to fetch nodeport information | string | `"lachlanevenson/k8s-kubectl"` | |
| 78 | + | heimdall.p2pNodePort.initContainer.image.tag | Container tag | string | `"v1.25.4"` | |
| 79 | + | heimdall.p2pNodePort.port | NodePort to be used. Must be unique. | int | `31000` | |
| 80 | + | heimdall.podAnnotations | Annotations for the `Pod` | object | `{}` | |
| 81 | + | heimdall.podSecurityContext | Pod-wide security context | object | `{"runAsNonRoot":false}` | |
| 82 | + | heimdall.readyAfterSync | Enable a readiness probe that checks if heimdall is synced | bool | `false` | |
| 83 | + | heimdall.resources | | object | `{}` | |
| 84 | + | heimdall.service.ports.http-api | | int | `1317` | |
| 85 | + | heimdall.service.ports.http-metrics | | int | `26660` | |
| 86 | + | heimdall.service.ports.http-rpc | | int | `26657` | |
| 87 | + | heimdall.service.topologyAwareRouting.enabled | | bool | `false` | |
| 88 | + | heimdall.service.type | | string | `"ClusterIP"` | |
| 89 | + | heimdall.tolerations | | list | `[]` | |
| 90 | + | heimdall.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for heimdall storage | object | `{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"300Gi"}},"storageClassName":null}` | |
| 91 | + | heimdall.volumeClaimSpec.resources.requests.storage | The amount of disk space to provision for Heimdall | string | `"300Gi"` | |
| 92 | + | heimdall.volumeClaimSpec.storageClassName | The storage class to use when provisioning a persistent volume for heimdall | string | `nil` | |
| 93 | + | nameOverride | | string | `""` | |
| 94 | + | prometheus.serviceMonitors.enabled | Enable monitoring by creating `PodMonitor` CRDs ([prometheus-operator](https://github.com/prometheus-operator/prometheus-operator)) | bool | `false` | |
| 95 | + | prometheus.serviceMonitors.interval | | string | `nil` | |
| 96 | + | prometheus.serviceMonitors.labels | | object | `{}` | |
| 97 | + | prometheus.serviceMonitors.relabelings | | list | `[]` | |
| 98 | + | prometheus.serviceMonitors.scrapeTimeout | | string | `nil` | |
| 99 | + | serviceAccount.annotations | Annotations to add to the service account | object | `{}` | |
| 100 | + | serviceAccount.create | Specifies whether a service account should be created | bool | `true` | |
| 101 | + | serviceAccount.name | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | string | `""` | |
| 102 | + |
| 103 | +## Contributing |
| 104 | + |
| 105 | +We welcome and appreciate your contributions! Please see the [Contributor Guide](/CONTRIBUTING.md), [Code Of Conduct](/CODE_OF_CONDUCT.md) and [Security Notes](/SECURITY.md) for this repository. |
0 commit comments