diff --git a/infra/helm-charts/external-node/.helmignore b/infra/helm-charts/external-node/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/infra/helm-charts/external-node/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/infra/helm-charts/external-node/Chart.yaml b/infra/helm-charts/external-node/Chart.yaml new file mode 100644 index 0000000..443b369 --- /dev/null +++ b/infra/helm-charts/external-node/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: external-node +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +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.1.0 + +# 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 +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/infra/helm-charts/external-node/README.md b/infra/helm-charts/external-node/README.md new file mode 100644 index 0000000..76a5297 --- /dev/null +++ b/infra/helm-charts/external-node/README.md @@ -0,0 +1,19 @@ +# How + +To install the helm chart(deploy all the manifests): + +```sh +helm install external-node . --values values.yaml +``` + +If there are some changes, you can use `upgrade`. Helm will change only what it needs: + +```sh +helm upgrade external-node . --values values.yaml --debug +``` + +If you want to delete the installed helm chart use `delete`: + +```sh +helm delete external-node +``` diff --git a/infra/helm-charts/external-node/templates/backendconfig.yaml b/infra/helm-charts/external-node/templates/backendconfig.yaml new file mode 100644 index 0000000..72687c6 --- /dev/null +++ b/infra/helm-charts/external-node/templates/backendconfig.yaml @@ -0,0 +1,13 @@ +{{- range .Values.nodename }} +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: {{.}}-hc-config +spec: + healthCheck: + checkIntervalSec: 15 + port: 3071 + type: HTTP + requestPath: /health +--- +{{- end }} diff --git a/infra/helm-charts/external-node/templates/defaultbackend-ingress-grafana.yaml b/infra/helm-charts/external-node/templates/defaultbackend-ingress-grafana.yaml new file mode 100644 index 0000000..2d0ef20 --- /dev/null +++ b/infra/helm-charts/external-node/templates/defaultbackend-ingress-grafana.yaml @@ -0,0 +1,61 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: html +data: + index.html: | + + + + + Error Grafana + + +

Error

+ + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: default-backend-ingress-grafana +spec: + selector: + matchLabels: + app: default-backend-ingress-grafana + template: + metadata: + labels: + app: default-backend-ingress-grafana + + spec: + containers: + - name: default-backend-ingress-grafana + image: nginx:latest + resources: + limits: + memory: "128Mi" + cpu: "500m" + volumeMounts: + - name: html-volume + mountPath: /usr/share/nginx/html/index.html + subPath: index.html + ports: + - containerPort: 80 + volumes: + - name: html-volume + configMap: + name: html +--- +apiVersion: v1 +kind: Service +metadata: + name: default-backend-ingress-grafana-service +spec: + type: NodePort + selector: + app: default-backend-ingress-grafana + ports: + - port: 80 + targetPort: 80 + protocol: TCP diff --git a/infra/helm-charts/external-node/templates/deployment.yaml b/infra/helm-charts/external-node/templates/deployment.yaml new file mode 100644 index 0000000..34ee761 --- /dev/null +++ b/infra/helm-charts/external-node/templates/deployment.yaml @@ -0,0 +1,91 @@ +{{- range .Values.nodename }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{.}} + namespace: {{$.Values.namespace}} +spec: + replicas: 1 + selector: + matchLabels: + app: {{.}} + template: + metadata: + labels: + app: {{.}} + spec: + {{- $fullUrl := printf "%s/%s" $.Values.deployment.env.DATABASE_URL . -}} + {{- $parsedUrl := (urlParse $fullUrl) -}} + {{- $parsedHost := (regexSplit ":" $parsedUrl.host -1) -}} + {{- $parsedCredentials := (regexSplit ":" $parsedUrl.userinfo -1) -}} + + {{- if eq $parsedUrl.scheme "postgres" }} + {{- else }} + {{- fail (printf "Invalid: %s" $fullUrl) }} + {{- end }} + + initContainers: + - name: {{.}}-drop-db + image: postgres:14 + env: + - name: PGUSER + value: {{index $parsedCredentials 0}} + - name: PGPASSWORD + value: {{index $parsedCredentials 1}} + - name: POSTGRES_DB + value: {{$parsedUrl.path | trimAll "/"}} + - name: PGHOST + value: {{index $parsedHost 0}} + - name: PGPORT + value: "{{index $parsedHost 1}}" + - name: MAIN_DB + value: {{$parsedUrl.scheme}} + command: ["sh", "-c", "psql -d $MAIN_DB -c \"DROP DATABASE IF EXISTS \\\"$POSTGRES_DB\\\";\" "] + + containers: + - name: {{.}} + image: matterlabs/external-node:v24.7.0-alpha-linux-amd64 + ports: + - containerPort: 3050 + - containerPort: 3051 + - containerPort: 3071 + - containerPort: 3312 + readinessProbe: + httpGet: + path: /health + port: 3071 + env: + - name: EN_HTTP_PORT + value: "3050" + - name: EN_WS_PORT + value: "3051" + - name: EN_HEALTHCHECK_PORT + value: "3071" + - name: EN_PROMETHEUS_PORT + value: "3312" + - name: DATABASE_URL + value: "{{$.Values.deployment.env.DATABASE_URL}}/{{.}}" + - name: DATABASE_POOL_SIZE + value: "10" + - name: EN_ETH_CLIENT_URL + value: {{$.Values.deployment.env.EN_ETH_CLIENT_URL}} + - name: EN_MAIN_NODE_URL + value: {{$.Values.deployment.env.EN_MAIN_NODE_URL}} + - name: EN_L1_CHAIN_ID + value: "{{$.Values.deployment.env.EN_L1_CHAIN_ID}}" + - name: EN_L2_CHAIN_ID + value: "{{$.Values.deployment.env.EN_L2_CHAIN_ID}}" + - name: EN_STATE_CACHE_PATH + value: "./db/ext-node/state_keeper" + - name: EN_MERKLE_TREE_PATH + value: "./db/ext-node/lightweight" + - name: EN_SNAPSHOTS_RECOVERY_ENABLED + value: "true" + - name: EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL + value: {{$.Values.deployment.env.EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL}} + - name: EN_SNAPSHOTS_OBJECT_STORE_MODE + value: "GCSAnonymousReadOnly" + - name: RUST_LOG + value: "warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=debug,zksync_utils=debug,zksync_web3_decl::client=error" +--- +{{- end }} diff --git a/infra/helm-charts/external-node/templates/grafana.yaml b/infra/helm-charts/external-node/templates/grafana.yaml new file mode 100644 index 0000000..78b10ce --- /dev/null +++ b/infra/helm-charts/external-node/templates/grafana.yaml @@ -0,0 +1,555 @@ +{{- range .Values.nodename }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{.}}-config + namespace: {{$.Values.namespace}} +data: + prometheus.yaml: | + global: + scrape_interval: 3s + scrape_configs: + - job_name: '{{.}}' + static_configs: + - targets: ['{{.}}-service:3312'] + grafana-provisioning-datasources-prometheus.yaml: | + apiVersion: 1 + datasources: + - name: Prometheus + type: prometheus + access: proxy + orgId: 1 + url: http://{{.}}-prometheus:9090 # Name of the prometheus' service + isDefault: true + editable: true + grafana-provisioning-dashboards-default.yaml: | + apiVersion: 1 + providers: + - name: 'Default' + orgId: 1 + folder: '' + type: file + disableDeletion: false + updateIntervalSeconds: 10 + options: + path: /etc/grafana/provisioning/dashboards +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{.}}-grafana-deployment + namespace: {{$.Values.namespace}} +spec: + replicas: 1 + selector: + matchLabels: + app: {{.}}-grafana + template: + metadata: + labels: + app: {{.}}-grafana + spec: + containers: + - name: {{.}}-grafana + image: grafana/grafana:11.0.0 + ports: + - containerPort: 3000 + env: + - name: GF_SECURITY_ADMIN_USER + value: admin + - name: GF_SECURITY_ADMIN_PASSWORD + value: admin + - name: GF_USERS_ALLOW_SIGN_UP + value: 'false' + - name: GF_SERVER_DOMAIN + value: '{{$.Values.terraform.grafana.dns}}' + - name: GF_SERVER_ROOT_URL + value: "%(protocol)s://%(domain)s/{{.}}/" + - name: GF_SERVER_SERVE_FROM_SUB_PATH + value: 'true' + volumeMounts: + - name: dashboard-volume + mountPath: /etc/grafana/provisioning/dashboards/General.json + subPath: General.json + - name: config-volume + mountPath: /etc/grafana/provisioning/datasources/prometheus.yaml + subPath: grafana-provisioning-datasources-prometheus.yaml + - name: config-volume + mountPath: /etc/grafana/provisioning/dashboards/default.yaml + subPath: grafana-provisioning-dashboards-default.yaml + readinessProbe: + httpGet: + port: 3000 + path: /api/health + - name: {{.}}-prometheus + image: prom/prometheus:v2.52.0 + args: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--web.console.libraries=/etc/prometheus/console_libraries' + - '--web.console.templates=/etc/prometheus/consoles' + - '--storage.tsdb.retention.time=200h' + - '--web.enable-lifecycle' + ports: + - containerPort: 9090 + volumeMounts: + - name: config-volume + mountPath: /etc/prometheus/prometheus.yml + subPath: prometheus.yaml + - name: {{.}}-pushgateway + image: prom/pushgateway:v1.9.0 + ports: + - containerPort: 9091 + - name: {{.}}-nodeexporter + image: prom/node-exporter:v1.8.1 + args: + - '--path.procfs=/host/proc' + - '--path.rootfs=/rootfs' + - '--path.sysfs=/host/sys' + - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)' + ports: + - containerPort: 9100 + volumeMounts: + - name: host-volume + mountPath: /rootfs + readOnly: true + - name: host-volume + mountPath: /host/sys + subPath: sys + readOnly: true + - name: host-volume + mountPath: /host/proc + subPath: proc + readOnly: true + volumes: + - name: config-volume + configMap: + name: {{.}}-config + - name: dashboard-volume + configMap: + name: {{.}}-config-dashboard + - name: host-volume + hostPath: + path: / +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{.}}-config-dashboard + namespace: {{$.Values.namespace}} +data: + General.json: | + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 1, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 6, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.3.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "exemplar": true, + "expr": "sum by (stage) (rate(server_processed_txs{stage=~\"mempool_added\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "TPS", + "transformations": [], + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 5, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "exemplar": true, + "expr": "sum by (stage) (external_node_fetcher_l1_batch)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Last processed batch by status", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 33, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 4, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "exemplar": true, + "expr": "sum by (stage) (external_node_sync_lag)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Sync lag (blocks)", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "exemplar": true, + "expr": "sum by (job) (rocksdb_total_sst_size)", + "interval": "", + "legendFormat": "RocksDB", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "exemplar": true, + "expr": "sum by (job) (postgres_table_total_size_bytes)", + "hide": false, + "interval": "", + "legendFormat": "PostgresSQL", + "refId": "B" + } + ], + "title": "Total disk space usage", + "type": "timeseries" + } + ], + "refresh": "5s", + "schemaVersion": 37, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "External Node", + "uid": "0", + "version": 1, + "weekStart": "" + } +--- +{{- end }} diff --git a/infra/helm-charts/external-node/templates/ingress-grafana.yaml b/infra/helm-charts/external-node/templates/ingress-grafana.yaml new file mode 100644 index 0000000..bff56de --- /dev/null +++ b/infra/helm-charts/external-node/templates/ingress-grafana.yaml @@ -0,0 +1,34 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: external-node-grafana + namespace: {{.Values.namespace}} + annotations: + kubernetes.io/ingress.global-static-ip-name: {{.Values.terraform.grafana.ip}} + cert-manager.io/issuer: http01-issuer + acme.cert-manager.io/http01-edit-in-place: "true" + labels: + app: external-node-grafana +spec: + defaultBackend: + service: + name: default-backend-ingress-grafana-service + port: + number: 80 + rules: + - host: {{.Values.terraform.grafana.dns}} + http: + paths: + {{- range .Values.nodename }} + - pathType: Prefix + path: "/{{.}}" + backend: + service: + name: {{.}}-grafana + port: + number: 3000 + {{- end }} + tls: + - hosts: + - {{.Values.terraform.grafana.dns}} + secretName: external-node-grafana-ingress-cert diff --git a/infra/helm-charts/external-node/templates/ingress.yaml b/infra/helm-charts/external-node/templates/ingress.yaml new file mode 100644 index 0000000..f5aab0a --- /dev/null +++ b/infra/helm-charts/external-node/templates/ingress.yaml @@ -0,0 +1,28 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: external-node + namespace: {{.Values.namespace}} + annotations: + kubernetes.io/ingress.global-static-ip-name: {{.Values.terraform.rpc.ip}} + cert-manager.io/issuer: http01-issuer + acme.cert-manager.io/http01-edit-in-place: "true" + labels: + app: external-node +spec: + rules: + - host: {{.Values.terraform.rpc.dns}} + http: + paths: + {{- range .Values.nodename }} + - pathType: ImplementationSpecific + backend: + service: + name: {{.}}-service + port: + number: 3050 + {{- end }} + tls: + - hosts: + - {{.Values.terraform.rpc.dns}} + secretName: external-node-ingress-cert diff --git a/infra/helm-charts/external-node/templates/service-grafana.yaml b/infra/helm-charts/external-node/templates/service-grafana.yaml new file mode 100644 index 0000000..40e1551 --- /dev/null +++ b/infra/helm-charts/external-node/templates/service-grafana.yaml @@ -0,0 +1,62 @@ +{{- range .Values.nodename }} +apiVersion: v1 +kind: ServiceList +items: + - metadata: + name: {{.}}-grafana + namespace: {{$.Values.namespace}} + labels: + app: {{.}}-grafana + spec: + type: NodePort + ports: + - name: {{.}}-grafana + port: 3000 + targetPort: 3000 + protocol: TCP + selector: + app: {{.}}-grafana + - metadata: + name: {{.}}-prometheus + namespace: {{$.Values.namespace}} + labels: + app: {{.}}-prometheus + spec: + type: NodePort + ports: + - name: {{.}}-prometheus + port: 9090 + targetPort: 9090 + protocol: TCP + selector: + app: {{.}}-grafana + - metadata: + name: {{.}}-pushgateway + namespace: {{$.Values.namespace}} + labels: + app: {{.}}-prometheus + spec: + type: NodePort + ports: + - name: {{.}}-pushgateway + port: 9091 + targetPort: 9091 + protocol: TCP + selector: + app: {{.}}-grafana + - metadata: + name: {{.}}-nodeexporter + namespace: {{$.Values.namespace}} + labels: + app: {{.}}-prometheus + spec: + type: NodePort + ports: + - name: {{.}}-nodeexporter + port: 9100 + targetPort: 9100 + protocol: TCP + selector: + app: {{.}}-grafana +--- +{{- end }} diff --git a/infra/helm-charts/external-node/templates/service.yaml b/infra/helm-charts/external-node/templates/service.yaml new file mode 100644 index 0000000..88a25da --- /dev/null +++ b/infra/helm-charts/external-node/templates/service.yaml @@ -0,0 +1,29 @@ +{{- range .Values.nodename }} +apiVersion: v1 +kind: Service +metadata: + name: {{.}}-service + namespace: {{$.Values.namespace}} + annotations: + cloud.google.com/backend-config: '{"default": "{{.}}-hc-config"}' + labels: + app: {{.}} +spec: + type: NodePort + ports: + - port: 3050 + name: {{.}}-http + targetPort: 3050 + protocol: TCP + - port: 3071 + name: {{.}}-healthcheck + targetPort: 3071 + protocol: TCP + - port: 3312 + name: {{.}}-prometheus + targetPort: 3312 + protocol: TCP + selector: + app: {{.}} +--- +{{- end }} diff --git a/infra/helm-charts/external-node/values.yaml b/infra/helm-charts/external-node/values.yaml new file mode 100644 index 0000000..78df321 --- /dev/null +++ b/infra/helm-charts/external-node/values.yaml @@ -0,0 +1,20 @@ +nodename: + - en01 + - en02 + - en03 +namespace: default +deployment: + env: + EN_ETH_CLIENT_URL: https://ethereum-sepolia-rpc.publicnode.com + EN_L1_CHAIN_ID: "11155111" + EN_MAIN_NODE_URL: https://k8s.rpc.sepolia.zk-stack.lambdaclass.com + EN_L2_CHAIN_ID: "270" + DATABASE_URL: postgres://lambda:ferret_red_ant_crazy_emerald@10.56.112.6:5432 + EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL: "snapshots-object-store-dev" +terraform: + grafana: + ip: en01-grafana-ip + dns: k8s.en01.grafana.sepolia.zk-stack.lambdaclass.com + rpc: + ip: external-node-ip + dns: k8s.en01.rpc.sepolia.zk-stack.lambdaclass.com