Limitations

2 min read

The fake cluster has no external connectivity and no real API server. Some operator features require a real cluster or a compiled user binary.


Blocks that are inactive in simulation

BlockStatusWhat you see
external: HTTP callsActive by default — calls hit the real network; pass --skip-external to stub with empty 200Without --skip-external: real HTTP; with it: external.* fields are empty, note printed
cross: informer readsActive when peer CRs are in the CR fileInclude all sibling CRDs’ CRs separated by --- in the CR file. Each is seeded into a fake informer so cross.* fields populate. Without a peer CR, cross.* fields are empty and a note is printed.

The output still shows whether the declarative layer (templates, status fields, once:, forEach:) is correct given absent data.


Standard binary fallback

When running from the standard ork binary (not a custom operator binary), HookRegistry and ReconcilerRegistry are empty for your custom types. Hook bodies and constructor reconcile loops do not execute. Simulate falls back to GenericReconciler and runs the status layer only.

Build and use your own ork binary to get full hook and constructor simulation:

make registry && make build
ork simulate --cr cr.yaml

What simulate cannot cover

FeatureUse instead
Admission webhook validation/mutationork e2e
Real pod scheduling and readinessork e2e
Watch events triggering reconcilesork e2e
Actual merge-patch / SSA semanticsork e2e
Cross-namespace secret readsork e2e
Provider blocks (AWS, MongoDB)ork e2e

For anything in the right column, provision a kind cluster and run ork e2e.


→ Back to: ork simulate