From 720b017fe67613581a8fbb37c920be72b577aac0 Mon Sep 17 00:00:00 2001 From: Deepak Mishra <107930718+deepak-swirlds@users.noreply.github.com> Date: Mon, 11 Sep 2023 21:02:13 +0530 Subject: [PATCH] feat: add hedera node explorer as a conditional sub chart (#275) Signed-off-by: Deepak Mishra Signed-off-by: Lenin Mehedy Co-authored-by: Lenin Mehedy Signed-off-by: Jeromy Cannon --- charts/hedera-network/Chart.lock | 6 + charts/hedera-network/Chart.yaml | 5 + .../charts/hedera-explorer/Chart.yaml | 9 + .../hedera-explorer/templates/NOTES.txt | 20 ++ .../hedera-explorer/templates/_helpers.tpl | 74 +++++++ .../hedera-explorer/templates/configmap.yaml | 62 ++++++ .../hedera-explorer/templates/deployment.yaml | 64 ++++++ .../charts/hedera-explorer/templates/hpa.yaml | 17 ++ .../hedera-explorer/templates/ingress.yaml | 44 +++++ .../templates/poddisruptionbudget.yaml | 17 ++ .../hedera-explorer/templates/service.yaml | 15 ++ .../templates/serviceaccount.yaml | 8 + .../charts/hedera-explorer/values.yaml | 186 ++++++++++++++++++ charts/hedera-network/values.yaml | 21 +- 14 files changed, 547 insertions(+), 1 deletion(-) create mode 100644 charts/hedera-network/Chart.lock create mode 100644 charts/hedera-network/charts/hedera-explorer/Chart.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/NOTES.txt create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/_helpers.tpl create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/configmap.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/deployment.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/hpa.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/ingress.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/poddisruptionbudget.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/service.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/templates/serviceaccount.yaml create mode 100644 charts/hedera-network/charts/hedera-explorer/values.yaml diff --git a/charts/hedera-network/Chart.lock b/charts/hedera-network/Chart.lock new file mode 100644 index 000000000..9c3170e8b --- /dev/null +++ b/charts/hedera-network/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: tenant + repository: https://operator.min.io/ + version: 5.0.6 +digest: sha256:d1145f65bba0cb295b33e94b0fdc79d80bf06d22cf2606061d0c1462800d3ae7 +generated: "2023-08-09T09:52:59.515466+10:00" diff --git a/charts/hedera-network/Chart.yaml b/charts/hedera-network/Chart.yaml index 8d4d15b37..9c406e07e 100644 --- a/charts/hedera-network/Chart.yaml +++ b/charts/hedera-network/Chart.yaml @@ -27,6 +27,10 @@ appVersion: "0.7.0" kubeVersion: ">=1.25.0" dependencies: + - name: hedera-explorer + version: 0.2.0 + condition: cloud.minio.enable + - name: hedera-mirror alias: hedera-mirror-node version: 0.86.0 @@ -38,3 +42,4 @@ dependencies: version: 5.0.7 repository: https://operator.min.io/ condition: cloud.minio.enable + diff --git a/charts/hedera-network/charts/hedera-explorer/Chart.yaml b/charts/hedera-network/charts/hedera-explorer/Chart.yaml new file mode 100644 index 000000000..37191a48c --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/Chart.yaml @@ -0,0 +1,9 @@ +apiVersion: v2 +appVersion: 23.8.0 +description: Hedera Mirror Node Explorer for the Hedera Hashgraph DLT +home: https://github.com/hashgraph/hedera-mirror-node-explorer +name: hedera-explorer +sources: + - https://github.com/hashgraph/hedera-mirror-node-explorer +version: 0.2 + diff --git a/charts/hedera-network/charts/hedera-explorer/templates/NOTES.txt b/charts/hedera-network/charts/hedera-explorer/templates/NOTES.txt new file mode 100644 index 000000000..4cd70b2a4 --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/NOTES.txt @@ -0,0 +1,20 @@ +Get the application URL by running these commands: + +{{- if contains "NodePort" .Values.service.type }} + + export NODE_PORT=$(kubectl get -n {{ include "hedera-explorer.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "hedera-explorer.fullname" . }}) + export NODE_IP=$(kubectl get nodes -n {{ include "hedera-explorer.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + open http://${NODE_IP}:${NODE_PORT} + +{{- else if contains "LoadBalancer" .Values.service.type }} + + export SERVICE_IP=$(kubectl get svc -n {{ include "hedera-explorer.namespace" . }} {{ include "hedera-explorer.fullname" . }} -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}") + open http://${SERVICE_IP}:{{ .Values.service.port }} + +{{- else if contains "ClusterIP" .Values.service.type }} + + export POD_NAME=$(kubectl get pods -n {{ include "hedera-explorer.namespace" . }} -l "app.kubernetes.io/name={{ include "hedera-explorer.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + open http://127.0.0.1:8080 + kubectl -n {{ include "hedera-explorer.namespace" . }} port-forward $POD_NAME 8080:8080 + +{{- end }} diff --git a/charts/hedera-network/charts/hedera-explorer/templates/_helpers.tpl b/charts/hedera-network/charts/hedera-explorer/templates/_helpers.tpl new file mode 100644 index 000000000..4f08ccd3f --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/_helpers.tpl @@ -0,0 +1,74 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "hedera-explorer.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- 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). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "hedera-explorer.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Common labels +*/}} +{{- define "hedera-explorer.labels" -}} +{{ include "hedera-explorer.selectorLabels" . }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +app.kubernetes.io/part-of: hedera-explorer +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +helm.sh/chart: {{ include "hedera-explorer.chart" . }} +{{- if .Values.labels }} +{{ toYaml .Values.labels }} +{{- end }} +{{- end -}} + +{{/* +Expand the name of the chart. +*/}} +{{- define "hedera-explorer.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Namespace +*/}} +{{- define "hedera-explorer.namespace" -}} +{{- default .Release.Namespace .Values.global.namespaceOverride -}} +{{- end -}} + +{{/* +Selector labels +*/}} +{{- define "hedera-explorer.selectorLabels" -}} +app.kubernetes.io/component: hedera-explorer +app.kubernetes.io/name: {{ include "hedera-explorer.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "hedera-explorer.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} +{{- default (include "hedera-explorer.fullname" .) .Values.serviceAccount.name -}} +{{- else -}} +{{- default "default" .Values.serviceAccount.name -}} +{{- end -}} +{{- end -}} diff --git a/charts/hedera-network/charts/hedera-explorer/templates/configmap.yaml b/charts/hedera-network/charts/hedera-explorer/templates/configmap.yaml new file mode 100644 index 000000000..4f64a650d --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/configmap.yaml @@ -0,0 +1,62 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "hedera-explorer.fullname" . }}-config + annotations: {{ toYaml .Values.annotations | nindent 4 }} + labels: {{ include "hedera-explorer.labels" . | nindent 4 }} + namespace: {{ include "hedera-explorer.namespace" . }} +data: + nginx.conf: | + worker_processes 1; + error_log stderr warn; + pid /var/cache/nginx/nginx.pid; + + events { + worker_connections 1024; + } + + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /dev/stdout main; + sendfile on; + keepalive_timeout 65; + + server { + listen 8080; + server_name localhost; + + location / { + root /app; + index index.html; + try_files $uri $uri/ /index.html; + } + + location = /index.html { + root /app; + expires 30s; + } + + {{- if .Values.proxyPass }} + + {{- range $path, $backend := .Values.proxyPass }} + location {{ $path }} { + proxy_pass {{ $backend }}; + } + {{- end }} + + + {{- end }} + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + } + } + networks-config.json: {{ .Values.config | toJson }} \ No newline at end of file diff --git a/charts/hedera-network/charts/hedera-explorer/templates/deployment.yaml b/charts/hedera-network/charts/hedera-explorer/templates/deployment.yaml new file mode 100644 index 000000000..46e09f06d --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/deployment.yaml @@ -0,0 +1,64 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: {{ toYaml .Values.annotations | nindent 4 }} + labels: {{ include "hedera-explorer.labels" . | nindent 4 }} + name: {{ include "hedera-explorer.fullname" . }} + namespace: {{ include "hedera-explorer.namespace" . }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicas }} + {{- end }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + selector: + matchLabels: {{ include "hedera-explorer.selectorLabels" . | nindent 6 }} + strategy: {{ toYaml .Values.updateStrategy | nindent 4 }} + template: + metadata: + annotations: {{- tpl (.Values.podAnnotations | toYaml) $ | nindent 8 }} + labels: {{ include "hedera-explorer.selectorLabels" . | nindent 8 }} + spec: + affinity: {{ toYaml .Values.affinity | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + env: + {{- range $name, $value := .Values.env }} + - name: {{ $name }} + {{- if kindIs "string" $value }} + value: {{ tpl $value $ | quote }} + {{- else }} + {{- tpl (toYaml $value) $ | nindent 14 }} + {{- end }} + {{- end }} + envFrom: {{ tpl (toYaml .Values.envFrom) . | nindent 12 }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + livenessProbe: {{- toYaml .Values.livenessProbe | nindent 12 }} + ports: + - containerPort: 8080 + name: http + protocol: TCP + readinessProbe: {{ toYaml .Values.readinessProbe | nindent 12 }} + resources: {{ toYaml .Values.resources | nindent 12 }} + securityContext: {{ toYaml .Values.securityContext | nindent 12 }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- range $name, $config := . }} + - name: {{ $name }} + {{- toYaml $config | nindent 14 }} + {{- end }} + {{- end }} + imagePullSecrets: {{ toYaml .Values.image.pullSecrets | nindent 8 }} + nodeSelector: {{ toYaml .Values.nodeSelector | nindent 8 }} + priorityClassName: {{ .Values.priorityClassName }} + securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} + serviceAccountName: {{ include "hedera-explorer.serviceAccountName" . }} + terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} + tolerations: {{ toYaml .Values.tolerations | nindent 8 }} + {{- with .Values.volumes }} + volumes: + {{- range $name, $config := . }} + - name: {{ $name }} + {{- tpl (toYaml $config) $ | nindent 10 }} + {{- end }} + {{- end }} diff --git a/charts/hedera-network/charts/hedera-explorer/templates/hpa.yaml b/charts/hedera-network/charts/hedera-explorer/templates/hpa.yaml new file mode 100644 index 000000000..7e3ee0e5c --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/hpa.yaml @@ -0,0 +1,17 @@ +{{- if .Values.autoscaling.enabled -}} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + labels: {{ include "hedera-explorer.labels" . | nindent 4 }} + name: {{ include "hedera-explorer.fullname" . }} + namespace: {{ include "hedera-explorer.namespace" . }} +spec: + behavior: {{ toYaml .Values.autoscaling.behavior | nindent 4 }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: {{ tpl (toYaml .Values.autoscaling.metrics) . | nindent 4 }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "hedera-explorer.fullname" . }} +{{- end -}} diff --git a/charts/hedera-network/charts/hedera-explorer/templates/ingress.yaml b/charts/hedera-network/charts/hedera-explorer/templates/ingress.yaml new file mode 100644 index 000000000..973c797d4 --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/ingress.yaml @@ -0,0 +1,44 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "hedera-explorer.fullname" $ -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + {{- if .Values.ingress.annotations }} + annotations: + {{- range $key, $value := .Values.ingress.annotations }} + {{ $key }}: {{ tpl $value $ | quote }} + {{- end }} + {{- end }} + labels: {{ include "hedera-explorer.labels" . | nindent 4 }} + name: {{ $fullName }} + namespace: {{ include "hedera-explorer.namespace" . }} +spec: + {{- with .Values.ingress.className }} + ingressClassName: {{ . }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | default .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + pathType: {{ .pathType }} + backend: + service: + name: {{ $fullName }} + port: + number: {{ $.Values.service.port }} + {{- end }} + {{- end }} + {{- with .Values.ingress.tls }} + tls: + {{- range . }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/hedera-network/charts/hedera-explorer/templates/poddisruptionbudget.yaml b/charts/hedera-network/charts/hedera-explorer/templates/poddisruptionbudget.yaml new file mode 100644 index 000000000..8a07af156 --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/poddisruptionbudget.yaml @@ -0,0 +1,17 @@ +{{- if .Values.podDisruptionBudget.enabled -}} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + labels: {{ include "hedera-explorer.labels" . | nindent 4 }} + name: {{ include "hedera-explorer.fullname" . }} + namespace: {{ include "hedera-explorer.namespace" . }} +spec: + {{- with .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ . }} + {{- end }} + {{- with .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ . }} + {{- end }} + selector: + matchLabels: {{ include "hedera-explorer.selectorLabels" . | nindent 6 }} +{{- end -}} diff --git a/charts/hedera-network/charts/hedera-explorer/templates/service.yaml b/charts/hedera-network/charts/hedera-explorer/templates/service.yaml new file mode 100644 index 000000000..0a517d2cd --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: {{ toYaml .Values.service.annotations | nindent 4 }} + labels: {{ include "hedera-explorer.labels" . | nindent 4 }} + name: {{ include "hedera-explorer.fullname" . }} + namespace: {{ include "hedera-explorer.namespace" . }} +spec: + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: {{ include "hedera-explorer.selectorLabels" . | nindent 4 }} + type: {{ .Values.service.type }} diff --git a/charts/hedera-network/charts/hedera-explorer/templates/serviceaccount.yaml b/charts/hedera-network/charts/hedera-explorer/templates/serviceaccount.yaml new file mode 100644 index 000000000..cdf50c179 --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/templates/serviceaccount.yaml @@ -0,0 +1,8 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: {{ include "hedera-explorer.labels" . | nindent 4 }} + name: {{ include "hedera-explorer.serviceAccountName" . }} + namespace: {{ include "hedera-explorer.namespace" . }} +{{- end -}} diff --git a/charts/hedera-network/charts/hedera-explorer/values.yaml b/charts/hedera-network/charts/hedera-explorer/values.yaml new file mode 100644 index 000000000..7a36eeb9c --- /dev/null +++ b/charts/hedera-network/charts/hedera-explorer/values.yaml @@ -0,0 +1,186 @@ +affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app.kubernetes.io/component: hedera-explorer + +annotations: {} + +autoscaling: + behavior: {} + enabled: false + maxReplicas: 3 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 80 + minReplicas: 1 + +# Environment variables to add to the container. The value can either be a string or an EnvVarSource. Evaluated as a template. +env: {} + # DOCKER_LOCAL_MIRROR_NODE_URL: "http://localhost:5551" + # BAR: + # valueFrom: + # secretKeyRef: + # name: '{{ .Release.Name }}-custom' + # key: BAZ + +# Add config maps or secrets as environment variables. Evaluated as a template. +envFrom: [] +# - secretRef: +# name: '{{ .Release.Name }}-env' + +fullnameOverride: "" + +global: + namespaceOverride: "" + +image: + pullPolicy: IfNotPresent + pullSecrets: [] + registry: gcr.io + repository: hedera-registry/hedera-mirror-node-explorer + tag: "" # Defaults to the chart's app version + +ingress: + annotations: {} + className: "" + enabled: false + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +labels: {} + +livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 3 + timeoutSeconds: 2 + +nodeSelector: {} + +podAnnotations: {} + +podDisruptionBudget: + enabled: false + # maxUnavailable: 0 + minAvailable: 50% + +podSecurityContext: + fsGroup: 1000 + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seccompProfile: + type: RuntimeDefault + +priorityClassName: "" + +readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 3 + timeoutSeconds: 2 + +replicas: 1 + +resources: + limits: + cpu: 1150m + memory: 250Mi + requests: + cpu: 200m + memory: 100Mi + +revisionHistoryLimit: 3 + +securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: [ALL] + readOnlyRootFilesystem: true + +service: + annotations: {} + port: 80 + type: ClusterIP + +serviceAccount: + create: true + # The name of the service account to use. If not set and create is true, a name is generated using the fullname template + name: + +terminationGracePeriodSeconds: 30 + +tolerations: [] + +updateStrategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 10% + maxUnavailable: 25% + +# Volumes to add to the container. The key is the volume name and the value is the volume mount definition. The same keys should also appear in volumes below. +volumeMounts: + cache: + mountPath: /var/cache/nginx + nginx-config: + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + hedera-explorer-config: + mountPath: /app/networks-config.json + subPath: networks-config.json + +# Volume mounts to add to the container. The key is the volume name and the value is the volume definition. Evaluated as a template. +volumes: + cache: + emptyDir: {} + nginx-config: + configMap: + name: '{{ include "hedera-explorer.fullname" . }}-config' + hedera-explorer-config: + configMap: + name: '{{ include "hedera-explorer.fullname" . }}-config' + +# Add custom reverse proxy configuration +# Primary use case is to allow access to mirror node api via hedera explorer url +proxyPass: {} + # /api: http://fst-rest + +config: | + [ + { + "name": "mainnet", + "displayName": "MAINNET", + "url": "https://mainnet-public.mirrornode.hedera.com/", + "ledgerID": "00" + }, + { + "name": "testnet", + "displayName": "TESTNET", + "url": "https://testnet.mirrornode.hedera.com/", + "ledgerID": "01" + }, + { + "name": "previewnet", + "displayName": "PREVIEWNET", + "url": "https://previewnet.mirrornode.hedera.com/", + "ledgerID": "02" + } + ] diff --git a/charts/hedera-network/values.yaml b/charts/hedera-network/values.yaml index 9cd932812..e7835e112 100644 --- a/charts/hedera-network/values.yaml +++ b/charts/hedera-network/values.yaml @@ -212,7 +212,6 @@ hedera-mirror-node: name: "{{ .Release.Name }}-redis" - secretRef: name: uploader-mirror-secrets - # This is a single node address book, node account id = 0.0.3 # The addressbook.bin file updates will be handled by infrastructure code addressBook: CvYGCgwxMC45Ni4xMzEuMzYaBTAuMC4zIswGMzA4MjAxYTIzMDBkMDYwOTJhODY0ODg2ZjcwZDAxMDEwMTA1MDAwMzgyMDE4ZjAwMzA4MjAxOGEwMjgyMDE4MTAwYTEyMDA2ZjI1MjcyNDJjZDdmNTNiOWM0ZmQ1ZGU4NjljNTYyZmY0ZWQ4YTRhYjNhNjI5NjNmM2Y4MTg4YmU3OGYyNThlYWY0MmI5YzNlM2U4ZjU4Njk3MTYwNDEzYmJmNzdhYWRmYWYwZDlmZmQ4Njk4NGIzYmM0ZmI1ZjAyZTExZThhY2I2ZWM2N2U0MjY0YWRkY2ExM2ZmZGU4MzY3NTc4YzI3OTJmYzZhZTMyNmU3YjM0ODU2ZDIzZjAyNTc0ZjVhMjc0ODE1NjAwMzJkNzM3NDlkYWY5ZDMzMmE3ODgzNTEwZTYwZWEyMjI4ODlhM2JmYzNiZWRmMzUwZjNhMzZjYWRhMzliOTQ1MzljNzRmYjgyNjU2NzhiZDVjMTQ4ZmJjOTE2OWFkY2FjZjY3MTliOTJlZThkNDJhOWQyZjg5MjNjYzRmZTNiNDk0YzQ2N2Y0ZTk4YTJhNDllMGEwZWY1YWE0MzNjYmVjNDM4YmFhMjU2YWU2MWEwNTkwY2U0ZTY3ZDBiM2ZlNWYyZGE5YWQ5MGMyNmUyMjlkMjhkNjc5NDU2OTc4ZDY1NzM1NzNlYmI0NjIzOWJhZDRhYmZhYjRmZmU2NGVhNGEzOTdjNmJjNWY3MTc1ZTFhYzM2NDg4ZjE3YzY3NzNiNWVkOTM0MTVlNTdjNDFjNmNkODg2NmRiZDEyMzYwMDYyMzM5Y2IxNTRkODVhZDFhZWNkMWQ3NjBhMDk0MWQ4MGUyOGZlMjQ2MDMzYTg2OGRiYmM4OTc1ZjM2MDQ0MzFmY2U5YWY5MWRjNDI1NDBhYjA0YjFiYmVjMjFmMzVmNzVmMzBhZjZmMDVjODk4NjQyOTM4NmUyYjQzOWJmZDJmZDU5MTJjODI2MDA4MDFlOWMwODU3ZjE2NWU4ODdmMjIzM2RjMmMwOThiYTEyNjdiMDU5ZGI4YTJkYjcxNGZlNTA2NjhkYmYwOTM2MDRhNWRmM2MyMzIxNDY3MjMyMTFjZTU4NTUyNjM4ZmFlOWZjMDY0YTdmMDliMDIwMzAxMDAwMTICGANCCgoECmCDJBC/hwNQAQ== @@ -228,6 +227,26 @@ hedera-mirror-node: bucketName: "fst-streams" # for s3 configuration of mirror node look at uploader-mirror-secrets.yaml +hedera-explorer: + # The hedera explorer UI /api url will proxy all request to mirror node + # + # Without this we would need to expose the mirror node rest API publicly and specify its public url in the network config below + proxyPass: + /api: http://fst-rest + + # In the json config below we are using the url as "/", instead of a regular http://mainnet.url + # This makes the explorer UI make a relative request to its own url + # This in combination with proxyPass above saves us the need to expose mirror node URL publicly + config: | + [ + { + "name": "localnet", + "displayName": "LOCALNET", + "url": "/", + "ledgerID": "03" + } + ] + # hedera node configuration # Only the name of the node is required. The rest of the configuration will be inherited from `defaults` section hedera: