Skip to content

Manifest

Source: src/Kubernetes/Manifest.ts

Applies a raw Kubernetes manifest onto any cluster via server-side apply.

Any literal object is accepted — built-in kinds and custom resources alike; unknown kinds are resolved through the Kubernetes API discovery endpoint, so CRDs work without any registration. The target cluster can be a managed cluster resource (e.g. AWS.EKS.Cluster) or any cluster your kubeconfig can reach (Kubernetes.KubeConfig(...)).

StatefulSet

const sts = yield* Kubernetes.Manifest("Cache", {
cluster,
manifest: {
apiVersion: "apps/v1",
kind: "StatefulSet",
metadata: { name: "cache", namespace: "apps" },
spec: {
serviceName: "cache",
replicas: 3,
selector: { matchLabels: { app: "cache" } },
template: {
metadata: { labels: { app: "cache" } },
spec: { containers: [{ name: "redis", image: "redis:7" }] },
},
},
},
});

Custom resource (CRD)

const widget = yield* Kubernetes.Manifest("Widget", {
cluster,
manifest: {
apiVersion: "acme.io/v1",
kind: "Widget",
metadata: { name: "w", namespace: "default" },
spec: { size: 3 },
},
});
const ns = yield* Kubernetes.Manifest("AppsNamespace", {
cluster,
manifest: {
apiVersion: "v1",
kind: "Namespace",
metadata: { name: "apps" },
},
});
const local = Kubernetes.KubeConfig({ context: "kind-dev" });
const config = yield* Kubernetes.Manifest("AppConfig", {
cluster: local,
manifest: {
apiVersion: "v1",
kind: "ConfigMap",
metadata: { name: "app-config", namespace: "default" },
data: { LOG_LEVEL: "info" },
},
});