mirror of
https://github.com/autistic-symposium/mev-toolkit.git
synced 2025-05-03 15:24:52 -04:00
add scripts, genesis file, k8s deployment scaffold
This commit is contained in:
parent
cbfceeb5d4
commit
8e422b2e5d
9 changed files with 311 additions and 0 deletions
12
geth_and_k8s/k8s/certificate.yaml
Normal file
12
geth_and_k8s/k8s/certificate.yaml
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
apiVersion:
|
||||
kind: Certificate
|
||||
metadata:
|
||||
labels:
|
||||
env: staging
|
||||
app:
|
||||
runtime-component: web
|
||||
spec:
|
||||
dnsNames:
|
||||
-
|
||||
secretName:
|
114
geth_and_k8s/k8s/deployment.yaml
Normal file
114
geth_and_k8s/k8s/deployment.yaml
Normal file
|
@ -0,0 +1,114 @@
|
|||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
name: web
|
||||
env: staging
|
||||
app:
|
||||
runtime-component: web
|
||||
annotations:
|
||||
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
name: web
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: web
|
||||
env: staging
|
||||
app:
|
||||
annotations:
|
||||
seccomp.security.alpha.kubernetes.io/pod: runtime/default
|
||||
spec:
|
||||
automountServiceAccountToken: true
|
||||
containers:
|
||||
- name: web
|
||||
image:
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8545
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: application-state
|
||||
env:
|
||||
- name: SHOULD_INITIALIZE
|
||||
value: "YES"
|
||||
- name: ENABLING_MINING
|
||||
value: "YES"
|
||||
- name: ENV
|
||||
value: staging
|
||||
- name: APP_ENV
|
||||
value: staging
|
||||
- name: NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
- name: NODE_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: status.hostIP
|
||||
- name: TRACE_PROXY_ADDR
|
||||
value: http://$(NODE_IP):8096/
|
||||
- name: STATSD_ADDR
|
||||
value: 127.0.0.1:8125
|
||||
- name: STATSD_IMPLEMENTATION
|
||||
value: datadog
|
||||
- name: IDENTITY_CLIENT_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: identity-config
|
||||
key: clientId
|
||||
optional: true
|
||||
- name: IDENTITY_CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: identity-config
|
||||
key: clientSecret
|
||||
optional: true
|
||||
resources:
|
||||
limits:
|
||||
cpu: 2000m
|
||||
memory: 1Gi
|
||||
requests:
|
||||
cpu: 1500m
|
||||
memory: 512Mi
|
||||
volumeMounts:
|
||||
- name: ejson-keys
|
||||
readOnly: true
|
||||
mountPath: /key
|
||||
- name: data
|
||||
mountPath: /data
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
port: 8545
|
||||
httpHeaders:
|
||||
- name: X-Forwarded-Proto
|
||||
value: https
|
||||
path: /
|
||||
initialDelaySeconds: 20
|
||||
timeoutSeconds: 3
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
add:
|
||||
- CHOWN
|
||||
- DAC_OVERRIDE
|
||||
- KILL
|
||||
- SETGID
|
||||
- SETUID
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
volumes:
|
||||
- name: ejson-keys
|
||||
secret:
|
||||
secretName: ejson-keys
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: web
|
||||
strategy:
|
||||
type: Recreate
|
||||
progressDeadlineSeconds: 120
|
24
geth_and_k8s/k8s/ingress.yaml
Normal file
24
geth_and_k8s/k8s/ingress.yaml
Normal file
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
labels:
|
||||
name: web
|
||||
env: staging
|
||||
app:
|
||||
runtime-component: web
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
kubernetes.io/tls-acme: "false"
|
||||
spec:
|
||||
rules:
|
||||
- host:
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: web
|
||||
servicePort: 80
|
||||
tls:
|
||||
- hosts:
|
||||
-
|
||||
secretName:
|
20
geth_and_k8s/k8s/manifest.yaml
Normal file
20
geth_and_k8s/k8s/manifest.yaml
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
kind: RuntimeManifest
|
||||
apiVersion:
|
||||
metadata:
|
||||
name:
|
||||
runtimeInfo:
|
||||
appName:
|
||||
env: staging
|
||||
appImage:
|
||||
domains:
|
||||
-
|
||||
defaultBaseSource:
|
||||
components:
|
||||
- name: web
|
||||
baseSource:
|
||||
resources:
|
||||
- base: deployment.yaml
|
||||
- base: service.yaml
|
||||
- base: certificate.yaml
|
||||
- base: ingress.yaml
|
18
geth_and_k8s/k8s/service.yaml
Normal file
18
geth_and_k8s/k8s/service.yaml
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
name: web
|
||||
env: staging
|
||||
app:
|
||||
runtime-component: web
|
||||
spec:
|
||||
selector:
|
||||
name: web
|
||||
env: staging
|
||||
app:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: 8545
|
17
geth_and_k8s/scripts/create_docker.sh
Executable file
17
geth_and_k8s/scripts/create_docker.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
PORT=${PORT:-18545}
|
||||
|
||||
echo "Building local blockchain container"
|
||||
|
||||
docker build -t <docker container alias> .
|
||||
|
||||
echo "Starting blockchain network on port $PORT (use rpc URL http://localhost:$PORT)"
|
||||
|
||||
docker run -it --rm \
|
||||
-v $(pwd)/genesis.json:/genesis.json \
|
||||
-v $(pwd)/data:/data \
|
||||
-p $PORT:8545 \
|
||||
<docker container alias>
|
69
geth_and_k8s/scripts/entrypoint.sh
Normal file
69
geth_and_k8s/scripts/entrypoint.sh
Normal file
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
GETH_DATADIR=${GETH_DATADIR:-"/data"}
|
||||
|
||||
geth_init() {
|
||||
ls -al "$GETH_DATADIR"
|
||||
|
||||
if [[ -d "$GETH_DATADIR/keystore" ]]; then
|
||||
echo "Chain already initialized"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Initializing using Genesis"
|
||||
geth init --datadir "$GETH_DATADIR" /genesis.json
|
||||
}
|
||||
|
||||
geth_custom_start() {
|
||||
echo "Starting node with custom arguments $@"
|
||||
exec geth $@
|
||||
}
|
||||
|
||||
geth_normal_start() {
|
||||
echo "Starting node"
|
||||
local identity=${GETH_IDENTITY:-"<docker container alias>"}
|
||||
local http_corsdomain=${GETH_HTTP_CORSDOMAIN:-"http://localhost:3000"}
|
||||
local http_vhosts=${GETH_HTTP_VHOSTS:-"localhost"}
|
||||
local networkid=${GETH_NETWORKID:-"137"}
|
||||
local enable_mining=${ENABLING_MINING:-"YES"}
|
||||
|
||||
local mining_args=""
|
||||
if [[ "$enable_mining" == "YES" ]]; then
|
||||
local miner_etherbase=${GETH_MINER_ETHERBASE:-"<add etherbase>"}
|
||||
local miner_threads=${GETH_MINER_THREADS:-1}
|
||||
mining_args="$mining_args --mine"
|
||||
mining_args="$mining_args --miner.threads $miner_threads"
|
||||
mining_args="$mining_args --miner.etherbase $miner_etherbase"
|
||||
fi
|
||||
|
||||
exec geth \
|
||||
--identity "$identity" \
|
||||
--nodiscover \
|
||||
--http \
|
||||
--http.addr 0.0.0.0 \
|
||||
--http.corsdomain "$http_corsdomain" \
|
||||
--http.vhosts "$http_vhosts" \
|
||||
--networkid "$networkid" \
|
||||
--datadir "$GETH_DATADIR" \
|
||||
$mining_args \
|
||||
"$@"
|
||||
}
|
||||
|
||||
main() {
|
||||
local should_initialize=${SHOULD_INITIALIZE:-"YES"}
|
||||
local custom_start=${CUSTOM_START:-"NO"}
|
||||
|
||||
if [[ "$should_initialize" == "YES" ]]; then
|
||||
geth_init
|
||||
fi
|
||||
|
||||
if [[ "$custom_start" == "YES" ]]; then
|
||||
geth_custom_start "$@"
|
||||
else
|
||||
geth_normal_start "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
8
geth_and_k8s/scripts/genesis.dockerfile
Normal file
8
geth_and_k8s/scripts/genesis.dockerfile
Normal file
|
@ -0,0 +1,8 @@
|
|||
FROM ethereum/client-go:stable
|
||||
|
||||
RUN apk add --no-cache bash
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
COPY genesis.json /genesis.json
|
||||
|
||||
ENTRYPOINT /entrypoint.sh
|
29
geth_and_k8s/scripts/genesis.json
Normal file
29
geth_and_k8s/scripts/genesis.json
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"config": {
|
||||
"chainId": 137,
|
||||
"homesteadBlock": 0,
|
||||
"eip150Block": 0,
|
||||
"eip155Block": 0,
|
||||
"eip158Block": 0,
|
||||
"byzantiumBlock": 0,
|
||||
"constantinopleBlock": 0,
|
||||
"petersburgBlock": 0
|
||||
},
|
||||
"difficulty": "0x400",
|
||||
"gasLimit":"0x2100000",
|
||||
"nonce": "0x000000000fab0042",
|
||||
"alloc": {
|
||||
"3282791d6fd713f1e94f4bfd565eaa78b3a0599d": {
|
||||
"balance": "1337000000000000000000"
|
||||
},
|
||||
"64D2ea7000e831E03e6B930AC348fD90D4ACE2B8": {
|
||||
"balance": "1337000000000000000000"
|
||||
},
|
||||
"2ee8D80de1c389f1254e94bc44D2d1Bc391eD402": {
|
||||
"balance": "1337000000000000000000"
|
||||
},
|
||||
"Ac03BB73b6a9e108530AFf4Df5077c2B3D481e5A": {
|
||||
"balance": "1337000000000000000000"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue