feat: ork run <ref>, --apply-cr, --use-komposer, komposer.yaml in OCI artifacts#200
Merged
Conversation
…callers Replace the positional New(...) signature with New(e2eFile string, opts Options) so adding future fields does not cascade changes across every call site. Options struct fields: ClusterCtx, UseCurrentCtx, KeepCluster, Workers, KindVersion, DevServer, OrkVersion, ValueFiles, HelmArgs. --workers <n> accepted on ork e2e and ork push to provision worker nodes alongside the control-plane in the kind cluster created for the run. Workers and KindVersion propagate into sub-runner New calls for imports.
…ete cluster ork create cluster --workers <n> provisions n kind worker nodes alongside the control-plane. --version <v> selects the kind binary to download (cached at ~/.orkestra/bin/kind-<version>); previously the version was hardcoded to v0.27.0. resolveKind: explicit --version now bypasses the PATH kind binary and uses the versioned cache entry. An empty version still prefers PATH first, then falls back to DefaultKindVersion. waitForNodesReady: replaced the custom polling loop (which checked condition type, not status, and could return "ready" with NotReady nodes) with kubectl wait --for=condition=Ready node --all. ork delete cluster --name <n> is the complement to ork create cluster; backed by the existing DeleteKindCluster helper.
create.md: add --workers and --version flag entries, multi-node and version-pin examples, node-ready behaviour note, pointer to delete.md. 08-e2e.md: add --workers flag. 09-push.md: add --workers flag for the e2e gate cluster. delete.md: new page for ork delete cluster. index.md: ork delete cluster entry in the Tooling table.
…example refactor - leaderElection: on kubectl.delete resolves Lease holder and deletes the pod by name; replaces shell subcommand anti-pattern in e2e YAML - leaderElection: on kubectl.exec runs a command inside the leader pod - validate.go: leaderElection mutually exclusive with file/kind/name on delete; mutually exclusive with name/labelSelector on exec - Rename E2EKubectlPortForwardLeaderElection → E2EKubectlLeaderElection; type is now shared by all four kubectl subcommands (YAML keys unchanged) - include: composition for expect: — long expect sections can be split into an e2e/ subfolder and composed with include: entries - Refactor all three resilience examples to use e2e/ subfolder includes: leader-failover (infra-ready, failover, cleanup) crd-missing-recovery (health-check, crd-loss, recovery, cleanup) admission-protection (degraded, recovery, cleanup) - Fix: WaitForResource used .Run() for ready checks, letting kubectl rollout status and kubectl wait write to the terminal during spinner; replaced with .Output(). Same fix for helm repo add/update. - Revamp documentation/concepts/e2e/04-best-practices.md - Update 06-leader-led-deployments.md to cover delete and exec subcommands - Update e2e/index.md description for leader-led-deployments entry - CHANGELOG.md: v0.7.10 [UNRELEASED] entry
…aml in artifacts - ork run <name>:<version> pulls the pattern from the registry (if not cached) and starts the runtime — no -f flag or local files required - --apply-cr applies crd.yaml, waits for CRD established, applies cr.yaml before starting the runtime; works with OCI refs and local -f paths - --use-komposer uses komposer.yaml from the pulled pattern instead of katalog.yaml; OCI positional arg path only - --refresh re-pulls the pattern even if already cached - IsOCIRef helper in pkg/registry/resolve.go distinguishes OCI refs from filesystem paths for the positional arg detection - resolveOCIRunPath helper in cmd/cli/files.go handles pull + path resolution - applyPatternExamples in run_dev_apply.go applies crd.yaml + cr.yaml from the pattern directory; distinct from katalog-declared crdFile/crFiles - FileKomposer constant added to pkg/registry/constant.go - komposer.yaml added to OptionalFiles for KatalogKind in pattern.go — it was never included as an OCI layer when pushing; re-push required - documentation/reference/cli/07-run.md rewritten to cover OCI workflow - documentation/getting-started/07-running-patterns.md new page: full inspect → pull → run walkthrough - CHANGELOG.md: v0.7.10 [UNRELEASED] updated
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
OCI-native
ork runpositional argument plus--apply-crfor the fully batteries-included experience. Completes the inspect → pull → run workflow without any local YAML files.ork run <name>:<version>ork run postgres:v1.0.0pulls the pattern from the registry (if not cached) and starts the runtime — no-fflag, no local files needed.Short names resolve against
ORK_REGISTRY. Fulloci://refs are used as-is. Dev builds only — not exposed in the production runtime binary.--apply-crApplies
crd.yamlfrom the pattern directory, waits for the CRD to establish, then appliescr.yaml. The operator starts with a CR already waiting on its first reconcile cycle. Works with both OCI refs and local-fpaths.--use-komposerUses
komposer.yamlfrom the pulled pattern instead ofkatalog.yaml. For OCI positional arg path only.komposer.yamlincluded in pushed OCI artifactskomposer.yamlwas missing from theOptionalFileslist for Katalog patterns — it was never packaged as an OCI layer when pushing. AddedFileKomposerconstant topkg/registry/constant.goand added it to the optional files list inpkg/registry/pattern.go. Existing patterns must be re-pushed to include it.Docs
documentation/reference/cli/07-run.md— full rewrite documenting OCI positional arg and all new flagsdocumentation/getting-started/07-running-patterns.md— new page: full inspect → pull → run workflowTest plan
ork run postgres:v1.0.0— pulls pattern, starts runtimeork run postgres:v1.0.0 --dev— creates kind cluster, starts runtimeork run postgres:v1.0.0 --apply-cr— CRD applied, established, CR applied, runtime starts and reconcilesork run postgres:v1.0.0 --use-komposer— runs via komposer.yamlork run postgres:v1.0.0 --refresh— re-pulls even when already cachedork run ./local/katalog.yaml --apply-cr— applies crd.yaml and cr.yaml from the same directoryork push postgres:v1.0.0 .— komposer.yaml now appears in push output and is included in OCI artifactork run postgres:v1.0.0 --use-komposer— uses the komposer.yaml from the newly pushed artifact