ct template
Bundle and execute a .ct entrypoint, then print rendered manifests with release labels.
ct template my-release . --namespace productionct template <name> <dir|repo> [flags]| Argument | Required | Description |
|---|---|---|
name | yes | Release name used for Release.name and injected labels. |
dir|repo | yes | Local project directory or GitHub source (for example github.com/cloudticon/my-app@v1.0). |
| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--namespace | -n | string | — | Default namespace for resources |
--values | -f | string | (auto-detect) | Path to values file (JSON or YAML) |
--output | -o | string | "yaml" | Output format: yaml or json |
--set | — | stringArray | — | Override values inline (e.g. --set replicas=5) |
--no-cache | — | bool | false | Skip cache and re-download remote source before rendering |
Values auto-detection
Section titled “Values auto-detection”When --values is not specified, CT looks for values files in order:
values.jsonvalues.yamlvalues.yml
The first file found is used. Use --values to override this behavior.
Remote sources
Section titled “Remote sources”ct template accepts both local directories and GitHub sources:
- Local:
ct template my-release . --namespace prod - Remote:
ct template my-release github.com/cloudticon/my-app@v1.0 --namespace prod
Remote sources are cached in ~/.ct/cache/. Use --no-cache to force re-download.
Examples
Section titled “Examples”Render YAML from local directory:
ct template my-release . --namespace productionRender as JSON:
ct template my-release . --namespace production --output jsonOverride values inline:
ct template my-release . --namespace production --set replicas=5Explicit values file (multi-environment):
ct template my-release . --namespace staging --values values-staging.jsonRender from GitHub source:
ct template my-release github.com/cloudticon/my-app@v1.0 --namespace stagingForce re-download remote source:
ct template my-release github.com/cloudticon/my-app@main --namespace prod --no-cachePipe rendered output to kubectl:
ct template my-release . --namespace production | kubectl apply -f -How it works
Section titled “How it works”ct template <name> <dir|repo> │ ├─ Resolve source (local path or GitHub source URL) ├─ Optionally invalidate source cache (--no-cache) ├─ Auto-detect or load values file ├─ Apply --set overrides on top of values ├─ Bundle main.ct (esbuild: TS → JS, resolve URL imports) ├─ Execute bundled JS in Goja runtime ├─ Collect emitted Kubernetes resources ├─ Inject release labels: │ app.kubernetes.io/managed-by=ct │ ct.cloudticon.com/instance=<name> ├─ Set namespace on resources (if --namespace provided) │ └─ Print manifests to stdout (YAML or JSON)