Files
nchain/config/crd/bases/nchain.hanzo.ai_networks.yaml
zeekay 27b0621f5c chore(integration): regen deepcopy+CRDs, converge explorer→indexer endpoint
Regenerate zz_generated deepcopy (controller-gen object) and config/crd/bases
(controller-gen crd) so the merged NodeCluster/Indexer/Explorer/Gateway spec
fields land in the API. Converge the Explorer indexer endpoint onto the
Indexer Service (name={indexer.Name}, port=indexerPortDefault 8091) instead of
the stale {name}-indexer:4000, and update the test.
2026-06-27 21:08:02 +00:00

2233 lines
113 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.18.0
name: networks.nchain.hanzo.ai
spec:
group: nchain.hanzo.ai
names:
kind: Network
listKind: NetworkList
plural: networks
shortNames:
- net
singular: network
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.protocol
name: Protocol
type: string
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.clusterCount
name: Clusters
type: integer
- jsonPath: .status.chainCount
name: Chains
type: integer
- jsonPath: .status.readyClusters
name: Ready
type: integer
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
Network is the Schema for the networks API.
It is the top-level composer that manages an entire blockchain network
by creating and reconciling NodeClusters, Chains, Indexers, Explorers,
Bridges, and Gateways.
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: |-
NetworkSpec defines the desired state of a complete blockchain network.
Network is the top-level composer that creates and manages all child CRDs.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional annotations applied to all
managed child resources.
type: object
bridges:
description: Bridges are inline Bridge specifications.
items:
description: NamedBridge is a BridgeSpec with a name for inline
declaration.
properties:
name:
description: Name is the name for this bridge.
type: string
spec:
description: Spec is the inline Bridge specification.
properties:
ingress:
description: Ingress configures external access to the bridge
service.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional annotations
applied to the Ingress resource.
type: object
clusterIssuer:
default: letsencrypt-prod
description: ClusterIssuer is the cert-manager ClusterIssuer
to use for TLS certificates.
type: string
enabled:
description: Enabled controls whether an Ingress resource
is created.
type: boolean
hosts:
description: Hosts lists the hostnames for the Ingress.
items:
type: string
type: array
ingressClassName:
default: ingress
description: IngressClassName specifies the Ingress
class to use.
type: string
tls:
default: true
description: TLS enables TLS termination on the Ingress.
type: boolean
type: object
mpcRef:
description: MPCRef is the name of an MPC key management
resource for bridge signing.
type: string
resources:
description: Resources (CPU/memory) for the bridge containers.
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
serverImage:
description: ServerImage is the bridge server 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
sourceChainRef:
description: SourceChainRef is the name of the source Chain.
type: string
targetChainRef:
description: TargetChainRef is the name of the target Chain.
type: string
uiImage:
description: UIImage is the optional bridge UI 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
required:
- serverImage
- sourceChainRef
- targetChainRef
type: object
required:
- name
- spec
type: object
type: array
chains:
description: Chains are inline Chain specifications.
items:
description: NamedChain is a ChainSpec with a name for inline declaration.
properties:
name:
description: Name is the name for this chain.
type: string
spec:
description: Spec is the inline Chain specification.
properties:
chainID:
description: ChainID is the blockchain-specific chain identifier.
type: string
evmConfig:
description: EVMConfig holds EVM-specific chain configuration
(gas limits, fees, etc.).
x-kubernetes-preserve-unknown-fields: true
genesis:
description: Genesis is the raw genesis configuration JSON.
x-kubernetes-preserve-unknown-fields: true
genesisConfigMap:
description: |-
GenesisConfigMap references an existing ConfigMap containing genesis data.
The ConfigMap key should be "genesis.json".
type: string
nodeClusterRef:
description: NodeClusterRef is the name of the NodeCluster
that runs this chain.
type: string
protocol:
description: Protocol must match the parent NodeCluster's
protocol.
enum:
- lux
- ethereum
- bitcoin
- cosmos
- substrate
- generic
type: string
protocolConfig:
description: ProtocolConfig is opaque protocol-specific
chain settings.
x-kubernetes-preserve-unknown-fields: true
subnetID:
description: SubnetID associates this chain with a Lux subnet.
type: string
vmID:
description: VMID is the virtual machine identifier (e.g.,
for Lux subnet VMs).
type: string
required:
- chainID
- nodeClusterRef
- protocol
type: object
required:
- name
- spec
type: object
type: array
cloud:
description: Cloud configures the cloud management platform (bootnode
API + web UI).
properties:
apiImage:
description: APIImage is the bootnode API 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
database:
description: Database configures storage for the cloud platform.
properties:
credentialsSecret:
description: CredentialsSecret references a Secret containing
database credentials.
type: string
image:
description: Image is the database container image (ignored
for sqlite).
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
storage:
description: Storage configures persistent storage for the
database.
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
type:
default: postgresql
description: Type selects the database engine.
enum:
- postgresql
- sqlite
type: string
type: object
enabled:
description: Enabled controls whether the cloud management platform
is deployed.
type: boolean
ingress:
description: Ingress configures external access to the cloud platform.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional annotations applied
to the Ingress resource.
type: object
clusterIssuer:
default: letsencrypt-prod
description: ClusterIssuer is the cert-manager ClusterIssuer
to use for TLS certificates.
type: string
enabled:
description: Enabled controls whether an Ingress resource
is created.
type: boolean
hosts:
description: Hosts lists the hostnames for the Ingress.
items:
type: string
type: array
ingressClassName:
default: ingress
description: IngressClassName specifies the Ingress class
to use.
type: string
tls:
default: true
description: TLS enables TLS termination on the Ingress.
type: boolean
type: object
replicas:
default: 1
description: Replicas is the number of API replicas.
format: int32
minimum: 1
type: integer
webImage:
description: WebImage is the cloud UI 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
type: object
clusters:
description: Clusters are inline NodeCluster specifications.
items:
description: NamedNodeCluster is a NodeClusterSpec with a name for
inline declaration.
properties:
name:
description: Name is the name for this node cluster.
type: string
spec:
description: Spec is the inline NodeCluster specification.
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
required:
- name
- spec
type: object
type: array
explorers:
description: Explorers are inline Explorer specifications.
items:
description: NamedExplorer is an ExplorerSpec with a name for inline
declaration.
properties:
name:
description: Name is the name for this explorer.
type: string
spec:
description: Spec is the inline Explorer specification.
properties:
backendImage:
description: |-
BackendImage is the explorer application container image
(e.g. ghcr.io/luxfi/explore).
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
branding:
description: Branding customizes the explorer UI (network
name, logo, primary color).
properties:
logoUrl:
description: LogoURL is an optional URL to the network
logo.
type: string
networkName:
description: NetworkName is the network name displayed
in the explorer UI.
type: string
primaryColor:
description: PrimaryColor is an optional hex primary
color for the UI.
type: string
required:
- networkName
type: object
chainRef:
description: ChainRef is the name of the primary Chain this
explorer surfaces.
type: string
frontendImage:
description: FrontendImage is the optional separate UI 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
indexerRefs:
description: |-
IndexerRefs lists the per-chain indexers this explorer surfaces. Each ref
is wired into the explorer as CHAIN_{i}_NAME / CHAIN_{i}_INDEXER, with the
default ref driving NETWORK_ID and the explorer's read API host.
items:
description: ExplorerIndexerRef references a chain's Indexer
for display in the explorer.
properties:
color:
description: Color is an optional hex color for the
chain in the UI.
type: string
default:
description: |-
Default marks this chain as the one shown by default. The first ref is
used when none is marked default.
type: boolean
displayName:
description: DisplayName is the chain's human-readable
name shown in the explorer UI.
type: string
indexerName:
description: IndexerName is the name of the Indexer
(same namespace) to source data from.
type: string
required:
- displayName
- indexerName
type: object
type: array
ingress:
description: Ingress configures external access to the explorer.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional annotations
applied to the Ingress resource.
type: object
clusterIssuer:
default: letsencrypt-prod
description: ClusterIssuer is the cert-manager ClusterIssuer
to use for TLS certificates.
type: string
enabled:
description: Enabled controls whether an Ingress resource
is created.
type: boolean
hosts:
description: Hosts lists the hostnames for the Ingress.
items:
type: string
type: array
ingressClassName:
default: ingress
description: IngressClassName specifies the Ingress
class to use.
type: string
tls:
default: true
description: TLS enables TLS termination on the Ingress.
type: boolean
type: object
resources:
description: Resources (CPU/memory) for the explorer containers.
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
required:
- backendImage
- chainRef
type: object
required:
- name
- spec
type: object
type: array
gateways:
description: Gateways are inline Gateway specifications.
items:
description: NamedGateway is a GatewaySpec with a name for inline
declaration.
properties:
name:
description: Name is the name for this gateway.
type: string
spec:
description: Spec is the inline Gateway specification.
properties:
autoRoutes:
description: |-
AutoRoutes automatically discovers and routes all chains in the referenced NodeCluster.
For the lux protocol this queries the cluster's P-chain (platform.getBlockchains)
and generates a route per non-primary subnet chain.
type: boolean
cors:
description: |-
CORS configures cross-origin resource sharing for all gateway endpoints.
When unset, sensible defaults are applied (origins "*", methods GET/POST/OPTIONS).
properties:
allowedHeaders:
description: AllowedHeaders lists permitted request
headers. Defaults to ["Content-Type","Authorization"].
items:
type: string
type: array
allowedMethods:
description: AllowedMethods lists permitted HTTP methods.
Defaults to ["GET","POST","OPTIONS"].
items:
type: string
type: array
allowedOrigins:
description: AllowedOrigins lists permitted CORS origins.
Defaults to ["*"].
items:
type: string
type: array
type: object
image:
description: |-
Image for the gateway container.
Defaults to ghcr.io/hanzoai/gateway:latest (KrakenD-based).
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
indexerRefs:
description: IndexerRefs lists Indexer names to expose under
/api/indexer/{ref}.
items:
type: string
type: array
ingress:
description: Ingress configures external access to the gateway.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional annotations
applied to the Ingress resource.
type: object
clusterIssuer:
default: letsencrypt-prod
description: ClusterIssuer is the cert-manager ClusterIssuer
to use for TLS certificates.
type: string
enabled:
description: Enabled controls whether an Ingress resource
is created.
type: boolean
hosts:
description: Hosts lists the hostnames for the Ingress.
items:
type: string
type: array
ingressClassName:
default: ingress
description: IngressClassName specifies the Ingress
class to use.
type: string
tls:
default: true
description: TLS enables TLS termination on the Ingress.
type: boolean
type: object
nodeClusterRef:
description: NodeClusterRef is the name of the NodeCluster
to route traffic to.
type: string
rateLimits:
description: |-
RateLimits configures rate limiting applied to RPC endpoints and the
gateway as a whole (KrakenD qos/ratelimit).
properties:
clientMaxRate:
description: ClientMaxRate is the per-client rate limit.
format: int32
minimum: 1
type: integer
every:
description: Every is the time window duration (e.g.,
"1s", "1m").
type: string
maxRate:
description: MaxRate is the maximum number of requests
in the time window.
format: int32
minimum: 1
type: integer
type: object
replicas:
default: 2
description: Replicas is the number of gateway instances.
format: int32
minimum: 1
type: integer
resources:
description: Resources (CPU/memory) for the gateway containers.
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
routes:
description: Routes defines explicit routing rules.
items:
description: GatewayRoute defines a single route in a
Gateway.
properties:
backend:
description: Backend is the service name (or NodeCluster
chain alias) to route to.
type: string
methods:
description: Methods restricts the route to specific
HTTP methods.
items:
type: string
type: array
prefix:
description: Prefix is the URL path prefix to match.
type: string
rateLimit:
description: RateLimit overrides the global rate limit
for this route.
properties:
clientMaxRate:
description: ClientMaxRate is the per-client rate
limit.
format: int32
minimum: 1
type: integer
every:
description: Every is the time window duration
(e.g., "1s", "1m").
type: string
maxRate:
description: MaxRate is the maximum number of
requests in the time window.
format: int32
minimum: 1
type: integer
type: object
stripPrefix:
description: StripPrefix removes the matched prefix
before forwarding.
type: boolean
required:
- backend
- prefix
type: object
type: array
required:
- nodeClusterRef
type: object
required:
- name
- spec
type: object
type: array
indexers:
description: Indexers are inline Indexer specifications.
items:
description: NamedIndexer is an IndexerSpec with a name for inline
declaration.
properties:
name:
description: Name is the name for this indexer.
type: string
spec:
description: Spec is the inline Indexer specification.
properties:
chainRef:
description: ChainRef is the name of the Chain to index.
type: string
contractVerification:
default: true
description: ContractVerification enables contract source
verification.
type: boolean
defiIndexing:
description: DefiIndexing enables DeFi protocol indexing
(AMM, lending, staking).
type: boolean
image:
description: Image for the indexer 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
ingress:
description: Ingress configures external access to the indexer
API.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional annotations
applied to the Ingress resource.
type: object
clusterIssuer:
default: letsencrypt-prod
description: ClusterIssuer is the cert-manager ClusterIssuer
to use for TLS certificates.
type: string
enabled:
description: Enabled controls whether an Ingress resource
is created.
type: boolean
hosts:
description: Hosts lists the hostnames for the Ingress.
items:
type: string
type: array
ingressClassName:
default: ingress
description: IngressClassName specifies the Ingress
class to use.
type: string
tls:
default: true
description: TLS enables TLS termination on the Ingress.
type: boolean
type: object
nftIndexing:
description: NFTIndexing enables NFT indexing.
type: boolean
nodeClusterRef:
description: NodeClusterRef is the name of the NodeCluster
to connect to for chain data.
type: string
pollInterval:
default: 2
description: PollInterval is the block polling interval
in seconds.
format: int32
minimum: 1
type: integer
port:
default: 8091
description: |-
Port is the HTTP API port the indexer serves. The canonical
ghcr.io/luxfi/indexer image listens on 8091.
format: int32
maximum: 65535
minimum: 1
type: integer
replicas:
default: 1
description: Replicas is the number of indexer instances.
format: int32
minimum: 1
type: integer
replication:
description: |-
Replication configures native streaming replication of the embedded
SQLite store to object storage for high availability and fast restore.
properties:
ageIdentitySecret:
description: AgeIdentitySecret is a Secret holding the
age identity for restore.
type: string
ageRecipient:
description: AgeRecipient (age public key) enables client-side
snapshot encryption.
type: string
credentialsSecret:
description: CredentialsSecret is a Secret with REPLICATE_S3_ACCESS_KEY
/ _SECRET_KEY.
type: string
enabled:
description: Enabled toggles replication.
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 for replication
objects.
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
type: object
resources:
description: Resources (CPU/memory) for the indexer 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
rpcEndpoint:
description: |-
RPCEndpoint overrides the auto-discovered chain JSON-RPC endpoint.
When empty it is derived from the referenced NodeCluster headless service.
type: string
seedRestore:
description: |-
SeedRestore restores the embedded store from an object-store snapshot on
first boot via a marker-gated init container.
properties:
enabled:
description: Enabled toggles seed restoration.
type: boolean
markerPath:
description: MarkerPath tracks completion. Defaults
to /data/.seeded.
type: string
objectStoreUrl:
description: ObjectStoreURL is the snapshot tarball
URL when SourceType=ObjectStore.
type: string
restorePolicy:
description: 'RestorePolicy controls when to restore:
IfNotSeeded (default) or Always.'
type: string
sourceType:
description: |-
SourceType selects the restore mechanism. Only "ObjectStore" is handled
at the init-container layer.
type: string
type: object
snapshots:
description: Snapshots configures S3-based snapshots for
the indexer data.
properties:
bucket:
description: Bucket is the target bucket.
type: string
credentialsSecret:
description: CredentialsSecret references a Secret with
S3 credentials.
type: string
endpoint:
description: Endpoint is the S3-compatible endpoint.
type: string
retentionCount:
default: 5
description: RetentionCount is the number of snapshots
to retain.
format: int32
minimum: 1
type: integer
schedule:
description: Schedule is a cron expression for snapshot
frequency.
type: string
type: object
storage:
description: Storage configures persistent storage for index
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
traceEnabled:
default: true
description: TraceEnabled enables internal transaction tracing.
type: boolean
wsEndpoint:
description: |-
WSEndpoint overrides the auto-discovered chain WebSocket endpoint.
When empty it is derived from the referenced NodeCluster headless service.
type: string
required:
- chainRef
- image
- nodeClusterRef
type: object
required:
- name
- spec
type: object
type: array
labels:
additionalProperties:
type: string
description: Labels are additional labels applied to all managed child
resources.
type: object
networkID:
description: NetworkID is the blockchain network identifier.
type: string
protocol:
description: Protocol is inherited by all children unless overridden
at the child level.
enum:
- lux
- ethereum
- bitcoin
- cosmos
- substrate
- generic
type: string
required:
- networkID
- protocol
type: object
status:
description: NetworkStatus defines the observed state of Network.
properties:
chainCount:
description: ChainCount is the number of managed Chains.
format: int32
type: integer
clusterCount:
description: ClusterCount is the number of managed NodeClusters.
format: int32
type: integer
conditions:
description: Conditions represent the latest observations of the network'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
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
readyClusters:
description: ReadyClusters is the number of NodeClusters in Running
phase.
format: int32
type: integer
type: object
type: object
served: true
storage: true
subresources:
status: {}