Skip to main content
Version: Next (Private Preview)

NexoDeploymentProfile

:::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
KindNexoDeploymentProfile
API groupnexo.io
Versionv1alpha1
Resourcenexodeploymentprofiles
Short namendp
ScopeNamespaced
Operator supportReconciled

Purpose and relationships

Defines images, pull policy, resources, networking, and runtime step catalog used by NexoProxy.

NexoProxy references it through spec.deploymentProfileRef. It does not execute in the data path by itself.

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.replicasinteger (int32)NoNot declaredNo description is declared in the CRD schema. Minimum: 0.
spec.imageRegistrystringYesNot declaredNo description is declared in the CRD schema.
spec.imageTagstringNoNot declaredNo description is declared in the CRD schema.
spec.imageDigestsobjectNoNot declaredNo description is declared in the CRD schema.
spec.stepCatalogarray<object>NoNot declaredNo description is declared in the CRD schema.
spec.stepCatalog[].namestringYesNot declaredNo description is declared in the CRD schema.
spec.stepCatalog[].imageRepostringNoNot declaredNo description is declared in the CRD schema.
spec.stepCatalog[].truststringYesNot declaredNo description is declared in the CRD schema. Allowed values: first-party, vendor, untrusted.
spec.stepCatalog[].dataAccessstringNoNot declaredNo description is declared in the CRD schema. Allowed values: metadata-only, field-scoped, full-message.
spec.stepCatalog[].fieldsarray<string>NoNot declaredNo description is declared in the CRD schema.
spec.stepCatalog[].digestsarray<string>NoNot declaredNo description is declared in the CRD schema.
spec.stepCatalog[].provenanceRefstringNoNot declaredNo description is declared in the CRD schema.
spec.stepCatalog[].attestationstring (byte)NoNot declaredNo description is declared in the CRD schema.
spec.stepCatalog[].attestationRefstringNoNot declaredNo description is declared in the CRD schema. Pattern: ^sha256:[0-9a-f]\{64\}$.
spec.allowTagFallbackbooleanNoNot declaredNo description is declared in the CRD schema.
spec.imagePullPolicystringNoNot declaredNo description is declared in the CRD schema. Allowed values: Always, IfNotPresent, Never.
spec.imagePullSecretSourceobjectNoNot declaredNo description is declared in the CRD schema.
spec.imagePullSecretSource.namestringNoNot declaredNo description is declared in the CRD schema.
spec.serviceTypestringNoNot declaredNo description is declared in the CRD schema. Allowed values: ClusterIP, NodePort, LoadBalancer.
spec.listenPortinteger (int32)NoNot declaredNo description is declared in the CRD schema. Minimum: 0. Maximum: 65535.
spec.nodePortinteger (int32)NoNot declaredNo description is declared in the CRD schema. Minimum: 0. Maximum: 32767.
spec.resourcesobjectNoNot declaredNo description is declared in the CRD schema.
spec.resources.requestsobjectNoNot declaredNo description is declared in the CRD schema.
spec.resources.limitsobjectNoNot declaredNo description is declared in the CRD schema.
spec.nodeSelectorobjectNoNot declaredNo description is declared in the CRD schema.
spec.tolerationsarray<object>NoNot declaredNo description is declared in the CRD schema.
spec.tolerations[].keystringNoNot declaredNo description is declared in the CRD schema.
spec.tolerations[].operatorstringNoNot declaredNo description is declared in the CRD schema.
spec.tolerations[].valuestringNoNot declaredNo description is declared in the CRD schema.
spec.tolerations[].effectstringNoNot declaredNo description is declared in the CRD schema.
spec.tolerations[].tolerationSecondsinteger (int64)NoNot declaredNo description is declared in the CRD schema.
spec.tlsobjectNoNot declaredNo description is declared in the CRD schema.
spec.tls.enabledbooleanNoNot declaredNo description is declared in the CRD schema.
spec.tls.serverCertSecretstringNoNot declaredNo description is declared in the CRD schema.
spec.tls.caSecretstringNoNot declaredNo description is declared in the CRD schema.
spec.tls.requireClientCertbooleanNoNot declaredNo description is declared in the CRD schema.
spec.tls.allowedProtocolsarray<string>NoNot declaredNo description is declared in the CRD schema.
spec.tls.cipherSuitesstringNoNot declaredNo description is declared in the CRD schema.
spec.upstreamTLSobjectNoNot declaredNo description is declared in the CRD schema.
spec.upstreamTLS.enabledbooleanNoNot declaredNo description is declared in the CRD schema.
spec.upstreamTLS.clientCertSecretstringNoNot declaredNo description is declared in the CRD schema.
spec.upstreamTLS.caSecretstringNoNot declaredNo description is declared in the CRD schema.
spec.upstreamTLS.allowedProtocolsarray<string>NoNot declaredNo description is declared in the CRD schema.
spec.upstreamTLS.cipherSuitesstringNoNot declaredNo description is declared in the CRD schema.
spec.upstreamTLS.serverNamestringNoNot 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.

A Ready or configHash value proves that the Operator accepted/hashed the object; it does not by itself prove runtime execution or policy enforcement.

Reconciliation and watch behavior

The registered controller validates the resource and records status. Data-path changes are applied only when the relevant NexoProxy controller rebuilds or reloads the owning graph.

At startup, the current NexoProxy controller installs a typed watch when the CRD is discoverable. A CRD installed after Operator startup requires an Operator restart before that reference watch is added.

Runtime execution effect

Its values shape generated images, replicas, resources, service settings, TLS settings, and the available step catalog; it is not a data-path step.

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: NexoDeploymentProfile
metadata:
name: <profile-name>
namespace: <namespace>
spec:
imageRegistry: <approved-registry.example.com>
imageTag: <immutable-release-tag>
imagePullPolicy: IfNotPresent
replicas: 2

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 nexodeploymentprofiles --namespace <namespace>
kubectl describe nexodeploymentprofiles <name> --namespace <namespace>
kubectl get nexodeploymentprofiles <name> --namespace <namespace> -o yaml
kubectl get crd nexodeploymentprofiles.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.