diff --git a/.circleci/config.yml b/.circleci/config.yml index 6b8ae099ff..16ed6f8d1a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -250,10 +250,6 @@ commands: helm upgrade -i pr-<< parameters.pr-name >> charts/taraxa-node/ --namespace blockchain-prnet -f charts/taraxa-node/values.yaml -f charts/taraxa-node/prnet.values.yaml \ --set image.repository=gcr.io/jovial-meridian-249123/taraxa-node \ --set image.tag=${PR_TAG} \ - --set explorer.configEnvs.faucetEnabled="true" \ - --set explorer.configEnvs.rpcHttpProvider="http://pr-<< parameters.pr-name >>-taraxa-node-1.pr-<< parameters.pr-name >>-taraxa-node:7777" \ - --set explorer.configEnvs.rpcWsProvider="http://pr-<< parameters.pr-name >>-taraxa-node-1.pr-<< parameters.pr-name >>-taraxa-node:8777" \ - --set explorer.configEnvs.wsProvider="wss://explorer-ws-pr-<< parameters.pr-name >>.prnet.taraxa.io" \ --set bootnode.loadBalancer.addresses\[0\]="${PRNET_IPS_BOOT_NODES[0]}" \ --set bootnode.loadBalancer.addresses\[1\]="${PRNET_IPS_BOOT_NODES[1]}" \ --set bootnode.loadBalancer.addresses\[2\]="${PRNET_IPS_BOOT_NODES[2]}" \ @@ -329,12 +325,6 @@ jobs: when: on_success comment: "\

PR NET pr-<< pipeline.parameters.pr_number >> Successfully deployed!

\ - \ - \ - \ -
explorer>.prnet.taraxa.io >\ - https://explorer-pr-<>.prnet.taraxa.io
RPC>.prnet.taraxa.io >\ - https://rpc-pr-<>.prnet.taraxa.io
\

Boot Nodes

\ \ \ @@ -379,12 +369,6 @@ jobs: when: on_success comment: "\

PR NET pr-<< pipeline.parameters.pr_number >> Successfully Re deployed!

\ -
Boot Node 1${PRNET_IPS_BOOT_NODES[0]}
\ - \ - \ -
explorer>.prnet.taraxa.io >\ - https://explorer-pr-<>.prnet.taraxa.io
RPC>.prnet.taraxa.io >\ - https://rpc-pr-<>.prnet.taraxa.io
\

Boot Nodes

