NexoProxy
:::tip Reconciled
The selected Operator registers this Kind. Runtime effect still requires a valid reference from the owning Proxy graph and a compatible runtime component.
:::
This page documents the current development contract. Schema acceptance, Operator reconciliation, and runtime enforcement are separate claims; the status above is authoritative.
API identity
| Property | Value |
|---|---|
| Kind | NexoProxy |
| API group | nexo.io |
| Version | v1alpha1 |
| Resource | nexoproxies |
| Short name | nproxy |
| Scope | Namespaced |
| Operator support | Reconciled |
Purpose and relationships
Creates and maintains the Nexo Proxy workload for one upstream MongoDB endpoint.
It is the owning orchestration resource: it resolves the referenced NexoDeploymentProfile and NexoPipeline, renders the runtime graph, and owns generated Kubernetes workload objects.
Spec field reference
The table is derived from the installed Nexo Edge CRD OpenAPI schema. “Not declared” means the schema publishes no default. A missing schema description is reported explicitly rather than inferred from implementation.
| Field | Type | Required | Default | Schema description |
|---|---|---|---|---|
spec.targetAddress | string | Yes | Not declared | No description is declared in the CRD schema. |
spec.licenseSecretRef | object | Yes | Not declared | No description is declared in the CRD schema. |
spec.licenseSecretRef.name | string | Yes | Not declared | No description is declared in the CRD schema. |
spec.licenseSecretRef.key | string | Yes | Not declared | No description is declared in the CRD schema. |
spec.deploymentProfileRef | object | Yes | Not declared | No description is declared in the CRD schema. |
spec.deploymentProfileRef.name | string | Yes | Not declared | No description is declared in the CRD schema. |
spec.pipelineRef | object | Yes | Not declared | No description is declared in the CRD schema. |
spec.pipelineRef.name | string | Yes | Not declared | No description is declared in the CRD schema. |
spec.connectionPipelineRef | object | No | Not declared | No description is declared in the CRD schema. |
spec.connectionPipelineRef.name | string | Yes | Not declared | No description is declared in the CRD schema. |
Status fields and conditions
| Field | Type | Required | Default | Schema description |
|---|---|---|---|---|
status.phase | string | No | Not declared | No description is declared in the CRD schema. Allowed values: Running, Pending, Degraded, Error. |
status.graphRevision | string | No | Not declared | No description is declared in the CRD schema. |
status.appliedRevision | string | No | Not declared | No description is declared in the CRD schema. |
status.replicas | integer (int32) | No | Not declared | No description is declared in the CRD schema. |
status.readyReplicas | integer (int32) | No | Not declared | No description is declared in the CRD schema. |
status.conditions | array<object> | No | Not declared | No description is declared in the CRD schema. |
status.conditions[].type | string | No | Not declared | No description is declared in the CRD schema. |
status.conditions[].status | string | No | Not declared | No description is declared in the CRD schema. |
status.conditions[].reason | string | No | Not declared | No description is declared in the CRD schema. |
status.conditions[].message | string | No | Not declared | No description is declared in the CRD schema. |
status.conditions[].lastTransitionTime | string (date-time) | No | Not declared | No description is declared in the CRD schema. |
status.conditions[].observedGeneration | integer (int64) | No | Not declared | No description is declared in the CRD schema. |
phase, graphRevision, appliedRevision, replica counts, and conditions describe graph rendering and workload readiness. Always compare observed state with metadata.generation.
Reconciliation and watch behavior
The NexoProxy controller resolves the referenced graph and reconciles generated Kubernetes resources. Deployment-owned events also requeue it.
The controller watches NexoProxy plus owned Deployments, ConfigMaps, Secrets, and Services.
Runtime execution effect
The Operator creates or updates the Proxy Deployment, Service, ConfigMaps, required Secrets, and runtime graph. Status reflects rollout and graph application.
Example
Use placeholders and validate in a non-production namespace first. For schema-only or ineffective kinds, this example is for schema inspection only and must not be used as evidence of enforcement.
apiVersion: nexo.io/v1alpha1
kind: NexoProxy
metadata:
name: <proxy-name>
namespace: <namespace>
spec:
targetAddress: <mongodb-host>:27017
licenseSecretRef:
name: <license-secret>
key: token
deploymentProfileRef:
name: <profile-name>
pipelineRef:
name: <pipeline-name>
Update and reconciliation caveats
- Apply component and pipeline changes before expecting the owning NexoProxy graph to change.
- Check metadata.generation, status.observedGeneration when present, and the owning Proxy graphRevision/appliedRevision after every update.
- A successful kubectl apply proves only schema admission; inspect Operator conditions, generated configuration, rollout state, and runtime behavior separately.
Release-specific limitations
- The API is v1alpha1 and has no conversion webhook or second served version.
- The CRD schema is retained by Helm and can outlive the Operator release that installed it.
- Current documentation can describe unreleased development behavior; verify the exact deployed bundle and image digests.
Inspect with kubectl
kubectl get nexoproxies --namespace <namespace>
kubectl describe nexoproxies <name> --namespace <namespace>
kubectl get nexoproxies <name> --namespace <namespace> -o yaml
kubectl get crd nexoproxies.nexo.io -o yaml
For resources participating in a Proxy graph, also inspect:
kubectl get nexoproxy <proxy-name> --namespace <namespace> \
-o jsonpath='{.status.phase}{" graph="}{.status.graphRevision}{" applied="}{.status.appliedRevision}{"\n"}'
kubectl get nexopipeline <pipeline-name> --namespace <namespace> -o yaml