benchmark/kubernetes: add validator service chart
This commit is contained in:
parent
3b80f08354
commit
bc658251d0
|
@ -3,4 +3,5 @@
|
||||||
from subprocess import call
|
from subprocess import call
|
||||||
|
|
||||||
for v in range(0, 26, 1):
|
for v in range(0, 26, 1):
|
||||||
|
call(["helm" ,"delete", "--purge", "validator-svc-{}".format(v)])
|
||||||
call(["helm" ,"delete", "--purge", "validator-{}".format(v)])
|
call(["helm" ,"delete", "--purge", "validator-{}".format(v)])
|
||||||
|
|
|
@ -3,4 +3,5 @@
|
||||||
from subprocess import call
|
from subprocess import call
|
||||||
|
|
||||||
for v in range(0, 26, 1):
|
for v in range(0, 26, 1):
|
||||||
|
call(["helm" ,"install", "-n", "validator-svc-{}".format(v), "-f", "values.validator-{}.yaml".format(v), "validator-service"])
|
||||||
call(["helm" ,"install", "-n", "validator-{}".format(v), "-f", "values.validator-{}.yaml".format(v), "validator"])
|
call(["helm" ,"install", "-n", "validator-{}".format(v), "-f", "values.validator-{}.yaml".format(v), "validator"])
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
# 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
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
|
@ -0,0 +1,10 @@
|
||||||
|
name: validator-service
|
||||||
|
home: https://github.com/maichain/mchain_service
|
||||||
|
apiVersion: v1
|
||||||
|
description: A reference Helm chart for Ethereum validator
|
||||||
|
maintainers:
|
||||||
|
- name: Alan Chen
|
||||||
|
email: alan@am.is
|
||||||
|
version: 0.0.1
|
||||||
|
sources:
|
||||||
|
- https://github.com/maichain/mchain_service/kubernetes/amis/generic/validator
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 AMIS Technologies
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -0,0 +1,74 @@
|
||||||
|
# Validator Helm Chart
|
||||||
|
|
||||||
|
A validator is an Ethereum client to validate transactions and generate blocks.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
* [StatefulSets](https://kubernetes.io/docs/concepts/abstractions/controllers/statefulsets/) support
|
||||||
|
* Dynamically provisioned persistent volumes
|
||||||
|
|
||||||
|
## Installing the Chart
|
||||||
|
|
||||||
|
To install the chart:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm install \
|
||||||
|
--name ${DEPLOYMENT_ENVIRONMENT}-transactor-${NAME} \
|
||||||
|
kubernetes/amis/generic/validator
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The following tables lists the configurable parameters of the transactor chart and their default values.
|
||||||
|
|
||||||
|
| Parameter | Description | Default |
|
||||||
|
| ------------------------------- | ------------------------------------------------- | ---------------------------------------------------------- |
|
||||||
|
| `service.type` | The Kubernetes service type | `ClusterIP` |
|
||||||
|
| `service.externalPeerPort` | Exposed Ethereum P2P port | `30303` |
|
||||||
|
| `service.ExternalRPCPort` | Exposed Ethereum RPC port | `8545` |
|
||||||
|
| `service.ExternalWSPort` | Exposed Ethereum WebSocket port | `8546` |
|
||||||
|
| `replicaCount` | Kubernetes statefulset replicas | `1` |
|
||||||
|
| `image.repository` | Docker image repository | `ethereum/client-go` |
|
||||||
|
| `image.tag` | Docker image tag | `alpine` |
|
||||||
|
| `image.pullPolicy` | Docker image pulling policy | `Always` |
|
||||||
|
| `ethereum.identity` | Custom node name | `$POD_NAME` |
|
||||||
|
| `ethereum.port` | Network listening port | `30303` |
|
||||||
|
| `ethereum.networkID` | Network identifier | `12345` |
|
||||||
|
| `ethereum.cache` | Megabytes of memory allocated to internal caching | `512` |
|
||||||
|
| `ethereum.rpc.enabled` | Enable the HTTP-RPC server | `false` |
|
||||||
|
| `ethereum.rpc.addr` | HTTP-RPC server listening interface | `localhost` |
|
||||||
|
| `ethereum.rpc.port` | HTTP-RPC server listening port | `8545` |
|
||||||
|
| `ethereum.rpc.api` | API's offered over the HTTP-RPC interface | `"eth,net,web3,personal"` |
|
||||||
|
| `ethereum.rpc.corsdomain` | Comma separated list of domains from which to accept cross origin requests | `*` |
|
||||||
|
| `ethereum.ws.enabled` | Enable the WS-RPC server | `false` |
|
||||||
|
| `ethereum.ws.addr` | WS-RPC server listening interface | `localhost` |
|
||||||
|
| `ethereum.ws.port` | WS-RPC server listening port | `8546` |
|
||||||
|
| `ethereum.ws.api` | API's offered over the WS-RPC interface | `"eth,net,web3,personal"` |
|
||||||
|
| `ethereum.ws.origins` | Origins from which to accept websockets requests | `*` |
|
||||||
|
| `ethereum.mining.enabled` | Enable mining | `true` |
|
||||||
|
| `ethereum.mining.threads` | Number of CPU threads to use for mining | `2` |
|
||||||
|
| `ethereum.mining.etherbase` | Public address for block mining rewards | `"1a9afb711302c5f83b5902843d1c007a1a137632"` |
|
||||||
|
| `ethereum.ethstats.enabled` | Enable ethstats reporting | `true` |
|
||||||
|
| `ethereum.ethstats.addr` | Ethstats service address | `ws://eth-netstats` |
|
||||||
|
| `ethereum.ethstats.port` | Ethstats service port | `3000` |
|
||||||
|
| `ethereum.ethstats.secret` | Ethstats service websocket secret | `bb98a0b6442386d0cdf8a31b267892c1` |
|
||||||
|
| `ethereum.nodekey.hex` | P2P node key as hex | `aaaaaaaaaaaaaa5302ccdd5b6ffa092e148ba497e352c2824f366ec399072068` |
|
||||||
|
| `ethereum.account.address` | Account address assigned to the validator | `1a9afb711302c5f83b5902843d1c007a1a137632` |
|
||||||
|
| `ethereum.account.data` | Full account data file as JSON string | `{"address":"1a9afb711302c5f83b5902843d1c007a1a137632","Crypto":{"cipher":"aes-128-ctr","ciphertext":"132b50d7c8944a115824de7c00911c40a90f84f27c614b7a3ef05ee8fd414312","cipherparams":{"iv":"0f745599d1b3303988ce210fb82b8c7f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"bce940bac232b4a9c5a2d50e5be51fde5cecfa7da9d49d8f650f91167bebf0de"},"mac":"36d515070b797aec58a574a3e04ea109498ee7674b15d7f952322cda7dcb68e3"},"id":"5d212b4c-3dd0-4c52-a32f-e42bf1b41133","version":3}` |
|
||||||
|
| `volumes.chaindir.size` | The maximum size usage of Ethereum data directory | `10Gi` |
|
||||||
|
| `volumes.chaindir.storageClass` | The Kubernetes storage class of Ethereum data | `$NAMESPACE-chaindata` |
|
||||||
|
| `global.computingSpec` | The computing spec level of node to schedule | `low` |
|
||||||
|
| `global.nodeType` | The type of node to schedule | `generic` |
|
||||||
|
|
||||||
|
|
||||||
|
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||||
|
|
||||||
|
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm install \
|
||||||
|
--name ${DEPLOYMENT_ENVIRONMENT}-validator-${NAME} \
|
||||||
|
-f values.yaml \
|
||||||
|
kubernetes/amis/generic/validator
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Tip**: You can use the default [values.yaml](values.yaml)
|
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "name" -}}
|
||||||
|
{{- default .Chart.Name | trunc 60 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 60 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "fullname" -}}
|
||||||
|
{{- $name := .Values.nameOverride -}}
|
||||||
|
{{- printf "%s-%v" .Chart.Name $name | trunc 60 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Deployment environment
|
||||||
|
*/}}
|
||||||
|
{{- define "environment" -}}
|
||||||
|
{{- default .Release.Namespace -}}
|
||||||
|
{{- end -}}
|
|
@ -13,10 +13,6 @@ spec:
|
||||||
clusterIP: {{ .Values.service.staticIP | quote }}
|
clusterIP: {{ .Values.service.staticIP | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
ports:
|
ports:
|
||||||
- port: {{ .Values.service.externalPeerPort }}
|
|
||||||
targetPort: {{ .Values.ethereum.port }}
|
|
||||||
protocol: TCP
|
|
||||||
name: peer
|
|
||||||
{{- if .Values.ethereum.rpc.enabled }}
|
{{- if .Values.ethereum.rpc.enabled }}
|
||||||
- port: {{ .Values.service.externalRPCPort }}
|
- port: {{ .Values.service.externalRPCPort }}
|
||||||
targetPort: {{ .Values.ethereum.rpc.port }}
|
targetPort: {{ .Values.ethereum.rpc.port }}
|
||||||
|
@ -30,4 +26,4 @@ spec:
|
||||||
name: ws
|
name: ws
|
||||||
{{- end }}
|
{{- end }}
|
||||||
selector:
|
selector:
|
||||||
app: {{ template "fullname" . }}
|
app: {{ .Values.app }}
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Default values for validator-service.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
nameOverride:
|
||||||
|
|
||||||
|
# service.yaml
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
externalRPCPort: 8545
|
||||||
|
externalWSPort: 8546
|
||||||
|
|
||||||
|
ethereum:
|
||||||
|
rpc:
|
||||||
|
enabled: false
|
||||||
|
port: 8545
|
||||||
|
ws:
|
||||||
|
enabled: true
|
||||||
|
port: 8546
|
||||||
|
|
||||||
|
app: validator
|
Loading…
Reference in New Issue