Inrun is the intent runner for Kubernetes. A caller sends an intent through the gateway; Inrun turns it into a custom resource, reconciles it, and returns a view.
This chart deploys:
inrun CLI:curl -sSL https://get.inrun.dev | bash
Inrun does not create RBAC or its Catalog ConfigMap itself. You generate them from your Catalog, review them, and apply them, so every permission is visible before it reaches the cluster.
This uses the Website CRD from the hello-website example:
kubectl apply -f https://raw.githubusercontent.com/intentd/inrun/main/examples/reconcilers/declarative/01-hello-website/manifests/crd.yaml
Save as catalog.yaml:
apiVersion: inrun.dev/v1
kind: Catalog
metadata:
name: hello-website
spec:
crds:
website:
apiTypes:
group: demo.inrun.dev
version: v1alpha1
kind: Website
plural: websites
operatorBox:
reconcile:
onCreate:
deployments:
- name: ""
image: ""
replicas: ""
port: ""
reconcile: true
services:
- name: "-svc"
port: "80"
targetPort: ""
reconcile: true
inrun validate --full -f catalog.yaml
This prints every RBAC rule the Catalog needs, per CRD and per component, with a note on why each one exists. No cluster required.
inrun generate bundle -f catalog.yaml -o bundle.yaml
kubectl apply -f bundle.yaml
The bundle holds the inrun-system Namespace, the ServiceAccounts, a
ClusterRole with only the permissions the Catalog needs, its binding, and the
inrun-catalog ConfigMap. Commit it to your GitOps repo if you use one.
helm repo add inrun https://intentd.github.io/inrun
helm upgrade --install inrun inrun/inrun \
--namespace inrun-system \
--set gateway.enabled=true
The chart uses the ServiceAccounts and ConfigMap from the bundle.
kubectl get pods -n inrun-system
The runtime and gateway deploy independently.
| Topology | runtime.enabled |
gateway.enabled |
Use |
|---|---|---|---|
| Runtime only | true |
false |
Reconcile without intents or admission |
| Gateway only | false |
true |
Deletion and namespace protection only |
| Full | true |
true |
Intents in, reconcile, views out |
For gateway only, set gateway.standalone: true in the Catalog and generate
with inrun generate bundle --for gateway.
| Parameter | Description | Default |
|---|---|---|
runtime.enabled |
Deploy the runtime | true |
runtime.image.repository |
Image | ghcr.io/intentd/inrun |
runtime.image.tag |
Tag | Chart appVersion |
runtime.replicaCount |
Replicas; one leader reconciles | 2 |
runtime.serviceAccount |
ServiceAccount from the bundle | inrun |
runtime.server.httpPort |
Health, metrics and API port | 8080 |
runtime.config.logLevel |
debug, info, warn, error | info |
runtime.config.defaultWorkers |
Workers per CRD | 2 |
runtime.config.defaultResync |
Resync interval | 30s |
runtime.config.maxDepth |
Max queue depth per CRD | 500 |
runtime.config.failureThreshold |
Failures before degraded | 10 |
runtime.leaderElection.enabled |
Leader election | true |
runtime.catalog.existingConfigMap |
Catalog ConfigMap | <release>-catalog |
runtime.catalog.configMapKey |
Key in the ConfigMap | catalog.yaml |
runtime.gatewayEndpoint |
Gateway URL shown to the console | "" |
runtime.registry.url |
Pattern registry | "" |
| Parameter | Description | Default |
|---|---|---|
gateway.enabled |
Deploy the gateway | false |
gateway.image.repository |
Image | ghcr.io/intentd/inrun-gateway |
gateway.replicaCount |
Replicas; stateless | 2 |
gateway.serviceAccount |
ServiceAccount from the bundle | inrun-gateway |
gateway.server.httpPort |
Gateway API, health and metrics | 8080 |
gateway.server.httpsPort |
Webhook port | 8443 |
gateway.webhooks.enabled |
Serve webhooks with your own TLS secret | false |
gateway.webhooks.existingSecret |
TLS secret for webhooks | "" |
gateway.catalog.existingConfigMap |
Catalog ConfigMap | the runtime’s |
gateway.ingress.enabled |
Expose the Gateway API | false |
| Parameter | Description | Default |
|---|---|---|
console.enabled |
Deploy the console | true |
console.image.repository |
Image | ghcr.io/intentd/inrun-console |
console.config.inrunURLs |
Runtimes to watch | this release’s runtime |
console.config.refreshInterval |
Refresh interval | 10s |
console.gatewayToken.secretRef.name |
Gateway token Secret for serving intents | "" |
console.ingress.enabled |
Expose the console | false |
These apply under runtime:, gateway: and console:: imagePullSecrets,
resources, pdb, networkPolicy (runtime and console), hpa (gateway and
console), nodeSelector, tolerations, affinity,
topologySpreadConstraints, extraEnv, extraEnvFrom, extraVolumes,
extraVolumeMounts, podAnnotations and podLabels. See
values.yaml for the full list.
inrun proxy
This forwards the runtime, gateway and console ports to localhost. The console is then at http://localhost:8081/console.
helm uninstall inrun --namespace inrun-system
CRDs and the custom resources Inrun managed stay in the cluster.
Apache 2.0.