\ \ \ diff --git a/charts/taraxa-node/CHANGELOG.md b/charts/taraxa-node/CHANGELOG.md index 0136d1d6c5..df3d8461f4 100644 --- a/charts/taraxa-node/CHANGELOG.md +++ b/charts/taraxa-node/CHANGELOG.md @@ -3,12 +3,12 @@ This file documents all notable changes to `taraxa-node` Helm Chart. The release numbering uses [semantic versioning](http://semver.org). - -## v0.1.10 +## v0.2.0 ### Major changes -* Change in prefix for chain IDs +* Removes explorer dependancy + ## v0.2.0 @@ -22,4 +22,11 @@ numbering uses [semantic versioning](http://semver.org). ### Patches -* Fixes RPC nodes initconfig wrong validators \ No newline at end of file +* Fixes RPC nodes initconfig wrong validators + + +## v0.1.10 + +### Major changes + +* Change in prefix for chain IDs \ No newline at end of file diff --git a/charts/taraxa-node/Chart.yaml b/charts/taraxa-node/Chart.yaml index 9fc32175b5..f7214485d5 100644 --- a/charts/taraxa-node/Chart.yaml +++ b/charts/taraxa-node/Chart.yaml @@ -2,13 +2,8 @@ apiVersion: v2 appVersion: "1.0" description: Kubernetes helm chart for Taraxa blockchain full node implementation. name: taraxa-node -version: 0.2.0 +version: 0.3.0 keywords: - blockchain - taraxa -- node -dependencies: - - name: explorer - version: 0.1.7 - condition: explorer.enabled - repository: https://charts.gcp.taraxa.io +- node \ No newline at end of file diff --git a/charts/taraxa-node/templates/consensus-node.yaml b/charts/taraxa-node/templates/consensus-node.yaml index 8fc48b709a..e4e2009426 100644 --- a/charts/taraxa-node/templates/consensus-node.yaml +++ b/charts/taraxa-node/templates/consensus-node.yaml @@ -33,16 +33,6 @@ spec: kubernetes.io/change-cause: "Configuration through configmaps." spec: initContainers: - {{ if .Values.explorer.enabled }} - - name: wait-for-explorer - image: dwdraju/alpine-curl-jq:latest - command: ["/bin/entrypoint.sh"] - volumeMounts: - - name: explorer-check - mountPath: /bin/entrypoint.sh - readOnly: true - subPath: entrypoint.sh - {{- end }} - name: config-adapter image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} @@ -160,12 +150,6 @@ spec: configMap: defaultMode: 0700 name: {{ .Release.Name }}-consensus-node-init-script - {{ if .Values.explorer.enabled }} - - name: explorer-check - configMap: - defaultMode: 0700 - name: {{ include "taraxa-node.fullname" . }}-explorer-check - {{- end }} {{- if .Values.slack.enabled }} - name: status-requirements configMap: diff --git a/charts/taraxa-node/templates/explorer-check.yaml b/charts/taraxa-node/templates/explorer-check.yaml deleted file mode 100644 index a58a72da13..0000000000 --- a/charts/taraxa-node/templates/explorer-check.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- $fullName := include "taraxa-node.fullname" . -}} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ $fullName }}-explorer-check - labels: - helm.sh/chart: {{ include "taraxa-node.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - entrypoint.sh: |- - #!/bin/sh - set -e - - HOST="http://{{ .Release.Name }}-explorer/api/address/0x0000000000000000000000000000000000000000" - - echo "Checking host ${HOST}" - while [ $(curl -L -sw '%{http_code}' ${HOST} -o /dev/null) -ne 200 ]; do - sleep 5 - echo 'Waiting for the explorer...' - done diff --git a/charts/taraxa-node/templates/initconfig-consensus-node.yaml b/charts/taraxa-node/templates/initconfig-consensus-node.yaml index 1c7fef99ae..aac7438ede 100644 --- a/charts/taraxa-node/templates/initconfig-consensus-node.yaml +++ b/charts/taraxa-node/templates/initconfig-consensus-node.yaml @@ -114,14 +114,6 @@ data: echo "No predifined keys. Generating new wallet..." KEY=$(taraxad --command account | grep node_secret | cut -d\ -f3- | tr -d \") VRF=$(taraxad --command vrf | grep vrf_secret | cut -d\ -f3 | tr -d \") - {{ if .Values.explorer.enabled }} - NODE_ADDRESS=$(taraxad --command account ${KEY} | grep node_address | cut -d\ -f3 | tr -d \") - echo "New wallet: 0x${NODE_ADDRESS}" - - SIG=$(taraxa-sign sign --key 0x${EXPLORER_DELEGATION_PRIVATE_KEY} 0x${NODE_ADDRESS}) - - curl --silent http://{{ .Release.Name }}-explorer/api/delegate/0x${NODE_ADDRESS}?sig=${SIG} - {{- end }} else echo "Found wallet file." KEY=$(cat "$WALLET_PATH" | jq -r .node_secret) @@ -129,13 +121,6 @@ data: fi fi - {{ if .Values.explorer.enabled }} - {{- if and (ne .Values.config.network "841") (ne .Values.config.network "842") (ne .Values.config.network "843") }} - NODE_ADDRESS=$(taraxad --command account ${KEY} | grep node_address | cut -d\ -f3 | tr -d \") - curl --silent http://{{ .Release.Name }}-explorer/api/faucet/0x${NODE_ADDRESS} - {{- end }} - {{- end }} - taraxad --command config \ --chain-id {{ .Values.config.network }} \ --node-secret ${KEY} \ @@ -159,11 +144,9 @@ data: {{- end }} {{- if and (ne .Values.config.network "841") (ne .Values.config.network "842") (ne .Values.config.network "843") }} - {{ if .Values.explorer.enabled }} - export FAUCET_ADDRESS=$(taraxad --command account ${EXPLORER_FAUCET_PRIVATE_KEY} | grep node_address | cut -d\ -f3 | tr -d \") + export FAUCET_ADDRESS=$(taraxad --command account ${FAUCET_PRIVATE_KEY} | grep node_address | cut -d\ -f3 | tr -d \") cat $CONFIG_PATH | jq '.chain_config.final_chain.state.genesis_balances += ({("0x"+env.FAUCET_ADDRESS): "0x1027e72f1f12813088000000"})' > $CONFIG_PATH.tmp && mv $CONFIG_PATH.tmp $CONFIG_PATH {{- end }} - {{- end }} cat $CONFIG_PATH {{- end }} diff --git a/charts/taraxa-node/templates/initconfig-node.yaml b/charts/taraxa-node/templates/initconfig-node.yaml index ce2c4ace4c..69c6ba70e2 100644 --- a/charts/taraxa-node/templates/initconfig-node.yaml +++ b/charts/taraxa-node/templates/initconfig-node.yaml @@ -146,11 +146,9 @@ data: {{- end }} {{- if and (ne .Values.config.network "841") (ne .Values.config.network "842") (ne .Values.config.network "843") }} - {{ if .Values.explorer.enabled }} - export FAUCET_ADDRESS=$(taraxad --command account ${EXPLORER_FAUCET_PRIVATE_KEY} | grep node_address | cut -d\ -f3 | tr -d \") + export FAUCET_ADDRESS=$(taraxad --command account ${FAUCET_PRIVATE_KEY} | grep node_address | cut -d\ -f3 | tr -d \") cat $CONFIG_PATH | jq '.chain_config.final_chain.state.genesis_balances += ({("0x"+env.FAUCET_ADDRESS): "0x1027e72f1f12813088000000"})' > $CONFIG_PATH.tmp && mv $CONFIG_PATH.tmp $CONFIG_PATH {{- end }} - {{- end }} cat $CONFIG_PATH {{- end }} diff --git a/charts/taraxa-node/templates/secrets.yaml b/charts/taraxa-node/templates/secrets.yaml index aa7631a87f..e29acdeb53 100644 --- a/charts/taraxa-node/templates/secrets.yaml +++ b/charts/taraxa-node/templates/secrets.yaml @@ -34,7 +34,7 @@ data: BOOT_NODE_VRF_{{ $key }}: {{ $value | b64enc | quote }} {{- end }} SLACK_TOKEN: {{ .Values.slack.token | b64enc | quote }} - EXPLORER_DELEGATION_PRIVATE_KEY: {{ .Values.config.consensusnode.explorerDelegationPrivateKey | b64enc | quote }} - EXPLORER_FAUCET_PRIVATE_KEY: {{ .Values.explorer.faucet.privKey | b64enc | quote }} + DELEGATION_PRIVATE_KEY: {{ .Values.config.delegationPrivateKey | b64enc | quote }} + FAUCET_PRIVATE_KEY: {{ .Values.config.faucetPrivateKey | b64enc | quote }} {{- end }} {{- end }} diff --git a/charts/taraxa-node/templates/service-registry-config.yaml b/charts/taraxa-node/templates/service-registry-config.yaml new file mode 100644 index 0000000000..6a3d04aceb --- /dev/null +++ b/charts/taraxa-node/templates/service-registry-config.yaml @@ -0,0 +1,198 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + labels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} +data: + requirements.txt: |- + cachetools==5.2.0 + certifi==2022.9.14 + charset-normalizer==2.1.1 + google-auth==2.11.1 + idna==3.4 + kubernetes==24.2.0 + oauthlib==3.2.1 + pyasn1==0.4.8 + pyasn1-modules==0.2.8 + python-dateutil==2.8.2 + PyYAML==6.0 + requests==2.28.1 + requests-oauthlib==1.3.1 + rsa==4.9 + six==1.16.0 + urllib3==1.26.12 + websocket-client==1.4.1 + + app.py: |- + import time + import logging + import os + import threading + import json + import requests + from requests.exceptions import HTTPError + from http.server import BaseHTTPRequestHandler, HTTPServer + from kubernetes import client, config + + logging.basicConfig(level=logging.INFO) + + logging.info('Starting registry service...') + + try: + config.load_incluster_config() + except config.ConfigException: + try: + config.load_kube_config() + except config.ConfigException: + raise Exception("Could not configure kubernetes python client") + + + def get_current_namespace(): + ns_path = "/var/run/secrets/kubernetes.io/serviceaccount/namespace" + if os.path.exists(ns_path): + with open(ns_path) as f: + return f.read().strip() + try: + _, active_context = config.list_kube_config_contexts() + return active_context["context"]["namespace"] + except KeyError: + return "default" + + + instance = "{{ .Release.Name }}" + namespace = get_current_namespace() + logging.info('Current namespace: {}'.format(namespace)) + + v1 = client.CoreV1Api() + + + def is_pod_valid(pod): + if "app.kubernetes.io/instance" not in pod.metadata.labels: + return False + if pod.metadata.labels["app.kubernetes.io/instance"] != instance: + return False + if "app" not in pod.metadata.labels: + return False + if pod.metadata.labels["app"] not in ["boot-node", "consensus-node", "taraxa-node"]: + return False + if pod.status.conditions is None: + return False + + for condition in pod.status.conditions: + if condition.type == 'Ready' and condition.status == 'True': + return True + + return False + + + def get_pods_sync(): + namespaced_pods = v1.list_namespaced_pod( + namespace=namespace, watch=False) + + pods = [] + for i in namespaced_pods.items: + if is_pod_valid(i): + pods.append({ + "type": i.metadata.labels["app"], + "instance": i.metadata.labels["app.kubernetes.io/instance"], + "name": i.metadata.name, + "ip": i.status.pod_ip + }) + + return pods + + + def watch_pods(): + namespaced_pods = v1.list_namespaced_pod( + namespace="blockchain-prnet", watch=False) + + pods = [] + for i in namespaced_pods.items: + if is_pod_valid(i): + pods.append({ + "type": i.metadata.labels["app"], + "instance": i.metadata.labels["app.kubernetes.io/instance"], + "name": i.metadata.name, + "ip": i.status.pod_ip + }) + + return pods + + + def get_pod_wallet_address(pod): + name = pod['name'] + ip = pod['ip'] + try: + response = requests.post('http://{}:7777/'.format(ip), json={ + 'jsonrpc': '2.0', 'method': 'get_account_address', 'params': [], 'id': 1}) + response.raise_for_status() + + json = response.json() + return '0x{}'.format(json['result']['value']) + except HTTPError as http_err: + logging.warning( + f'Get pod address for {name}: HTTP error occurred: {http_err}') + except Exception as err: + logging.warning( + f'Get pod address for {name}: Other error occurred: {err}') + + + def update_pods(pods): + pods = [] + for p in get_pods_sync(): + if p['type'] != "boot-node": + address = get_pod_wallet_address(p) + if address is None: + logging.warning('Could not get wallet address for pod {}, ip: {}'.format( + p['name'], p['ip'])) + else: + address = None + + p['address'] = address + logging.info('Found pod: {}'.format(p)) + pods.append(p) + return pods + + + pods = [] + + + def listen(): + global pods + while True: + pods = update_pods(pods) + time.sleep(20) + + + hostName = "127.0.0.1" + serverPort = 5000 + + + class RegistryServer(BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.send_header("Content-type", "application/json") + self.end_headers() + self.wfile.write(bytes(json.dumps(pods), "utf-8")) + + + if __name__ == '__main__': + thread = threading.Thread(target=listen) + thread.start() + + server = HTTPServer((hostName, serverPort), RegistryServer) + print("Server started http://%s:%s" % (hostName, serverPort)) + + try: + server.serve_forever() + except KeyboardInterrupt: + pass + + server.server_close() + print("Server stopped.") \ No newline at end of file diff --git a/charts/taraxa-node/templates/service-registry-role.yaml b/charts/taraxa-node/templates/service-registry-role.yaml new file mode 100644 index 0000000000..d3362d6ffb --- /dev/null +++ b/charts/taraxa-node/templates/service-registry-role.yaml @@ -0,0 +1,18 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + labels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} +rules: + - apiGroups: [""] + resources: ["services", "endpoints"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["pods"] + verbs: ["get", "list", "watch"] \ No newline at end of file diff --git a/charts/taraxa-node/templates/service-registry-rolebinding.yaml b/charts/taraxa-node/templates/service-registry-rolebinding.yaml new file mode 100644 index 0000000000..764563ba3a --- /dev/null +++ b/charts/taraxa-node/templates/service-registry-rolebinding.yaml @@ -0,0 +1,19 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + labels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} +subjects: + - kind: ServiceAccount + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: "{{ include "taraxa-node.fullname" . }}-service-registry" \ No newline at end of file diff --git a/charts/taraxa-node/templates/service-registry-service.yaml b/charts/taraxa-node/templates/service-registry-service.yaml new file mode 100644 index 0000000000..c2940430e5 --- /dev/null +++ b/charts/taraxa-node/templates/service-registry-service.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + labels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} +spec: + type: ClusterIP + selector: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} + ports: + - name: http + port: 5000 + targetPort: 5000 \ No newline at end of file diff --git a/charts/taraxa-node/templates/service-registry-serviceaccount.yaml b/charts/taraxa-node/templates/service-registry-serviceaccount.yaml new file mode 100644 index 0000000000..5df64b315b --- /dev/null +++ b/charts/taraxa-node/templates/service-registry-serviceaccount.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + labels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} \ No newline at end of file diff --git a/charts/taraxa-node/templates/service-registry-statefulset.yaml b/charts/taraxa-node/templates/service-registry-statefulset.yaml new file mode 100644 index 0000000000..2e9d591e9a --- /dev/null +++ b/charts/taraxa-node/templates/service-registry-statefulset.yaml @@ -0,0 +1,62 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + annotations: + checksum/config: {{ include (print $.Template.BasePath "/service-registry-config.yaml") . | sha256sum }} + labels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} +spec: + replicas: 1 + serviceName: "{{ include "taraxa-node.fullname" . }}-service-registry" + selector: + matchLabels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} + template: + metadata: + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + annotations: + checksum/config: {{ include (print $.Template.BasePath "/service-registry-config.yaml") . | sha256sum }} + labels: + app: service-registry + app.kubernetes.io/name: {{ include "taraxa-node.name" . }} + helm.sh/chart: {{ include "taraxa-node.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + release: {{ .Release.Name }} + spec: + serviceAccountName: "{{ include "taraxa-node.fullname" . }}-service-registry" + containers: + - name: service-registry + image: "python:3.8" + imagePullPolicy: IfNotPresent + command: ["/bin/bash", "-c", "--"] + args: [ "cd /app; pip install -r ./requirements.txt; python app.py" ] + volumeMounts: + - name: requirements + mountPath: /app/requirements.txt + readOnly: true + subPath: requirements.txt + - name: app + mountPath: /app/app.py + readOnly: true + subPath: app.py + volumes: + - name: requirements + configMap: + defaultMode: 0700 + name: "{{ include "taraxa-node.fullname" . }}-service-registry" + - name: app + configMap: + defaultMode: 0700 + name: "{{ include "taraxa-node.fullname" . }}-service-registry" diff --git a/charts/taraxa-node/values.yaml b/charts/taraxa-node/values.yaml index 03d25fa51f..cfee9cc187 100644 --- a/charts/taraxa-node/values.yaml +++ b/charts/taraxa-node/values.yaml @@ -28,7 +28,6 @@ config: vrfs: - "590d5ff3d577ebca38c1f29e4798e8ce4ab9bd826ea7bccaba8c1d1bdaf5ff94ed07a2832b5a6077dd0147eae950d170ca8777dd3e8c9a01a035833fdc86ffcc" consensusnode: - explorerDelegationPrivateKey: "" keys: - "badf7196e18f653130564fd2f27419bff36194094057a69053bbe3a83a97b4fe" vrfs: @@ -41,6 +40,9 @@ config: addresses: - "31a472957604e93a77144b434162410f173f3962c950d7b8f9145a42254310db8244383d03f759159092232e8ef85f73806b0380a5e520e536158bb11037ec56" + delegationPrivateKey: "0x485239d3ebb537c0f40e0aa6c9996a8b988225616c83d1404398319b1523fc41" + faucetPrivateKey: "0x156f02048b31e2203ab87fc901e900b3f8cd942460c4c321532ad3dc27752718" + secrets: enabled: true @@ -199,25 +201,6 @@ consensusnode: resources: {} nodeSelector: {} - -explorer: - enabled: false - configEnvs: - rpcHttpProvider: "" - rpcWsProvider: "" - wsProvider: "" - faucetEnabled: false - domain: "default.example.com" - # Add wild certs for this - # wildCertDomainSecret: "" - faucet: - enabled: true - privKey: "" - dripInterval: 500 - sandbox: - enabled: true - nodeSelector: {} - test: image: repository: gcr.io/jovial-meridian-249123/python
Boot Node 1${PRNET_IPS[0]}