Files
nchain/config/crd/bases/nchain.hanzo.ai_explorers.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

322 lines
14 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.18.0
name: explorers.nchain.hanzo.ai
spec:
group: nchain.hanzo.ai
names:
kind: Explorer
listKind: ExplorerList
plural: explorers
shortNames:
- exp
singular: explorer
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.chainRef
name: Chain
type: string
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.url
name: URL
type: string
- jsonPath: .status.readyReplicas
name: Ready
type: integer
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
Explorer is the Schema for the explorers API.
It deploys a block explorer UI for one or more Chains via their Indexers.
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: |-
ExplorerSpec defines the desired state of a block explorer.
The explorer is a stateless web UI (e.g. ghcr.io/luxfi/explore) that reads
chain data from one or more Indexers over their graph/indexer HTTP API. It
owns no database: indexers persist data in SQLite with native streaming
replication, so the explorer never provisions Postgres/Redis.
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
status:
description: ExplorerStatus defines the observed state of Explorer.
properties:
backendReady:
description: BackendReady indicates whether the backend is running
and healthy.
type: boolean
conditions:
description: Conditions represent the latest observations of the explorer'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
frontendReady:
description: FrontendReady indicates whether the frontend is running
and healthy.
type: boolean
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 ready explorer replicas.
format: int32
type: integer
url:
description: URL is the public URL of the explorer, derived from the
ingress host.
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}