Ethereum 2.0

We've extended Kubernetes with BeaconNode and Validator custom resources which can be used to deploy Ethereum 2.0 beacon nodes and validator clients from the given spec.
Kotal seperates between beacon node and validator client by using different API resources BeaconNode and Validator. So you can't run a beacon node and validator client in the same process/container.

Beacon Node

BeaconNode is Ethereum 2.0 beacon node -optionally- connecting to Ethereum 1 endpoint and syncing the beacon chain.
Here's an example of ConsenSys Teku beacon node BeaconNode syncing mainnet beacon chain, connecting to Ethereum 1 JSON RPC endpoint, enabling REST API server which is listening at port 8888:
kind: BeaconNode
name: teku-beacon-node
network: mainnet
client: teku
rest: true
restPort: 8888
- http://besu-mainnet-node:8545
For all the fields associated with the BeaconNode API resource:
kubectl explain beaconnode --api-version
kubectl explain beaconnode.spec --api-version
Full beacon node reference is documented here.

Validator Client

Validator is Ethereum 2.0 validator client connecting to beacon node endpoint and validating blocks using the loaded keystores.
Here's an example of ConsenSys Teku validator client connecting to beacon node endpoint, validating pyrmont blocks using 1 loaded validator keystore from its secret:
kind: Validator
name: teku-validator
network: pyrmont
client: teku
- http://teku-beacon-node:8888
graffiti: Validated by Kotal
- secretName: my-validator
For all the fields associated with the Validator API resource:
kubectl explain validator --api-version
kubectl explain validator.spec --api-version
kubectl explain validator.spec.keystores --api-version
Full validator client reference is documented here.

Multi-client Support

Kotal supports the following Ethereum 2.0 beacon node and validator clients:
Setting validator or beacon node client is as simple as changing the spec.client to the desired client.