Skip to main content
Version: Next (Private Preview)

NexoPipeline

:::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

PropertyValue
KindNexoPipeline
API groupnexo.io
Versionv1alpha1
Resourcenexopipelines
Short namenpipe
ScopeNamespaced
Operator supportReconciled

Purpose and relationships

Declares the ordered request, response, router, and connection component references for a Proxy graph.

NexoProxy references it through spec.pipelineRef. The Operator resolves its component references and renders their order into the Proxy runtime graph.

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.

FieldTypeRequiredDefaultSchema description
spec.requestobjectNoNot declaredNo description is declared in the CRD schema.
spec.request.stepsarray<object>NoNot declaredNo description is declared in the CRD schema.
spec.request.steps[].namestringYesNot declaredNo description is declared in the CRD schema.
spec.request.steps[].dataAccessOptInstringNoNot declaredNo description is declared in the CRD schema. Allowed values: metadata-only, field-scoped, full-message.
spec.request.steps[].refobjectYesNot declaredNo description is declared in the CRD schema.
spec.request.steps[].ref.kindstringYesNot declaredNo description is declared in the CRD schema. Allowed values: NexoFilter, NexoLogger, NexoMetrics, NexoIndexAdvisor, NexoRateLimit, NexoCache, NexoRouter, NexoConnectionPooler, NexoEchoUntrusted, NexoAudit, NexoRewrite, NexoShadow, NexoVersionCompat, NexoQuerySizeLimit, NexoQueryGuard, NexoTrafficSplit, NexoTenantIsolation, NexoReadWriteSplit, NexoPIIMasking, NexoFieldEncryption.
spec.request.steps[].ref.namestringYesNot declaredNo description is declared in the CRD schema.
spec.responseobjectNoNot declaredNo description is declared in the CRD schema.
spec.response.stepsarray<object>NoNot declaredNo description is declared in the CRD schema.
spec.response.steps[].namestringYesNot declaredNo description is declared in the CRD schema.
spec.response.steps[].dataAccessOptInstringNoNot declaredNo description is declared in the CRD schema. Allowed values: metadata-only, field-scoped, full-message.
spec.response.steps[].refobjectYesNot declaredNo description is declared in the CRD schema.
spec.response.steps[].ref.kindstringYesNot declaredNo description is declared in the CRD schema. Allowed values: NexoFilter, NexoLogger, NexoMetrics, NexoIndexAdvisor, NexoRateLimit, NexoCache, NexoRouter, NexoConnectionPooler, NexoEchoUntrusted, NexoAudit, NexoRewrite, NexoShadow, NexoVersionCompat, NexoQuerySizeLimit, NexoQueryGuard, NexoTrafficSplit, NexoTenantIsolation, NexoReadWriteSplit, NexoPIIMasking, NexoFieldEncryption.
spec.response.steps[].ref.namestringYesNot declaredNo description is declared in the CRD schema.
spec.routerobjectNoNot declaredNo description is declared in the CRD schema.
spec.router.refobjectNoNot declaredNo description is declared in the CRD schema.
spec.router.ref.kindstringYesNot declaredNo description is declared in the CRD schema. Allowed values: NexoFilter, NexoLogger, NexoMetrics, NexoIndexAdvisor, NexoRateLimit, NexoCache, NexoRouter, NexoConnectionPooler, NexoEchoUntrusted, NexoAudit, NexoRewrite, NexoShadow, NexoVersionCompat, NexoQuerySizeLimit, NexoQueryGuard, NexoTrafficSplit, NexoTenantIsolation, NexoReadWriteSplit, NexoPIIMasking, NexoFieldEncryption.
spec.router.ref.namestringYesNot declaredNo description is declared in the CRD schema.
spec.connectionarray<object>NoNot declaredNo description is declared in the CRD schema.
spec.connection[].namestringYesNot declaredNo description is declared in the CRD schema.
spec.connection[].refobjectYesNot declaredNo description is declared in the CRD schema.
spec.connection[].ref.kindstringYesNot declaredNo description is declared in the CRD schema. Allowed values: NexoFilter, NexoLogger, NexoMetrics, NexoIndexAdvisor, NexoRateLimit, NexoCache, NexoRouter, NexoConnectionPooler, NexoEchoUntrusted, NexoAudit, NexoRewrite, NexoShadow, NexoVersionCompat, NexoQuerySizeLimit, NexoQueryGuard, NexoTrafficSplit, NexoTenantIsolation, NexoReadWriteSplit, NexoPIIMasking, NexoFieldEncryption.
spec.connection[].ref.namestringYesNot declaredNo description is declared in the CRD schema.

Status fields and conditions

FieldTypeRequiredDefaultSchema description
status.readybooleanNoNot declaredNo description is declared in the CRD schema.
status.observedGenerationinteger (int64)NoNot declaredNo description is declared in the CRD schema.
status.configHashstringNoNot declaredNo description is declared in the CRD schema.
status.conditionsarray<object>NoNot declaredNo description is declared in the CRD schema.
status.conditions[].typestringNoNot declaredNo description is declared in the CRD schema.
status.conditions[].statusstringNoNot declaredNo description is declared in the CRD schema.
status.conditions[].reasonstringNoNot declaredNo description is declared in the CRD schema.
status.conditions[].messagestringNoNot declaredNo description is declared in the CRD schema.
status.conditions[].lastTransitionTimestring (date-time)NoNot declaredNo description is declared in the CRD schema.
status.conditions[].observedGenerationinteger (int64)NoNot declaredNo description is declared in the CRD schema.

The pinned/current pipeline controller reports validation and component-resolution conditions. Ready does not prove that every referenced runtime component executes correctly.

Reconciliation and watch behavior

The pipeline controller validates the object and referenced components. The NexoProxy controller separately consumes it when reconciling the owning graph.

The pipeline controller watches NexoPipeline; the Proxy controller also watches installed referenced CRDs and maps changes to affected proxies.

Runtime execution effect

Its resolved references determine which sidecars or runtime components are rendered and in which phase/order.

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: NexoPipeline
metadata:
name: <pipeline-name>
namespace: <namespace>
spec:
request:
steps:
- name: rate-limit
ref:
kind: NexoRateLimit
name: <rate-limit-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 nexopipelines --namespace <namespace>
kubectl describe nexopipelines <name> --namespace <namespace>
kubectl get nexopipelines <name> --namespace <namespace> -o yaml
kubectl get crd nexopipelines.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

Search Nexo documentation

Type to search titles, headings, and page content.