-
Notifications
You must be signed in to change notification settings - Fork 23
/
cosmos_v1_cosmosfullnode_full.yaml
169 lines (159 loc) · 5.97 KB
/
cosmos_v1_cosmosfullnode_full.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
####
# This is a full example with all options. Typically, use cosmos_v1_cosmosfullnode.yaml as a starting place.
###
apiVersion: cosmos.strange.love/v1
kind: CosmosFullNode
metadata:
# Name should be the chain name and network environment.
name: cosmoshub-mainnet
spec:
replicas: 2
# Blockchain specific config
chain:
network: mainnet
chainID: cosmoshub-4
binary: gaiad
homeDir: .gaia # optional, defaults to "cosmos"
skipInvariants: true
genesisURL: "https://github.com/cosmos/mainnet/raw/master/genesis.cosmoshub-4.json.gz"
genesisScript: "arbitrary script to download genesis file. e.g. curl https://url-to-genesis.com | jq '.genesis' > $GENESIS_FILE"
# Get latest snapshot at: https://www.polkachu.com/tendermint_snapshots/cosmos
snapshotURL: "https://snapshots1.polkachu.com/snapshots/cosmos/cosmos_11701512.tar.lz4"
snapshotScript: "arbitrary script to download snapshot from internet"
logLevel: debug
logFormat: json
# CometBFT config (translates to config.toml)
config:
peers: "[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
seeds: "[email protected]:26656,bf8328b66dceb4987e5cd94430af66045e59899f@public-seed.cosmos.vitwit.com:26656,[email protected]:26656"
unconditionalPeerIDs: "ee27245d88c632a556cf72cc7f3587380c09b469,538ebe0086f0f5e9ca922dae0462cc87e22f0a50"
privatePeerIDs: "ee27245d88c632a556cf72cc7f3587380c09b469,538ebe0086f0f5e9ca922dae0462cc87e22f0a50"
maxInboundPeers: 10
maxOutboundPeers: 10
corsAllowedOrigins: ["*"]
overrides: |-
# Set config.toml overrides here. Such as:
[tx_index]
indexer = "null"
# Cosmos SDK config (translates to app.toml)
app:
minGasPrice: "0.0025uatom"
apiEnableUnsafeCORS: true
grpcWebEnableUnsafeCORS: true
# No need to set pruning in toml, set it here instead:
pruning:
strategy: "custom"
interval: 17
keepEvery: 1000
keepRecent: 5000
minRetainBlocks: 10000
haltHeight: 12345678
overrides: |-
# Set app.toml overrides here. Such as:
[rosetta]
enable = true
# Rolling deployment strategy
strategy:
# Can be an int like 1 or a percentage.
maxUnavailable: 50%
# Configure pods
podTemplate:
# Required
image: "ghcr.io/strangelove-ventures/heighliner/gaia"
resources:
requests:
cpu: "0.5"
limits:
cpu: "1"
# Optional
metadata:
labels:
extra: labels
annotations:
extra: annotations
imagePullPolicy: "Always"
imagePullSecrets:
- name: name-of-kube-secret
nodeSelector:
nodeLabel: value
# Lots of options for pod affinity. Generally not necessary if resources specified appropriately. See: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#an-example-of-a-pod-that-uses-pod-affinity
affinity: {}
# See https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
tolerations: []
priorityClassName: name-of-priority-class
priority: 1000
probes:
# Disable all probes.
strategy: None
# The following fields are strategically merged into the default pod spec.
# Use only in extreme circumstances. Serves as an "escape hatch" in case a chain does not adhere to standards.
initContainers: []
containers: []
volumes: []
# Configures kube services created by the operator.
service:
# Creates N LoadBalancer services and exposes those public IPs in p2p.
maxP2PExternalAddresses: 1
# Configures all p2p services that need external addresses.
p2pTemplate:
metadata:
labels:
extra: labels
annotations:
extra: annotations
type: NodePort
# Configures the main service that load balances all RPC ports. Custom configuration likely necessary for Ingress.
rpcTemplate:
metadata:
labels:
extra: labels
annotations:
extra: annotations
type: NodePort
externalTrafficPolicy: Local
# Retain or Delete. If Retain, PVCs are not deleted as replicas change.
volumeRetentionPolicy: "Retain"
# Configure PVCs for each pod
volumeClaimTemplate:
# Required
storageClassName: "standard-rwo"
resources:
requests:
storage: 100Gi
# Useful for restoring from VolumeSnapshot. Can also restore from PVC but new pod must be in same region.
dataSource:
apiGroup: snapshot.storage.k8s.io
kind: VolumeSnapshot
name: "name-of-volume-snapshot"
# Discover and use data sources dynamically.
autoDataSource:
# Choose the most recent VolumeSnapshot matching selector.
volumeSnapshotSelector:
label: value
# Optional
metadata:
labels:
extra: labels
annotations:
extra: annotations
accessModes: ["ReadWriteMany"]
volumeMode: "Block"
# Optional self-healing strategies.
selfHeal:
# Reboot pods that fall to far behind and still report as in-sync.
heightDriftMitigation:
threshold: 10
# Automatically expand PVCs that are running out of space.
pvcAutoScale:
increaseQuantity: 10%
maxSize: 5Ti
usedSpacePercentage: 90
# Allow overriding single instances which is a pod + pvc combination.
instanceOverrides:
# Key is the name of the instance which is the name of the pod.
cosmoshub-1:
# If 'All', operator will not manage pod or pvc. If 'Pod', operator will not manage pod but continue to manage pvc.
disable: "All|Pod"
# This is the same as the top-level volumeClaimTemplate. However, this template only applies to this single instance.
# Allows you to restore or tweak a PVC that has been corrupted.
volumeClaimTemplate: {}