stacks-blockchain is a layer-1 blockchain that connects to Bitcoin for security and enables decentralized apps and predictable smart contracts.
$ helm repo add blockstack https://charts.blockstack.xyz
$ helm install my-release blockstack/stacks-blockchain
This chart bootstraps a stacks-blockchain deployment on a Kubernetes cluster using the Helm package manager.
- Kubernetes 1.12+
- Helm 2.12+ or Helm 3.0-beta3+
To install the chart with the release name my-release
and run the node as a follower:
$ helm repo add blockstack https://charts.blockstack.xyz
$ helm install my-release blockstack/stacks-blockchain
To install the chart with the release name my-release
and run the node as a miner using your private key generated from the instructions on this page:
$ helm repo add blockstack https://charts.blockstack.xyz
$ helm install my-release blockstack/stacks-blockchain --set config.node.miner=true --set config.node.seed="REPLACE-WITH-YOUR-PRIVATE-KEY"
These commands deploy the Stacks Blockchain node on a Kubernetes cluster in the default configuration.
Tip: List all releases using
helm list
To uninstall/delete the my-release
deployment:
$ helm delete my-release
The command removes all the Kubernetes components associated with the chart and deletes the release.
The following tables lists the configurable parameters of the stacks-blockchain chart and their default values.
Parameter | Description | Default |
---|---|---|
nameOverride | String to partially override stacks-blockchain.fullname template (will maintain the release name) | nil |
fullnameOverride | String to fully override stacks-blockchain.fullname template | nil |
node.image.repository | stacks-blockchain container image repository | blockstack/stacks-blockchain |
node.image.pullPolicy | stacks-blockchain container image pull policy | IfNotPresent |
node.image.tag | stacks-blockchain container image tag | latest |
node.imagePullSecrets | Docker registry secret names as an array | [] |
node.replicaCount | Number of stacks-blockchain nodes to run | 1 |
node.rpcPort | Port used for RPC connections | 20443 |
node.p2pPort | Port used for P2P connections | 20444 |
node.labels | Labels to be added to the node Deployment | {} |
node.annotations | Annotations to be added to the node Deployment | {} |
node.podAnnotations | Annotations to be added to the node pod(s) | {} |
node.podAnnotationConfigChecksum | Add Config Checksum to pod Annotations. This will trigger Rolling Updates on configuration changes. |
false |
node.podSecurityContext | Security Context policies for the node pod(s) | {} |
node.securityContext | Security Context policies for the node container | {} |
node.debug | Set to true for verbose logging. Set to false for normal verbosity | false |
node.jsonLogging | Set to true to enable json logging. Set to false for normal logging | false |
node.command | Overriding this is typically not necessary, unless you wish to run the node in a different way | ["/bin/stacks-node"] |
node.args | Overriding this is typically not necessary, unless you wish to run the node in a different way | ["start", "--config", "/src/stacks-node/config.toml"] |
node.extraEnv | Extra environment variables to add to the node's container | [] |
node.resources | Specify resource limits and requests for the node's container | {} |
node.revisionHistoryLimit | Rollback limit | 10 |
node.updateStrategy | The update strategy to apply | {} |
node.minReadySeconds | minReadySeconds to avoid killing pods before it's ready | 0 |
node.nodeSelector | Node labels for node pod assignment | {} |
node.tolerations | Node tolerations for server scheduling to nodes with taints | {} |
node.affinity | Affinity and anti-affinity | {} |
node.terminationGracePeriodSeconds | Total time it takes for the Container to stop normally | 60 |
node.volumes | Additional volumes for the node | [] |
node.volumeMounts | Additional volumeMounts for the node | [] |
node.extraContainers | Additional containers to run alongside the node. Useful if adding a sidecar | [] |
node.initContainers | Containers which are run before the node container is started | [] |
config | More configs can be added than what's shown below.All children fields under the node, burnchain, and ustx_balance fields will be converted from YAML to valid TOML format in the Configmap. For info on more available config fields, please reference to our example config files located here. |
|
config.node.rpc_bind | 0.0.0.0:20443 | |
config.node.p2p_bind | 0.0.0.0:20444 | |
config.node.seed | Replace with your private key if deploying a miner node | nil |
config.node.miner | Set this to true if deploying a miner node.Set this to false if deploying a follower node. |
false |
config.burnchain.chain | bitcoin | |
config.burnchain.mode | krypton | |
config.burnchain.peer_host | bitcoin.mainnet.stacks.org | |
config.burnchain.rpc_port | 18443 | |
config.burnchain.peer_port | 18444 | |
config.ustx_balance | See values.yaml | |
config.raw | Uncommenting this block will give you greater control over the settings in the Configmap | nil |
config.annotations | Annotations to be added to the Configmap | {} |
service.type | The service type to create. If creating a public node for others to connect to, use Loadbalancer to ensure the advertised IP is reachable. |
ClusterIP |
service.externalTrafficPolicy | Set external traffic policy to "Local" to preserve source IP on providers supporting it. This field is only used when service.type is set to "NodePort" or "LoadBalancer". Setting to "Local" can help the Stacks network if using service type NodePort or LoadBalancer. |
Local |
service.rpcPort | Will use node.rpcPort if omitted | nil |
service.p2pPort | Will use node.p2pPort if omitted | nil |
service.annotations | Annotations to be added to the Service | {} |
serviceAccount.create | Specifies whether a ServiceAccount should be created. If true, the stacks-blockchain node will be ran using this ServiceAccount. |
true |
serviceAccount.annotations | Annotations to add to the service account | {} |
serviceAccount.name | The name of the service account to use. If not set and create is true, a name is generated using the fullname template. |
nil |
rbac.create | Specifies whether a Role should be created | false |
rbac.rules | Rules to add to the Role resource bound to the ServiceAccount | [] |
metrics.enabled | Specifies whether a ServiceMonitor should be created | false |
metrics.port | Port used by the ServiceMonitor to collect metrics from the node | 9153 |
metrics.interval | Interval at which metrics should be collected | 30s |
Specify each parameter using the --set key=value[,key=value]
argument to helm install
. For example,
$ helm install my-release \
--set node.image.pullPolicy=Always \
blockstack/stacks-blockchain
The above command sets the node.image.pullPolicy
to Always
.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
$ helm install my-release -f values.yaml blockstack/stacks-blockchain
Tip: You can use the default values.yaml
If you encounter an issue with this Helm chart, please submit an issue to this Github repo here.