Files
nchain/config/crd/bases/nchain.hanzo.ai_nodeclusters.yaml

1189 lines
53 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.18.0
name: nodeclusters.nchain.hanzo.ai
spec:
group: nchain.hanzo.ai
names:
kind: NodeCluster
listKind: NodeClusterList
plural: nodeclusters
shortNames:
- nc
singular: nodecluster
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.protocol
name: Protocol
type: string
- jsonPath: .spec.role
name: Role
type: string
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.readyReplicas
name: Ready
type: integer
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
NodeCluster is the Schema for the nodeclusters API.
It manages a set of blockchain nodes (validators, full nodes, archive nodes, etc.)
for any supported protocol.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: NodeClusterSpec defines the desired state of a blockchain
node cluster.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional annotations applied to all
managed resources.
type: object
api:
description: API/RPC configuration.
properties:
adminEnabled:
description: AdminEnabled exposes the admin RPC namespace.
type: boolean
allowedHosts:
description: AllowedHosts restricts which hosts can connect to
the API.
items:
type: string
type: array
indexEnabled:
description: IndexEnabled enables on-node transaction indexing.
type: boolean
metricsEnabled:
default: true
description: MetricsEnabled exposes the metrics endpoint.
type: boolean
type: object
chains:
description: Chains lists the blockchain networks this cluster tracks.
items:
description: ChainRef references a blockchain tracked by a NodeCluster.
properties:
alias:
description: Alias is a human-readable alias for the chain.
type: string
blockchainID:
description: BlockchainID is the chain's unique identifier.
type: string
trackingID:
description: TrackingID is an operator-internal tracking identifier.
type: string
required:
- blockchainID
type: object
type: array
consensus:
description: Consensus configuration (protocol-specific).
properties:
algorithm:
description: Algorithm selects the consensus mechanism.
enum:
- snow
- tendermint
- nakamoto
- generic
type: string
params:
additionalProperties:
x-kubernetes-preserve-unknown-fields: true
description: |-
Params are consensus-specific parameters (e.g., snow sample size, block time).
Keys and values are protocol-specific and passed through to the driver.
type: object
required:
- algorithm
type: object
env:
description: Env is a list of additional environment variables for
the node container.
items:
description: EnvVar represents an environment variable present in
a Container.
properties:
name:
description: |-
Name of the environment variable.
May consist of any printable ASCII characters except '='.
type: string
value:
description: |-
Variable references $(VAR_NAME) are expanded
using the previously defined environment variables in the container and
any service environment variables. If a variable cannot be resolved,
the reference in the input string will be unchanged. Double $$ are reduced
to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
"$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
Escaped references will never be expanded, regardless of whether the variable
exists or not.
Defaults to "".
type: string
valueFrom:
description: Source for the environment variable's value. Cannot
be used if value is not empty.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the ConfigMap or its key
must be defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
fieldRef:
description: |-
Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
properties:
apiVersion:
description: Version of the schema the FieldPath is
written in terms of, defaults to "v1".
type: string
fieldPath:
description: Path of the field to select in the specified
API version.
type: string
required:
- fieldPath
type: object
x-kubernetes-map-type: atomic
fileKeyRef:
description: |-
FileKeyRef selects a key of the env file.
Requires the EnvFiles feature gate to be enabled.
properties:
key:
description: |-
The key within the env file. An invalid key will prevent the pod from starting.
The keys defined within a source may consist of any printable ASCII characters except '='.
During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
type: string
optional:
default: false
description: |-
Specify whether the file or its key must be defined. If the file or key
does not exist, then the env var is not published.
If optional is set to true and the specified key does not exist,
the environment variable will not be set in the Pod's containers.
If optional is set to false and the specified key does not exist,
an error will be returned during Pod creation.
type: boolean
path:
description: |-
The path within the volume from which to select the file.
Must be relative and may not contain the '..' path or start with '..'.
type: string
volumeName:
description: The name of the volume mount containing
the env file.
type: string
required:
- key
- path
- volumeName
type: object
x-kubernetes-map-type: atomic
resourceFieldRef:
description: |-
Selects a resource of the container: only resources limits and requests
(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
properties:
containerName:
description: 'Container name: required for volumes,
optional for env vars'
type: string
divisor:
anyOf:
- type: integer
- type: string
description: Specifies the output format of the exposed
resources, defaults to "1"
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
resource:
description: 'Required: resource to select'
type: string
required:
- resource
type: object
x-kubernetes-map-type: atomic
secretKeyRef:
description: Selects a key of a secret in the pod's namespace
properties:
key:
description: The key of the secret to select from. Must
be a valid secret key.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key must
be defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
type: object
required:
- name
type: object
type: array
envFrom:
description: EnvFrom is a list of sources for environment variables.
items:
description: EnvFromSource represents the source of a set of ConfigMaps
or Secrets
properties:
configMapRef:
description: The ConfigMap to select from
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the ConfigMap must be defined
type: boolean
type: object
x-kubernetes-map-type: atomic
prefix:
description: |-
Optional text to prepend to the name of each environment variable.
May consist of any printable ASCII characters except '='.
type: string
secretRef:
description: The Secret to select from
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret must be defined
type: boolean
type: object
x-kubernetes-map-type: atomic
type: object
type: array
healthPolicy:
description: HealthPolicy configures degraded detection.
properties:
checkIntervalSeconds:
default: 30
description: CheckIntervalSeconds is how often the health check
runs.
format: int32
minimum: 5
type: integer
gracePeriodSeconds:
default: 300
description: GracePeriodSeconds is the time to wait after startup
before enforcing health checks.
format: int32
minimum: 0
type: integer
maxHeightSkew:
default: 100
description: MaxHeightSkew is the maximum allowed block height
difference from the best known height.
format: int64
minimum: 0
type: integer
minInbound:
default: 1
description: MinInbound is the minimum number of inbound peers
before marking degraded.
format: int32
minimum: 0
type: integer
requireInboundPeers:
default: true
description: RequireInboundPeers marks the node degraded if it
has no inbound peers.
type: boolean
type: object
image:
description: Image for the node container.
properties:
pullPolicy:
default: IfNotPresent
description: PullPolicy defines when to pull the image.
enum:
- Always
- IfNotPresent
- Never
type: string
repository:
description: Repository is the container image repository.
type: string
tag:
default: latest
description: Tag is the container image tag.
type: string
required:
- repository
type: object
imagePullSecrets:
description: ImagePullSecrets lists references to secrets for pulling
container images.
items:
type: string
type: array
init:
description: Init configures init containers for setup and plugins.
properties:
clearData:
description: ClearData removes existing chain data before starting.
type: boolean
image:
description: Image is the init container image.
properties:
pullPolicy:
default: IfNotPresent
description: PullPolicy defines when to pull the image.
enum:
- Always
- IfNotPresent
- Never
type: string
repository:
description: Repository is the container image repository.
type: string
tag:
default: latest
description: Tag is the container image tag.
type: string
required:
- repository
type: object
plugins:
description: Plugins lists plugins to download and install.
items:
description: PluginSpec defines a plugin to install via init
container.
properties:
destPath:
default: /plugins
description: DestPath is where to place the plugin binary
inside the container.
type: string
name:
description: Name is the plugin file name.
type: string
url:
description: URL is the download URL for the plugin binary.
type: string
required:
- name
- url
type: object
type: array
required:
- image
type: object
keys:
description: Keys configures cryptographic key management.
properties:
kms:
description: KMS configures fetching keys from Hanzo KMS.
properties:
credentialsRef:
description: CredentialsRef references a Kubernetes Secret
containing KMS credentials.
properties:
name:
description: name is unique within a namespace to reference
a secret resource.
type: string
namespace:
description: namespace defines the space within which
the secret name must be unique.
type: string
type: object
x-kubernetes-map-type: atomic
envSlug:
description: EnvSlug identifies the KMS environment.
type: string
hostAPI:
default: https://kms.hanzo.ai/api
description: HostAPI is the KMS API endpoint.
type: string
projectSlug:
description: ProjectSlug identifies the KMS project.
type: string
resyncInterval:
default: 60
description: ResyncInterval is the interval in seconds between
KMS secret re-syncs.
format: int32
minimum: 10
type: integer
secretsPath:
description: SecretsPath is the path within the KMS project.
type: string
required:
- credentialsRef
- envSlug
- projectSlug
- secretsPath
type: object
secretName:
description: SecretName references a Kubernetes Secret containing
node keys.
type: string
type: object
kmsSecrets:
description: KMSSecrets lists KMS secret references to sync into Kubernetes
Secrets.
items:
description: KMSSecretRef generates a KMSSecret CR to sync secrets
from Hanzo KMS into a Kubernetes Secret.
properties:
credentialsRef:
description: CredentialsRef references a Kubernetes Secret containing
KMS credentials.
properties:
name:
description: name is unique within a namespace to reference
a secret resource.
type: string
namespace:
description: namespace defines the space within which the
secret name must be unique.
type: string
type: object
x-kubernetes-map-type: atomic
envSlug:
description: EnvSlug identifies the KMS environment.
type: string
hostAPI:
default: https://kms.hanzo.ai/api
description: HostAPI is the KMS API endpoint.
type: string
managedSecretName:
description: ManagedSecretName is the name of the Kubernetes
Secret to create/update.
type: string
projectSlug:
description: ProjectSlug identifies the KMS project.
type: string
resyncInterval:
default: 60
description: ResyncInterval is the interval in seconds between
KMS secret re-syncs.
format: int32
minimum: 10
type: integer
secretsPath:
description: SecretsPath is the path within the KMS project.
type: string
required:
- credentialsRef
- envSlug
- managedSecretName
- projectSlug
- secretsPath
type: object
type: array
labels:
additionalProperties:
type: string
description: Labels are additional labels applied to all managed resources.
type: object
networkID:
description: NetworkID is the blockchain network identifier.
type: string
p2p:
description: P2P networking configuration.
properties:
allowPrivateIPs:
description: AllowPrivateIPs permits connections to private IP
ranges.
type: boolean
bootstrapNodes:
description: BootstrapNodes lists initial peer addresses for network
bootstrapping.
items:
type: string
type: array
externalIPs:
description: ExternalIPs are externally reachable IPs advertised
to peers.
items:
type: string
type: array
useHostnames:
description: UseHostnames resolves peers by hostname instead of
IP.
type: boolean
type: object
perPodService:
description: |-
PerPodService configures per-pod LoadBalancer Services so each node has a
stable external IP for P2P identity.
properties:
annotations:
additionalProperties:
type: string
description: |-
Annotations are applied to each per-pod LoadBalancer Service
(e.g. cloud-provider load-balancer configuration).
type: object
enabled:
description: Enabled controls whether per-pod LoadBalancer Services
are created.
type: boolean
type: object
ports:
description: Ports configuration.
properties:
additional:
description: Additional lists extra named ports.
items:
description: NamedPort is a port with a name.
properties:
name:
description: Name is the port name.
type: string
port:
description: Port number.
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: Protocol is the port protocol (TCP or UDP).
enum:
- TCP
- UDP
type: string
required:
- name
- port
type: object
type: array
metrics:
default: 9090
description: Metrics is the port for Prometheus metrics.
format: int32
maximum: 65535
minimum: 1
type: integer
p2p:
default: 30303
description: P2P is the port for peer-to-peer networking.
format: int32
maximum: 65535
minimum: 1
type: integer
rpc:
default: 8545
description: RPC is the port for RPC/HTTP API.
format: int32
maximum: 65535
minimum: 1
type: integer
type: object
protocol:
description: Protocol selects the blockchain-specific driver.
enum:
- lux
- ethereum
- solana
- bitcoin
- cosmos
- substrate
- generic
type: string
protocolConfig:
description: |-
ProtocolConfig is opaque JSON passed to the protocol driver.
Use this for protocol-specific flags that don't map to common fields.
x-kubernetes-preserve-unknown-fields: true
replicas:
default: 3
description: Replicas is the number of nodes.
format: int32
minimum: 1
type: integer
replication:
description: |-
Replication configures the node's native streaming replication (REPLICATE_*
env), the preferred ongoing snapshot mechanism. Full snapshots plus
continuous incrementals are streamed to an object store and restored on boot.
properties:
ageIdentitySecret:
description: AgeIdentitySecret is a Secret holding REPLICATE_AGE_IDENTITY
for restore.
type: string
ageRecipient:
description: AgeRecipient (an age public key) enables client-side
encryption of snapshots.
type: string
credentialsSecret:
description: CredentialsSecret is a Secret holding REPLICATE_S3_ACCESS_KEY
/ _SECRET_KEY.
type: string
enabled:
description: Enabled controls whether streaming replication is
active.
type: boolean
incrementalIntervalSeconds:
description: IncrementalIntervalSeconds between incrementals.
Defaults to 5.
format: int64
type: integer
s3Bucket:
description: S3Bucket holds replication objects. Defaults to "replicate".
type: string
s3Endpoint:
description: S3Endpoint is the S3-compatible object-store endpoint.
type: string
s3Path:
description: S3Path is the key prefix; defaults to the node's
db path.
type: string
s3Region:
description: S3Region is the object-store region.
type: string
s3UseSsl:
description: S3UseSSL enables TLS to the object store.
type: boolean
snapshotIntervalSeconds:
description: SnapshotIntervalSeconds between full snapshots. Defaults
to 3600.
format: int64
type: integer
sourceNodeIndex:
description: |-
SourceNodeIndex, when set, restricts the backup loop to that ordinal;
every node still restores on boot.
format: int32
type: integer
type: object
resources:
description: Resources (CPU/memory) for the node container.
properties:
limits:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: Limits describes the maximum amount of compute resources
allowed.
type: object
requests:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: Requests describes the minimum amount of compute
resources required.
type: object
type: object
rlpImport:
description: RLPImport configures a one-time C-chain RLP import for
fast bootstrap.
properties:
baseURL:
description: BaseURL is the location the RLP file(s) are downloaded
from.
type: string
cChainID:
description: CChainID is the C-chain blockchain ID whose data
is cleared before import.
type: string
enabled:
description: Enabled controls whether the RLP import init container
runs.
type: boolean
filename:
description: Filename is the RLP file name (e.g. "lux-mainnet-96369.rlp").
type: string
minHeight:
default: 1
description: MinHeight skips the import when the C-chain is already
at or above this height.
format: int64
minimum: 0
type: integer
multiPart:
description: |-
MultiPart downloads BaseURL/<basename>.part.<suffix> for each Parts entry
and concatenates them into Filename before import.
type: boolean
parts:
description: Parts lists the part suffixes (e.g. "aa","ab") for
multi-part downloads.
items:
type: string
type: array
timeoutSeconds:
default: 7200
description: TimeoutSeconds is the maximum time allowed for the
import.
format: int64
minimum: 1
type: integer
required:
- baseURL
- filename
type: object
role:
default: validator
description: Role defines the node role.
enum:
- validator
- fullnode
- archive
- bootnode
- sentry
type: string
security:
description: Security sets the pod security context.
properties:
fsGroup:
description: FSGroup sets the filesystem group for volumes.
format: int64
type: integer
runAsGroup:
description: RunAsGroup sets the primary GID for the container
process.
format: int64
type: integer
runAsUser:
description: RunAsUser sets the UID for the container process.
format: int64
type: integer
type: object
seedRestore:
description: SeedRestore enables fast bootstrap from a seed or snapshot.
properties:
donorPVCName:
description: DonorPVCName is the source PVC name for PVCClone
restores.
type: string
enabled:
description: Enabled controls whether seed restoration is active.
type: boolean
markerPath:
default: /data/.restore-complete
description: MarkerPath is the file path used to detect completed
restores.
type: string
objectStoreURL:
description: ObjectStoreURL is the S3/GCS/MinIO URL for ObjectStore
restores.
type: string
restorePolicy:
default: IfEmpty
description: RestorePolicy controls when to restore.
enum:
- IfEmpty
- Always
- Never
type: string
sourceType:
description: SourceType selects the restore mechanism.
enum:
- VolumeSnapshot
- PVCClone
- ObjectStore
- None
type: string
volumeSnapshotName:
description: VolumeSnapshotName is the name of the VolumeSnapshot
for VolumeSnapshot restores.
type: string
required:
- sourceType
type: object
snapshotSchedule:
description: |-
SnapshotSchedule configures operator-driven periodic backups (CronJob)
uploaded to an object store, for backup/DR and as a seed-restore source.
properties:
enabled:
description: Enabled controls whether snapshotting is active.
type: boolean
prefix:
description: Prefix is the object-store key prefix for snapshots.
Defaults to the cluster name.
type: string
retentionCount:
default: 5
description: RetentionCount is the number of snapshots to retain.
format: int32
minimum: 1
type: integer
s3Bucket:
description: S3Bucket is the target bucket.
type: string
s3CredentialsSecret:
description: S3CredentialsSecret references a Secret with S3 credentials.
type: string
s3Endpoint:
description: S3Endpoint is the S3-compatible endpoint.
type: string
schedule:
description: Schedule is a cron expression for snapshot frequency.
type: string
sourceNodeIndex:
default: 0
description: SourceNodeIndex is the StatefulSet ordinal whose
data is snapshotted.
format: int32
minimum: 0
type: integer
required:
- schedule
type: object
startupGate:
description: StartupGate waits for peers before starting nodes.
properties:
checkIntervalSeconds:
default: 10
description: CheckIntervalSeconds is how often to check for peers.
format: int32
minimum: 1
type: integer
enabled:
description: Enabled controls whether startup gating is active.
type: boolean
minPeers:
default: 1
description: MinPeers is the minimum number of peers that must
be reachable before starting.
format: int32
minimum: 0
type: integer
onTimeout:
default: Fail
description: OnTimeout defines what happens when the gate times
out.
enum:
- Fail
- StartAnyway
type: string
timeoutSeconds:
default: 300
description: TimeoutSeconds is the maximum time to wait for peers.
format: int32
minimum: 0
type: integer
waitForHealthyPeer:
description: WaitForHealthyPeer requires at least one peer to
be healthy (synced).
type: boolean
type: object
storage:
description: Storage for persistent chain data.
properties:
retentionPolicy:
allOf:
- enum:
- Retain
- Delete
- enum:
- Retain
- Delete
default: Retain
description: |-
RetentionPolicy determines whether the PVC is retained or deleted
when the parent resource is removed.
type: string
size:
anyOf:
- type: integer
- type: string
description: Size is the requested storage capacity.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
storageClassName:
default: do-block-storage
description: StorageClassName specifies the Kubernetes StorageClass
to use.
type: string
required:
- size
type: object
upgradeStrategy:
description: UpgradeStrategy controls how node upgrades are rolled
out.
properties:
healthCheckBetweenRestarts:
default: true
description: HealthCheckBetweenRestarts requires health verification
between each node restart.
type: boolean
maxUnavailable:
default: 1
description: MaxUnavailable is the maximum number of nodes that
can be unavailable during an upgrade.
format: int32
minimum: 0
type: integer
stabilizationSeconds:
default: 60
description: StabilizationSeconds is the time to wait after each
node restart before proceeding.
format: int32
minimum: 0
type: integer
type:
default: RollingUpdate
description: Type selects the upgrade strategy.
enum:
- OnDelete
- RollingCanary
- RollingUpdate
type: string
type: object
required:
- image
- networkID
- protocol
type: object
status:
description: NodeClusterStatus defines the observed state of NodeCluster.
properties:
bootstrapComplete:
description: BootstrapComplete indicates whether the cluster has completed
initial sync.
type: boolean
conditions:
description: Conditions represent the latest observations of the cluster's
state.
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: |-
observedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
currentReplicas:
description: CurrentReplicas is the total number of running node pods.
format: int32
type: integer
degradedReasons:
description: DegradedReasons lists why the cluster is degraded (empty
when healthy).
items:
type: string
type: array
externalIPs:
additionalProperties:
type: string
description: |-
ExternalIPs maps pod name to the external IP discovered from its per-pod
LoadBalancer Service.
type: object
healthyReplicas:
description: HealthyReplicas is the number of nodes that passed their
health check.
format: int32
type: integer
heightSkew:
description: |-
HeightSkew is the P-chain block-height difference between the highest and
lowest node (0 when all nodes agree).
format: int64
type: integer
lastSnapshotTime:
description: LastSnapshotTime is when the most recent scheduled snapshot
ran.
format: date-time
type: string
nodes:
description: Nodes reports per-node health and sync state.
items:
description: |-
NodeStatus reports per-node health and sync state polled from the node's
health and info APIs (/v1/health, /v1/info, /v1/chain/P, /v1/chain/C).
properties:
bootstrapped:
description: Bootstrapped indicates whether all tracked chains
finished bootstrapping.
type: boolean
cChainHeight:
description: CChainHeight is the contract-chain block height
(eth_blockNumber).
format: int64
type: integer
connectedPeers:
description: ConnectedPeers is the number of peers this node
is connected to.
format: int32
type: integer
externalIP:
description: ExternalIP is the node's external IP, discovered
from its LoadBalancer Service.
type: string
healthy:
description: Healthy indicates whether the node passed its health
check.
type: boolean
name:
description: Name is the pod name of the node.
type: string
nodeID:
description: NodeID is the node's cryptographic identity (info.getNodeID).
type: string
pChainHeight:
description: PChainHeight is the platform-chain block height
(platform.getHeight).
format: int64
type: integer
required:
- name
type: object
type: array
observedGeneration:
description: ObservedGeneration is the most recent generation observed
by the controller.
format: int64
type: integer
phase:
description: Phase is the current lifecycle phase.
enum:
- Pending
- Creating
- Bootstrapping
- Running
- Degraded
- Deleting
type: string
readyReplicas:
description: ReadyReplicas is the number of nodes that are ready.
format: int32
type: integer
totalPeers:
description: TotalPeers is the sum of connected peers across all nodes.
format: int32
type: integer
type: object
type: object
served: true
storage: true
subresources:
status: {}