Back to Charts

⚠️ Repo Archive Notice

stable/stellar-core/README.md

latest11.7 KB
Original Source

⚠️ Repo Archive Notice

As of Nov 13, 2020, charts in this repo will no longer be updated. For more information, see the Helm Charts Deprecation and Archive Notice, and Update.

⚠️ Chart Deprecated

Stellar Core

Stellar is an open-source and distributed payments infrastructure. Stellar Core is the software that powers the backbone of the Stellar network and validates and agrees on transactions. For more information see the Stellar network overview.

Introduction

This chart bootstraps a Stellar Core deployment on a Kubernetes cluster using the Helm package manager. By default the deployment includes a PostgreSQL database. The chart is based on the Kubernetes-ready Stellar Core images provided by SatoshiPay.

Prerequisites

  • You need a node seed to run Stellar Core. If you don't have one you can generate one with the following command:
    bash
    $ docker run --rm -it --entrypoint '' satoshipay/stellar-core stellar-core --genseed
    
    The output will look like
    Secret seed: SDUFQA7YL3KTWZNKOXX7XXIYU4R5R6JKELMREKHDQOYY2WPUGXFVJN52
    Public: GDJFYQK2VFVMQAOFSBM7RVE4I5HCUT7VNWOKSJKGI5JEODIH6F3EM6YX
    
    The node seed must be kept secret but the public key can (and should) be shared with other Stellar node operators.
  • Kubernetes 1.8+ with Beta APIs enabled
  • PV provisioner support in the underlying infrastructure (Only when persisting data)

Installing the Chart

To install the chart with the release name my-release:

bash
$ helm install --name my-release stable/stellar-core

🚨 Warning: Make sure to use your own node seed, either via setting nodeSeed or existingNodeSeedSecret. See prerequisites for how to generate a new node seed.

Configuration

The following table lists the configurable parameters of the Stellar Core chart and their default values.

ParameterDescriptionDefault
nodeSeedStellar Core node seed (if existingNodeSeedSecret is not set)Not set
existingNodeSeedSecretExisting secret with the node seed (if nodeSeed is not set)Not set
existingNodeSeedSecret.nameSecret containing the node seedNot set
existingNodeSeedSecret.keyKey of the node seed in the secretNot set
nodeIsValidatorShould the node participate in SCP? Otherwise it is only observingtrue
networkPassphraseThe network this instance should talk toPublic Global Stellar Network ; September 2015
catchupRecentNumber of ledgers to catch up (0 means minimal catchup)0
maxPeerConnectionsMaximum number of connections to other peers50
knownPeersList of hostnames/IPs and ports of peers to connect to initiallyDefault peers, see values.yaml
preferredPeersList of hostnames/IPs and ports of peers to stay connected toDefault peers, see values.yaml
nodeNamesList of node public keys and node namesDefault node names, see values.yaml
nodeNames[].publicKeyPublic key of a nodeSee above
nodeNames[].nameName of a nodeSee above
quorumSetList of quorum set definitionsDefault quorum set, see values.yaml
quorumSet.thresholdPercentThreshold in percent for the quorum setSee above
quorumSet.validatorsList of node names (prefixed with $$) or public keys in this setSee above
quorumSet.pathPath for sub-quorum-setsSee above
historyDefinition for fetching and storing the history of the networkDefault history, see values.yaml
history.$name.getCommand for fetching from the history archiveSee above
history.$name.putCommand for storing the history in an archiveSee above
initializeHistoryArchivesSet to true if you want history archives to be initializedfalse
gcloudServiceAccountKeyGcloud service account key for gcloud flavorNot set
environmentAdditional environment variables for Stellar Core{}
postgresql.enabledEnable PostgreSQL databasetrue
postgresql.postgresDatabasePostgreSQL database namestellar-core
postgresql.postgresUserPostgreSQL usernamepostgres
postgresql.postgresPasswordPostgreSQL passwordRandom password (see PostgreSQL chart)
postgresql.persistencePostgreSQL persistence optionsSee PostgreSQL chart
postgresql.*Any PostgreSQL optionSee PostgreSQL chart
existingDatabaseProvide existing database (used if postgresql.enabled is false)
existingDatabase.passwordSecretExisting secret with the database password{name: 'postgresql-core', value: 'password'}
existingDatabase.urlExisting database URL (use $(DATABASE_PASSWORD as the password)Not set
image.repositorystellar-core image repositorysatoshipay/stellar-core
image.tagstellar-core image tag10.0.0-2
image.flavorstellar-core flavor (e.g., aws or gcloud)Not set
image.pullPolicyImage pull policyIfNotPresent
peerService.typep2p service typeLoadBalancer
peerService.portp2p service TCP port11625
peerService.loadBalancerIPp2p service load balancer IPNot set
peerService.externalTrafficPolicyp2p service traffic policyNot set
httpService.typeNon-public HTTP admin endpoint service typeClusterIP
httpService.portNon-public HTTP admin endpoint TCP port11626
persistence.enabledUse a PVC to persist datatrue
persistence.existingClaimProvide an existing PersistentVolumeClaimNot set
persistence.storageClassStorage class of backing PVCNot set (uses alpha storage class annotation)
persistence.accessModeUse volume as ReadOnly or ReadWriteReadWriteOnce
persistence.annotationsPersistent Volume annotations{}
persistence.sizeSize of data volume8Gi
persistence.subPathSubdirectory of the volume to mount atstellar-core
persistence.mountPathMount path of data volume/data
resourcesCPU/Memory resource requests/limitsRequests: 512Mi memory, 100m CPU
nodeSelectorNode labels for pod assignment{}
tolerationsToleration labels for pod assignment[]
affinityAffinity settings for pod assignment{}
serviceAccount.createSpecifies whether a ServiceAccount should be createdtrue
serviceAccount.nameThe name of the ServiceAccount to createGenerated using the fullname template

Persistence

Both Stellar Core and PostgreSQL (if postgresql.enabled is true) need to store data and thus this chart creates Persistent Volumes by default. Make sure to size them properly for your needs and use an appropriate storage class, e.g. SSDs.

You can also use existing claims with the persistence.existingClaim and postgresql.persistence.existingClaim options.