@intentius/chant-lexicon-k8s 0.124.31 → 0.124.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/apps.js +18 -0
- package/dist/actions/batch.js +6 -0
- package/dist/actions/core.js +48 -0
- package/dist/actions/index.js +13 -0
- package/dist/actions/networking.js +11 -0
- package/dist/actions/rbac.js +8 -0
- package/dist/api/classify.js +123 -0
- package/dist/api/connect.js +62 -0
- package/dist/api/fake-cluster.js +175 -0
- package/dist/api/operation-surface.d.ts.map +1 -1
- package/dist/api/operation-surface.js +109 -0
- package/dist/api/owner-chain.js +100 -0
- package/dist/api/sweep-types.js +35 -0
- package/dist/behaviour-kinds.js +82 -0
- package/dist/codegen/docs-cli.js +2 -0
- package/dist/codegen/docs.js +146 -0
- package/dist/codegen/generate-cli.js +30 -0
- package/dist/codegen/generate-lexicon.js +74 -0
- package/dist/codegen/generate-list-map-keys.js +88 -0
- package/dist/codegen/generate-operations.js +53 -0
- package/dist/codegen/generate-typescript.js +124 -0
- package/dist/codegen/generate.js +173 -0
- package/dist/codegen/naming.js +174 -0
- package/dist/codegen/package.js +36 -0
- package/dist/codegen/patches.js +88 -0
- package/dist/codegen/typecheck.js +4 -0
- package/dist/codegen/versions.js +41 -0
- package/dist/components/argo-app.js +51 -0
- package/dist/components/builders.js +22 -0
- package/dist/components/capability-plugin.js +31 -0
- package/dist/components/flux-reconcile.js +61 -0
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +18 -0
- package/dist/components/kubectl-apply.d.ts +83 -1
- package/dist/components/kubectl-apply.d.ts.map +1 -1
- package/dist/components/kubectl-apply.js +274 -0
- package/dist/components/kustomize-apply.js +25 -0
- package/dist/composites/adot-collector.js +184 -0
- package/dist/composites/agic-ingress.js +85 -0
- package/dist/composites/aks-external-dns-agent.js +146 -0
- package/dist/composites/alb-ingress.js +86 -0
- package/dist/composites/argo-app.js +199 -0
- package/dist/composites/autoscaled-service.js +174 -0
- package/dist/composites/azure-disk-storage-class.js +47 -0
- package/dist/composites/azure-file-storage-class.js +48 -0
- package/dist/composites/azure-monitor-collector.js +176 -0
- package/dist/composites/batch-job.js +139 -0
- package/dist/composites/catalog.js +4110 -0
- package/dist/composites/cockroachdb-cluster.js +371 -0
- package/dist/composites/cockroachdb-region-stack.js +369 -0
- package/dist/composites/config-connector-context.js +40 -0
- package/dist/composites/configured-app.js +135 -0
- package/dist/composites/cron-schedule.js +38 -0
- package/dist/composites/cron-workload.js +109 -0
- package/dist/composites/ebs-storage-class.js +54 -0
- package/dist/composites/efs-storage-class.js +46 -0
- package/dist/composites/external-dns-agent.js +122 -0
- package/dist/composites/filestore-storage-class.js +49 -0
- package/dist/composites/fluent-bit-agent.js +157 -0
- package/dist/composites/flux-app.js +156 -0
- package/dist/composites/gce-ingress.js +83 -0
- package/dist/composites/gce-pd-storage-class.js +49 -0
- package/dist/composites/gke-external-dns-agent.js +129 -0
- package/dist/composites/gke-fluent-bit-agent.js +165 -0
- package/dist/composites/gke-gateway.js +91 -0
- package/dist/composites/gke-otel-collector.js +94 -0
- package/dist/composites/index.js +51 -0
- package/dist/composites/inference-service.js +76 -0
- package/dist/composites/irsa-service-account.js +77 -0
- package/dist/composites/member-defaults.js +14 -0
- package/dist/composites/metrics-server.js +181 -0
- package/dist/composites/model.js +92 -0
- package/dist/composites/monitored-service.js +152 -0
- package/dist/composites/namespace-env.js +114 -0
- package/dist/composites/network-isolated-app.js +124 -0
- package/dist/composites/node-agent.js +149 -0
- package/dist/composites/operator-stack.js +268 -0
- package/dist/composites/otel-collector-agent.js +142 -0
- package/dist/composites/otel-collector-gateway.js +216 -0
- package/dist/composites/otel-collector-node.js +176 -0
- package/dist/composites/otel-collector-rbac.js +115 -0
- package/dist/composites/otel-collector-shape.js +128 -0
- package/dist/composites/otel-collector.js +115 -0
- package/dist/composites/otel-operator-collector.js +123 -0
- package/dist/composites/ray-cluster.js +378 -0
- package/dist/composites/ray-job.js +136 -0
- package/dist/composites/ray-service.js +178 -0
- package/dist/composites/secure-ingress.js +100 -0
- package/dist/composites/security-context.js +1 -0
- package/dist/composites/sidecar-app.js +105 -0
- package/dist/composites/stateful-app.js +111 -0
- package/dist/composites/vllm-serving-runtime.js +114 -0
- package/dist/composites/web-app.js +157 -0
- package/dist/composites/worker-pool.js +167 -0
- package/dist/composites/workload-identity-sa.js +81 -0
- package/dist/composites/workload-identity-service-account.js +77 -0
- package/dist/config-schema.js +72 -0
- package/dist/config.js +59 -0
- package/dist/coverage.js +27 -0
- package/dist/crd/crd-sources.js +615 -0
- package/dist/crd/loader.js +181 -0
- package/dist/crd/oci-chart.js +144 -0
- package/dist/crd/parser.js +382 -0
- package/dist/crd/project-codegen.js +273 -0
- package/dist/crd/types.js +7 -0
- package/dist/deep-observe-hooks.js +306 -0
- package/dist/deep-observe.js +234 -0
- package/dist/default-labels.js +87 -0
- package/dist/describe-resources.js +699 -0
- package/dist/describe-stack-status.js +99 -0
- package/dist/detect.js +11 -0
- package/dist/effect-receipt-row.js +205 -0
- package/dist/export-resources.js +39 -0
- package/dist/generated/index.js +1092 -0
- package/dist/generated/runtime.js +4 -0
- package/dist/group-namespace.js +96 -0
- package/dist/import/embedded.js +197 -0
- package/dist/import/generator.js +288 -0
- package/dist/import/live-export.js +85 -0
- package/dist/import/parser.js +204 -0
- package/dist/import/testdata/embedded/fixtures.js +60 -0
- package/dist/include/entity.js +78 -0
- package/dist/include/resolve.js +170 -0
- package/dist/index.js +59 -0
- package/dist/integrity.json +3 -3
- package/dist/kube/apply.js +90 -0
- package/dist/kube/connect.js +46 -0
- package/dist/kube/delete.js +138 -0
- package/dist/kube/describe.js +169 -0
- package/dist/kube/events.js +132 -0
- package/dist/kube/flags.js +91 -0
- package/dist/kube/get.js +159 -0
- package/dist/kube/group.js +123 -0
- package/dist/kube/logs.js +82 -0
- package/dist/kube/project.js +94 -0
- package/dist/kube/render.js +227 -0
- package/dist/kube/source.js +122 -0
- package/dist/kube/target.js +63 -0
- package/dist/kube/testing.js +28 -0
- package/dist/kube/top.js +99 -0
- package/dist/kube/verdict.js +72 -0
- package/dist/kube/wait.js +129 -0
- package/dist/kustomize/render.js +73 -0
- package/dist/kustomize/rendered-entity.js +67 -0
- package/dist/kustomize/root.js +68 -0
- package/dist/lint/audit-catalog.js +61 -0
- package/dist/lint/audit-lineage.js +118 -0
- package/dist/lint/post-synth/argo-helpers.js +36 -0
- package/dist/lint/post-synth/argo002.js +31 -0
- package/dist/lint/post-synth/argo003.js +53 -0
- package/dist/lint/post-synth/argo005.js +54 -0
- package/dist/lint/post-synth/crd-schema-helpers.d.ts.map +1 -1
- package/dist/lint/post-synth/crd-schema-helpers.js +214 -0
- package/dist/lint/post-synth/flux002.js +56 -0
- package/dist/lint/post-synth/flux003.js +50 -0
- package/dist/lint/post-synth/index.js +104 -0
- package/dist/lint/post-synth/k8s-helpers.js +186 -0
- package/dist/lint/post-synth/monitoring-selection-helpers.js +163 -0
- package/dist/lint/post-synth/otel-placement-helpers.js +293 -0
- package/dist/lint/post-synth/sops-helpers.js +43 -0
- package/dist/lint/post-synth/wk8005.js +44 -0
- package/dist/lint/post-synth/wk8006.js +56 -0
- package/dist/lint/post-synth/wk8041.js +60 -0
- package/dist/lint/post-synth/wk8042.js +36 -0
- package/dist/lint/post-synth/wk8101.js +52 -0
- package/dist/lint/post-synth/wk8102.js +30 -0
- package/dist/lint/post-synth/wk8103.js +33 -0
- package/dist/lint/post-synth/wk8104.js +58 -0
- package/dist/lint/post-synth/wk8105.js +33 -0
- package/dist/lint/post-synth/wk8201.js +44 -0
- package/dist/lint/post-synth/wk8202.js +34 -0
- package/dist/lint/post-synth/wk8203.js +34 -0
- package/dist/lint/post-synth/wk8204.js +71 -0
- package/dist/lint/post-synth/wk8205.js +38 -0
- package/dist/lint/post-synth/wk8207.js +33 -0
- package/dist/lint/post-synth/wk8208.js +33 -0
- package/dist/lint/post-synth/wk8209.js +33 -0
- package/dist/lint/post-synth/wk8301.js +49 -0
- package/dist/lint/post-synth/wk8302.js +34 -0
- package/dist/lint/post-synth/wk8303.js +68 -0
- package/dist/lint/post-synth/wk8304.js +58 -0
- package/dist/lint/post-synth/wk8305.js +96 -0
- package/dist/lint/post-synth/wk8306.js +38 -0
- package/dist/lint/post-synth/wk8401.js +86 -0
- package/dist/lint/post-synth/wk8402.js +31 -0
- package/dist/lint/post-synth/wk8403.js +49 -0
- package/dist/lint/post-synth/wk8404.js +36 -0
- package/dist/lint/post-synth/wk8405.js +65 -0
- package/dist/lint/post-synth/wk8406.js +50 -0
- package/dist/lint/post-synth/wk8407.js +58 -0
- package/dist/lint/post-synth/wk8501.js +36 -0
- package/dist/lint/post-synth/wk8502.js +35 -0
- package/dist/lint/post-synth/wk8503.js +164 -0
- package/dist/lint/post-synth/wk8504.js +20 -0
- package/dist/lint/post-synth/wk8505.js +31 -0
- package/dist/lint/post-synth/wk8601.js +40 -0
- package/dist/lint/post-synth/wk8602.js +120 -0
- package/dist/lint/post-synth/wk8603.js +63 -0
- package/dist/lint/post-synth/wk8604.js +31 -0
- package/dist/lint/post-synth/wk8605.js +124 -0
- package/dist/lint/post-synth/wk8606.js +22 -0
- package/dist/lint/post-synth/wk8701.js +31 -0
- package/dist/lint/post-synth/wk8702.js +37 -0
- package/dist/lint/post-synth/wk8703.js +31 -0
- package/dist/lint/post-synth/wk8704.js +135 -0
- package/dist/lint/post-synth/wk8705.js +38 -0
- package/dist/lint/rules/argo-appset-single-project.js +56 -0
- package/dist/lint/rules/argo-ast.js +94 -0
- package/dist/lint/rules/argo-automated-prune.js +59 -0
- package/dist/lint/rules/flux-source-ref-pin.js +44 -0
- package/dist/lint/rules/hardcoded-namespace.js +57 -0
- package/dist/lint/rules/latest-image-tag.js +103 -0
- package/dist/lint/rules/missing-resource-limits.js +85 -0
- package/dist/lsp/completions.d.ts.map +1 -1
- package/dist/lsp/completions.js +18 -0
- package/dist/lsp/hover.d.ts.map +1 -1
- package/dist/lsp/hover.js +57 -0
- package/dist/manifest-entity.js +71 -0
- package/dist/manifest.json +1 -1
- package/dist/micro-time.js +49 -0
- package/dist/op/activities/apply-diff.d.ts +31 -0
- package/dist/op/activities/apply-diff.d.ts.map +1 -0
- package/dist/op/activities/apply-diff.js +79 -0
- package/dist/op/activities/argo.js +98 -0
- package/dist/op/activities/ensure-secret.js +38 -0
- package/dist/op/activities/index.js +51 -0
- package/dist/op/activities/kubectl.d.ts +64 -0
- package/dist/op/activities/kubectl.d.ts.map +1 -1
- package/dist/op/activities/kubectl.js +517 -0
- package/dist/op/activities/wait-for-ready.js +229 -0
- package/dist/op/builders.js +68 -0
- package/dist/package-cli.js +21 -0
- package/dist/patch/json-patch.js +187 -0
- package/dist/patch/rendered-patch.js +94 -0
- package/dist/plugin.js +741 -0
- package/dist/project-kinds.js +56 -0
- package/dist/receipt-store.js +216 -0
- package/dist/rules/crd-schema-helpers.ts +2 -1
- package/dist/secret-labels.js +33 -0
- package/dist/secret-store.js +116 -0
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +578 -0
- package/dist/sops/encrypted-secret-file.js +194 -0
- package/dist/sops/entity.js +32 -0
- package/dist/spec/fetch.js +58 -0
- package/dist/spec/parse.js +622 -0
- package/dist/subscribe-changes.js +168 -0
- package/dist/teardown.js +197 -0
- package/dist/telemetry-release.js +86 -0
- package/dist/validate-cli.js +17 -0
- package/dist/validate.js +47 -0
- package/dist/variables.js +34 -0
- package/dist/whoami.js +109 -0
- package/package.json +12 -12
- package/src/api/operation-surface.ts +2 -1
- package/src/codegen/package.ts +2 -2
- package/src/components/index.ts +3 -0
- package/src/components/kubectl-apply-plan.k3d.e2e.test.ts +127 -0
- package/src/components/kubectl-apply.test.ts +262 -0
- package/src/components/kubectl-apply.ts +341 -12
- package/src/deep-observe-hooks.ts +2 -2
- package/src/import/roundtrip-build.test.ts +46 -0
- package/src/lint/post-synth/crd-schema-helpers.ts +2 -1
- package/src/lsp/completions.ts +2 -1
- package/src/lsp/hover.ts +2 -1
- package/src/op/activities/apply-diff.ts +87 -0
- package/src/op/activities/kubectl-plan.test.ts +224 -0
- package/src/op/activities/kubectl.ts +204 -16
- package/src/serializer.ts +2 -1
|
@@ -0,0 +1,615 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Third-party CRD sources included in k8s lexicon generation.
|
|
3
|
+
*
|
|
4
|
+
* Add entries here to have CRDs fetched and code-generated alongside
|
|
5
|
+
* the core Kubernetes OpenAPI types. The CRD YAML is fetched at
|
|
6
|
+
* generation time (npm run generate) and baked into the output.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* KubeRay operator CRDs — ray.io/v1
|
|
10
|
+
*
|
|
11
|
+
* Produces:
|
|
12
|
+
* K8s::Ray::RayCluster → apiVersion: ray.io/v1, kind: RayCluster
|
|
13
|
+
* K8s::Ray::RayJob → apiVersion: ray.io/v1, kind: RayJob
|
|
14
|
+
* K8s::Ray::RayService → apiVersion: ray.io/v1, kind: RayService
|
|
15
|
+
*
|
|
16
|
+
* Operator install: kubectl apply -f
|
|
17
|
+
* https://github.com/ray-project/kuberay/releases/download/v1.3.0/kuberay-operator.yaml
|
|
18
|
+
*/
|
|
19
|
+
const KUBERAY_VERSION = "v1.3.0";
|
|
20
|
+
const KUBERAY_CRD_BASE = `https://raw.githubusercontent.com/ray-project/kuberay/${KUBERAY_VERSION}/helm-chart/kuberay-operator/crds`;
|
|
21
|
+
/**
|
|
22
|
+
* Argo CD CRDs — argoproj.io/v1alpha1
|
|
23
|
+
*
|
|
24
|
+
* Produces (the `argoproj.io` group is mapped to the `Argo` namespace —
|
|
25
|
+
* see GROUP_NAMESPACE_OVERRIDES in group-namespace.ts):
|
|
26
|
+
* K8s::Argo::Application → apiVersion: argoproj.io/v1alpha1, kind: Application
|
|
27
|
+
* K8s::Argo::ApplicationSet → apiVersion: argoproj.io/v1alpha1, kind: ApplicationSet
|
|
28
|
+
* K8s::Argo::AppProject → apiVersion: argoproj.io/v1alpha1, kind: AppProject
|
|
29
|
+
*
|
|
30
|
+
* Operator install: kubectl apply -n argocd -f
|
|
31
|
+
* https://raw.githubusercontent.com/argoproj/argo-cd/v2.13.3/manifests/install.yaml
|
|
32
|
+
*/
|
|
33
|
+
const ARGOCD_VERSION = "v2.13.3";
|
|
34
|
+
const ARGOCD_CRD_BASE = `https://raw.githubusercontent.com/argoproj/argo-cd/${ARGOCD_VERSION}/manifests/crds`;
|
|
35
|
+
/**
|
|
36
|
+
* Gateway API CRDs — gateway.networking.k8s.io (standard channel)
|
|
37
|
+
*
|
|
38
|
+
* The modern, portable replacement for Ingress. GRPCRoute in particular is the
|
|
39
|
+
* native way to express a gRPC route (vs. ingress-controller annotations).
|
|
40
|
+
*
|
|
41
|
+
* Produces (the `gateway.networking.k8s.io` group maps to the `Gateway`
|
|
42
|
+
* namespace via the first-segment rule in crd/parser.ts):
|
|
43
|
+
* K8s::Gateway::GatewayClass → apiVersion: gateway.networking.k8s.io/v1, kind: GatewayClass
|
|
44
|
+
* K8s::Gateway::Gateway → apiVersion: gateway.networking.k8s.io/v1, kind: Gateway
|
|
45
|
+
* K8s::Gateway::HTTPRoute → apiVersion: gateway.networking.k8s.io/v1, kind: HTTPRoute
|
|
46
|
+
* K8s::Gateway::GRPCRoute → apiVersion: gateway.networking.k8s.io/v1, kind: GRPCRoute
|
|
47
|
+
* K8s::Gateway::ReferenceGrant → apiVersion: gateway.networking.k8s.io/v1beta1, kind: ReferenceGrant
|
|
48
|
+
*
|
|
49
|
+
* CRD install: kubectl apply -f
|
|
50
|
+
* https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml
|
|
51
|
+
*/
|
|
52
|
+
const GATEWAY_API_VERSION = "v1.2.1";
|
|
53
|
+
const GATEWAY_API_CRD_BASE = `https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/${GATEWAY_API_VERSION}/config/crd/standard`;
|
|
54
|
+
/**
|
|
55
|
+
* CockroachDB Kubernetes Operator CRD — crdb.cockroachlabs.com/v1alpha1
|
|
56
|
+
*
|
|
57
|
+
* The operator-managed path for a CockroachDB cluster (the operator handles
|
|
58
|
+
* version upgrades, scale-down decommissioning, and cert rotation). Complements
|
|
59
|
+
* the self-managed `CockroachDbCluster` StatefulSet composite.
|
|
60
|
+
*
|
|
61
|
+
* Produces (the `crdb.cockroachlabs.com` group maps to the `Crdb` namespace via
|
|
62
|
+
* the first-segment rule in crd/parser.ts):
|
|
63
|
+
* K8s::Crdb::CrdbCluster → apiVersion: crdb.cockroachlabs.com/v1alpha1, kind: CrdbCluster
|
|
64
|
+
*
|
|
65
|
+
* Operator install: kubectl apply -f
|
|
66
|
+
* https://github.com/cockroachdb/cockroach-operator/releases/download/v2.17.0/install/operator.yaml
|
|
67
|
+
*/
|
|
68
|
+
const COCKROACH_OPERATOR_VERSION = "v2.17.0";
|
|
69
|
+
const COCKROACH_OPERATOR_CRD_BASE = `https://raw.githubusercontent.com/cockroachdb/cockroach-operator/${COCKROACH_OPERATOR_VERSION}/config/crd/bases`;
|
|
70
|
+
/**
|
|
71
|
+
* cert-manager CRDs — cert-manager.io + acme.cert-manager.io
|
|
72
|
+
*
|
|
73
|
+
* The de-facto TLS cert issuance/rotation controller. A single multi-doc bundle
|
|
74
|
+
* (the parser uses loadAll) produces, under the `CertManager` and `Acme`
|
|
75
|
+
* namespaces (first-segment rule; "cert-manager.io" → "CertManager"):
|
|
76
|
+
* K8s::CertManager::Certificate → cert-manager.io/v1
|
|
77
|
+
* K8s::CertManager::CertificateRequest → cert-manager.io/v1
|
|
78
|
+
* K8s::CertManager::Issuer → cert-manager.io/v1
|
|
79
|
+
* K8s::CertManager::ClusterIssuer → cert-manager.io/v1
|
|
80
|
+
* K8s::Acme::Challenge → acme.cert-manager.io/v1
|
|
81
|
+
* K8s::Acme::Order → acme.cert-manager.io/v1
|
|
82
|
+
*
|
|
83
|
+
* Controller install: kubectl apply -f
|
|
84
|
+
* https://github.com/cert-manager/cert-manager/releases/download/v1.16.2/cert-manager.yaml
|
|
85
|
+
*/
|
|
86
|
+
const CERT_MANAGER_VERSION = "v1.16.2";
|
|
87
|
+
const CERT_MANAGER_CRD_BUNDLE = `https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml`;
|
|
88
|
+
/**
|
|
89
|
+
* CloudNativePG CRDs — postgresql.cnpg.io/v1
|
|
90
|
+
*
|
|
91
|
+
* The Postgres operator. Produces, under the `Cnpg` namespace (both groups are
|
|
92
|
+
* mapped there explicitly in parser.ts; the first-segment rule would otherwise
|
|
93
|
+
* split them into `Postgresql` and `Barmancloud`):
|
|
94
|
+
* K8s::Cnpg::Cluster → postgresql.cnpg.io/v1
|
|
95
|
+
* K8s::Cnpg::ScheduledBackup → postgresql.cnpg.io/v1
|
|
96
|
+
* K8s::Cnpg::Backup → postgresql.cnpg.io/v1
|
|
97
|
+
* K8s::Cnpg::Pooler → postgresql.cnpg.io/v1
|
|
98
|
+
*
|
|
99
|
+
* Pinned to 1.29.1 rather than latest (1.30.0) because that is the operator a
|
|
100
|
+
* real consumer runs — BinaryBourbon/fountain's k8s overlay.
|
|
101
|
+
*
|
|
102
|
+
* Note on ScheduledBackup.schedule: it is a **six**-field cron with leading
|
|
103
|
+
* seconds, not the five-field form Kubernetes CronJob takes. The schema types
|
|
104
|
+
* it as a plain string, so a five-field value passes every check here and
|
|
105
|
+
* silently means something else on the cluster.
|
|
106
|
+
*
|
|
107
|
+
* Database, Publication and Subscription are deliberately left out — no known
|
|
108
|
+
* consumer needs them, and pulling a whole provider is what the note at the top
|
|
109
|
+
* of this file warns against.
|
|
110
|
+
*
|
|
111
|
+
* Operator install: kubectl apply --server-side -f
|
|
112
|
+
* https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.29/releases/cnpg-1.29.1.yaml
|
|
113
|
+
*/
|
|
114
|
+
const CNPG_VERSION = "v1.29.1";
|
|
115
|
+
const CNPG_CRD_BASE = `https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/${CNPG_VERSION}/config/crd/bases`;
|
|
116
|
+
/**
|
|
117
|
+
* barman-cloud plugin CRD — barmancloud.cnpg.io/v1
|
|
118
|
+
*
|
|
119
|
+
* CNPG's WAL archiving / object-storage backend, shipped as a separate plugin
|
|
120
|
+
* with its own release train. Produces:
|
|
121
|
+
* K8s::Cnpg::ObjectStore → barmancloud.cnpg.io/v1
|
|
122
|
+
*
|
|
123
|
+
* A CNPG Cluster reaches it through `spec.plugins[]` — `name:
|
|
124
|
+
* barman-cloud.cloudnative-pg.io`, `isWALArchiver: true`,
|
|
125
|
+
* `parameters.barmanObjectName` naming the ObjectStore — so the two are only
|
|
126
|
+
* ever useful together.
|
|
127
|
+
*
|
|
128
|
+
* Pinned to 0.14.0 (latest). Its ObjectStore schema is a superset of 0.7.0's:
|
|
129
|
+
* same four spec properties, more detail inside them.
|
|
130
|
+
*
|
|
131
|
+
* Plugin install: kubectl apply -f
|
|
132
|
+
* https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v0.14.0/manifest.yaml
|
|
133
|
+
*/
|
|
134
|
+
const BARMAN_PLUGIN_VERSION = "v0.14.0";
|
|
135
|
+
const BARMAN_PLUGIN_CRD_BASE = `https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/${BARMAN_PLUGIN_VERSION}/config/crd/bases`;
|
|
136
|
+
/**
|
|
137
|
+
* Traefik proxy CRDs — traefik.io/v1alpha1
|
|
138
|
+
*
|
|
139
|
+
* Traefik's own routing surface. An `IngressRoute` is not a
|
|
140
|
+
* `networking.k8s.io` Ingress with annotations — it is a distinct CRD with its
|
|
141
|
+
* own matcher grammar, so an estate fronted by Traefik has no expressible edge
|
|
142
|
+
* without these. Produces, under the `Traefik` namespace (first-segment rule,
|
|
143
|
+
* no override needed):
|
|
144
|
+
* K8s::Traefik::IngressRoute K8s::Traefik::Middleware
|
|
145
|
+
* K8s::Traefik::IngressRouteTCP K8s::Traefik::MiddlewareTCP
|
|
146
|
+
* K8s::Traefik::IngressRouteUDP K8s::Traefik::ServersTransport
|
|
147
|
+
* K8s::Traefik::TLSOption K8s::Traefik::ServersTransportTCP
|
|
148
|
+
* K8s::Traefik::TLSStore K8s::Traefik::TraefikService
|
|
149
|
+
*
|
|
150
|
+
* Only the `traefik.io` group. The chart's crds/ directory also ships
|
|
151
|
+
* `hub.traefik.io_*` (Traefik Hub, a different commercial product, ~12 kinds,
|
|
152
|
+
* no known consumer) and a vendored copy of the Gateway API, which is already
|
|
153
|
+
* generated here from its upstream repo and would collide.
|
|
154
|
+
*
|
|
155
|
+
* Version footgun: the pin below is the **chart** version, and the chart
|
|
156
|
+
* version is not the Traefik version. Chart v41.1.0 ships Traefik v3.7.9.
|
|
157
|
+
* When bumping, record both.
|
|
158
|
+
*
|
|
159
|
+
* Controller install: helm repo add traefik https://traefik.github.io/charts
|
|
160
|
+
* && helm install traefik traefik/traefik --version 41.1.0
|
|
161
|
+
*/
|
|
162
|
+
const TRAEFIK_CHART_VERSION = "v41.1.0";
|
|
163
|
+
const TRAEFIK_CRD_BASE = `https://raw.githubusercontent.com/traefik/traefik-helm-chart/${TRAEFIK_CHART_VERSION}/traefik/crds`;
|
|
164
|
+
/**
|
|
165
|
+
* Infisical operator CRDs — secrets.infisical.com/v1alpha1
|
|
166
|
+
*
|
|
167
|
+
* The declarative form of chant's own secrets boundary. An `InfisicalSecret`
|
|
168
|
+
* says where a secret comes from and who may fetch it; it never carries a
|
|
169
|
+
* value. Without it an estate can declare the Deployment that consumes a
|
|
170
|
+
* Secret but not the thing that makes the Secret exist. Produces, under the
|
|
171
|
+
* `Infisical` namespace:
|
|
172
|
+
* K8s::Infisical::InfisicalSecret
|
|
173
|
+
* K8s::Infisical::InfisicalPushSecret
|
|
174
|
+
* K8s::Infisical::InfisicalDynamicSecret
|
|
175
|
+
*
|
|
176
|
+
* The group is overridden to `Infisical` in parser.ts. The first-segment rule
|
|
177
|
+
* would give `K8s::Secrets::InfisicalSecret`, which reads like a core Secret
|
|
178
|
+
* next to the `K8s::Core::Secret` that already exists.
|
|
179
|
+
*
|
|
180
|
+
* Two things about the URL, both easy to lose an hour to:
|
|
181
|
+
* - The operator lives in its own repo, `Infisical/kubernetes-operator`.
|
|
182
|
+
* The path under the `Infisical/infisical` monorepo 404s.
|
|
183
|
+
* - The tag is path-shaped — `infisical-k8-operator/v0.11.7`. Not a typo,
|
|
184
|
+
* and not a directory.
|
|
185
|
+
*
|
|
186
|
+
* Operator install: helm repo add infisical https://dl.cloudsmith.io/public/infisical/helm-charts/helm/charts/
|
|
187
|
+
* && helm install infisical-secrets-operator infisical/secrets-operator
|
|
188
|
+
*/
|
|
189
|
+
const INFISICAL_OPERATOR_VERSION = "infisical-k8-operator/v0.11.7";
|
|
190
|
+
const INFISICAL_CRD_BASE = `https://raw.githubusercontent.com/Infisical/kubernetes-operator/${INFISICAL_OPERATOR_VERSION}/config/crd/bases`;
|
|
191
|
+
/**
|
|
192
|
+
* Prometheus Operator CRDs — monitoring.coreos.com/v1 and v1alpha1
|
|
193
|
+
*
|
|
194
|
+
* Produces (the `monitoring.coreos.com` group maps to the `Monitoring`
|
|
195
|
+
* namespace):
|
|
196
|
+
* K8s::Monitoring::ServiceMonitor → apiVersion: monitoring.coreos.com/v1, kind: ServiceMonitor
|
|
197
|
+
* K8s::Monitoring::PrometheusRule → apiVersion: monitoring.coreos.com/v1, kind: PrometheusRule
|
|
198
|
+
* K8s::Monitoring::Prometheus / Alertmanager / PodMonitor / Probe / ThanosRuler
|
|
199
|
+
* → apiVersion: monitoring.coreos.com/v1
|
|
200
|
+
* K8s::Monitoring::PrometheusAgent / AlertmanagerConfig / ScrapeConfig
|
|
201
|
+
* → apiVersion: monitoring.coreos.com/v1alpha1
|
|
202
|
+
*
|
|
203
|
+
* `Probe` is also the core container probe property type, so the CRD class is
|
|
204
|
+
* `MonitoringProbe` (priorityNames in codegen/naming.ts).
|
|
205
|
+
*
|
|
206
|
+
* Operator install: kube-prometheus-stack chart, or
|
|
207
|
+
* https://github.com/prometheus-operator/prometheus-operator
|
|
208
|
+
*/
|
|
209
|
+
const PROM_OPERATOR_VERSION = "v0.94.1";
|
|
210
|
+
const PROM_OPERATOR_CRD_BASE = `https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/${PROM_OPERATOR_VERSION}/example/prometheus-operator-crd`;
|
|
211
|
+
/**
|
|
212
|
+
* Flux GitOps Toolkit CRDs — the five `*.toolkit.fluxcd.io` groups.
|
|
213
|
+
*
|
|
214
|
+
* The flux2 release `install.yaml` is a single multi-doc bundle (controllers,
|
|
215
|
+
* RBAC, and CRDs); the parser keeps only the CustomResourceDefinition docs, and
|
|
216
|
+
* the `kinds` allowlist below narrows those to the supported set — the bundle
|
|
217
|
+
* also carries `ExternalArtifact` and `ArtifactGenerator` (experimental, and a
|
|
218
|
+
* separate `source.extensions.fluxcd.io` group), which are intentionally left
|
|
219
|
+
* out. All groups map to the `Flux` namespace (see GROUP_NAMESPACE_OVERRIDES in
|
|
220
|
+
* group-namespace.ts):
|
|
221
|
+
* K8s::Flux::GitRepository / OCIRepository / HelmRepository / HelmChart / Bucket
|
|
222
|
+
* → source.toolkit.fluxcd.io/v1
|
|
223
|
+
* K8s::Flux::Kustomization → kustomize.toolkit.fluxcd.io/v1
|
|
224
|
+
* K8s::Flux::HelmRelease → helm.toolkit.fluxcd.io/v2
|
|
225
|
+
* K8s::Flux::Provider / Alert → notification.toolkit.fluxcd.io/v1beta3
|
|
226
|
+
* K8s::Flux::Receiver → notification.toolkit.fluxcd.io/v1
|
|
227
|
+
* K8s::Flux::ImagePolicy / ImageRepository / ImageUpdateAutomation
|
|
228
|
+
* → image.toolkit.fluxcd.io/v1
|
|
229
|
+
*
|
|
230
|
+
* Controller install: kubectl apply -f
|
|
231
|
+
* https://github.com/fluxcd/flux2/releases/download/v2.9.1/install.yaml
|
|
232
|
+
*/
|
|
233
|
+
const FLUX_TOOLKIT_VERSION = "v2.9.1";
|
|
234
|
+
const FLUX_TOOLKIT_INSTALL = `https://github.com/fluxcd/flux2/releases/download/${FLUX_TOOLKIT_VERSION}/install.yaml`;
|
|
235
|
+
/**
|
|
236
|
+
* Flux Operator CRDs — fluxcd.controlplane.io/v1
|
|
237
|
+
*
|
|
238
|
+
* The operator that installs and manages a Flux instance declaratively. Its
|
|
239
|
+
* release `install.yaml` bundles the four CRDs alongside the operator
|
|
240
|
+
* Deployment/RBAC; the parser keeps only the CRDs. They map to the `Flux`
|
|
241
|
+
* namespace (GROUP_NAMESPACE_OVERRIDES):
|
|
242
|
+
* K8s::Flux::FluxInstance → fluxcd.controlplane.io/v1
|
|
243
|
+
* K8s::Flux::FluxReport → fluxcd.controlplane.io/v1
|
|
244
|
+
* K8s::Flux::ResourceSet → fluxcd.controlplane.io/v1
|
|
245
|
+
* K8s::Flux::ResourceSetInputProvider → fluxcd.controlplane.io/v1
|
|
246
|
+
*
|
|
247
|
+
* Operator install: kubectl apply -f
|
|
248
|
+
* https://github.com/controlplaneio-fluxcd/flux-operator/releases/download/v0.54.1/install.yaml
|
|
249
|
+
*/
|
|
250
|
+
const FLUX_OPERATOR_VERSION = "v0.54.1";
|
|
251
|
+
const FLUX_OPERATOR_INSTALL = `https://github.com/controlplaneio-fluxcd/flux-operator/releases/download/${FLUX_OPERATOR_VERSION}/install.yaml`;
|
|
252
|
+
/**
|
|
253
|
+
* KubeMicroVM CRDs — lambda.aws.amazon.com/v1alpha1
|
|
254
|
+
*
|
|
255
|
+
* Produces (the group is mapped to the `KubeMicroVM` namespace — see
|
|
256
|
+
* GROUP_NAMESPACE_OVERRIDES in group-namespace.ts):
|
|
257
|
+
* K8s::KubeMicroVM::MicroVM → kind: MicroVM
|
|
258
|
+
* K8s::KubeMicroVM::MicroVMImage → kind: MicroVMImage
|
|
259
|
+
* K8s::KubeMicroVM::MicroVMNetwork → kind: MicroVMNetwork
|
|
260
|
+
* K8s::KubeMicroVM::MicroVMClass → kind: MicroVMClass
|
|
261
|
+
* K8s::KubeMicroVM::MicroVMReplicaSet → kind: MicroVMReplicaSet
|
|
262
|
+
*
|
|
263
|
+
* Sourced from the chart rather than a raw URL: the operator is built with
|
|
264
|
+
* the Java operator SDK, which generates CRDs at build time, and only
|
|
265
|
+
* `microvmclasses` is committed to their repo. All five are in the published
|
|
266
|
+
* chart.
|
|
267
|
+
*
|
|
268
|
+
* Operator install: helm install kube-microvm-operator
|
|
269
|
+
* oci://ghcr.io/codriverlabs/helm/kube-microvm-operator --version 1.0.11
|
|
270
|
+
*/
|
|
271
|
+
const KUBEMICROVM_CHART = "oci://ghcr.io/codriverlabs/helm/kube-microvm-operator";
|
|
272
|
+
const KUBEMICROVM_VERSION = "1.0.11";
|
|
273
|
+
// The chart layer of 1.0.11 on ghcr.io, so a re-pushed tag cannot change generated output.
|
|
274
|
+
const KUBEMICROVM_CHART_DIGEST = "sha256:b15570736277f69bc69bc6bd1d6b89470404b8bbd45970b7dcb29ca9ab69170c";
|
|
275
|
+
/**
|
|
276
|
+
* k3s bundled-controller CRDs — helm.cattle.io/v1 + k3s.cattle.io/v1
|
|
277
|
+
*
|
|
278
|
+
* k3s's manifest auto-deploy machinery speaks these CRDs: drop a HelmChart
|
|
279
|
+
* into /var/lib/rancher/k3s/server/manifests and the embedded helm-controller
|
|
280
|
+
* installs the chart; every auto-deployed manifest is tracked by an Addon.
|
|
281
|
+
* Typed here for the same reason the Flux toolkit kinds are — they are what a
|
|
282
|
+
* k3s estate's GitOps surface is written in.
|
|
283
|
+
*
|
|
284
|
+
* Produces (both groups map to the `K3s` namespace — see
|
|
285
|
+
* GROUP_NAMESPACE_OVERRIDES in group-namespace.ts):
|
|
286
|
+
* K8s::K3s::HelmChart → apiVersion: helm.cattle.io/v1, kind: HelmChart
|
|
287
|
+
* K8s::K3s::HelmChartConfig → apiVersion: helm.cattle.io/v1, kind: HelmChartConfig
|
|
288
|
+
* K8s::K3s::Addon → apiVersion: k3s.cattle.io/v1, kind: Addon
|
|
289
|
+
*
|
|
290
|
+
* The pin is k3s v1.36.3+k3s1 (the release the k3s lexicon pins), but the k3s
|
|
291
|
+
* repo itself publishes no CRD YAMLs — its manifests/ directory carries only
|
|
292
|
+
* the bundled charts, and the API types live in dependency repos. The URLs
|
|
293
|
+
* below point at the exact versions that release vendors in its go.mod:
|
|
294
|
+
* github.com/k3s-io/helm-controller v0.17.7 (helm.cattle.io CRDs)
|
|
295
|
+
* github.com/k3s-io/api v0.1.4 (k3s.cattle.io CRDs)
|
|
296
|
+
* When bumping, re-read go.mod at the new k3s tag and move both pins together.
|
|
297
|
+
*
|
|
298
|
+
* k3s-io/api also ships an ETCDSnapshotFile CRD — deliberately left out. It is
|
|
299
|
+
* status-only controller bookkeeping (the server writes them to describe
|
|
300
|
+
* snapshots it took); nothing an author would declare.
|
|
301
|
+
*
|
|
302
|
+
* Controller install: none — both controllers are embedded in the k3s binary.
|
|
303
|
+
*/
|
|
304
|
+
const K3S_HELM_CONTROLLER_VERSION = "v0.17.7"; // vendored by k3s v1.36.3+k3s1
|
|
305
|
+
const K3S_API_VERSION = "v0.1.4"; // vendored by k3s v1.36.3+k3s1
|
|
306
|
+
const K3S_HELM_CONTROLLER_CRD_BASE = `https://raw.githubusercontent.com/k3s-io/helm-controller/${K3S_HELM_CONTROLLER_VERSION}/pkg/crds/yaml/generated`;
|
|
307
|
+
const K3S_API_CRD_BASE = `https://raw.githubusercontent.com/k3s-io/api/${K3S_API_VERSION}/pkg/crds/yaml/generated`;
|
|
308
|
+
/**
|
|
309
|
+
* KServe CRDs — serving.kserve.io
|
|
310
|
+
*
|
|
311
|
+
* The model-serving control plane chant #982 builds vLLM composites on top
|
|
312
|
+
* of. Produces (the `serving.kserve.io` group maps to the `KServe` namespace
|
|
313
|
+
* — see GROUP_NAMESPACE_OVERRIDES in group-namespace.ts; the first-segment
|
|
314
|
+
* rule would otherwise give `K8s::Serving::*`):
|
|
315
|
+
* K8s::KServe::InferenceService → serving.kserve.io/v1beta1, kind: InferenceService
|
|
316
|
+
* K8s::KServe::ServingRuntime → serving.kserve.io/v1alpha1, kind: ServingRuntime
|
|
317
|
+
* K8s::KServe::ClusterServingRuntime → serving.kserve.io/v1alpha1, kind: ClusterServingRuntime
|
|
318
|
+
*
|
|
319
|
+
* Sourced from `config/crd/full`, not `config/crd/minimal` — `full` is what
|
|
320
|
+
* the release's own kustomization.yaml (and `kubectl apply -k config/crd`)
|
|
321
|
+
* actually installs; `minimal` is a stripped, non-validating variant with no
|
|
322
|
+
* OpenAPI schema to speak of. `full`'s InferenceService schema is the entire
|
|
323
|
+
* spec-true predictor/transformer/explainer union (~1MB of YAML) — see
|
|
324
|
+
* schemaPatches in codegen/patches.ts if generation trips on its recursion
|
|
325
|
+
* depth.
|
|
326
|
+
*
|
|
327
|
+
* Pinned to the last patch of the 0.15 line rather than latest (0.20.0,
|
|
328
|
+
* weeks old at pin time) — a release that's had over a year to settle,
|
|
329
|
+
* matching the CNPG precedent above of tracking what a real operator runs
|
|
330
|
+
* rather than the newest tag.
|
|
331
|
+
*
|
|
332
|
+
* Operator install: kubectl apply --server-side -k
|
|
333
|
+
* "github.com/kserve/kserve/config/default?ref=v0.15.2"
|
|
334
|
+
*/
|
|
335
|
+
const KSERVE_VERSION = "v0.15.2";
|
|
336
|
+
const KSERVE_CRD_BASE = `https://raw.githubusercontent.com/kserve/kserve/${KSERVE_VERSION}/config/crd/full`;
|
|
337
|
+
/**
|
|
338
|
+
* Cluster API (CAPI) core CRDs — cluster.x-k8s.io/v1beta2
|
|
339
|
+
*
|
|
340
|
+
* The provider-agnostic cluster-lifecycle surface CAPA, CAAPH, and every
|
|
341
|
+
* other CAPI provider build on. Only the two kinds a project actually
|
|
342
|
+
* declares are taken; `ClusterClass`, `MachineDeployment`, `MachineSet`,
|
|
343
|
+
* `MachineHealthCheck`, `MachineDrainRule`, the `ipam.cluster.x-k8s.io` pair,
|
|
344
|
+
* and `ExtensionConfig` are deliberately left out (the scale note at the top
|
|
345
|
+
* of this file: add the kinds a project uses). `ClusterResourceSet`, CAPI
|
|
346
|
+
* core's other addons.cluster.x-k8s.io kind, is a separate source below —
|
|
347
|
+
* see the CAAPH block for why it's grouped there. Produces (the group takes
|
|
348
|
+
* the `CAPI` override — see GROUP_NAMESPACE_OVERRIDES in group-namespace.ts,
|
|
349
|
+
* which avoids the `K8s::Cluster::Cluster` stutter):
|
|
350
|
+
* K8s::CAPI::Cluster → cluster.x-k8s.io/v1beta2, kind: Cluster
|
|
351
|
+
* K8s::CAPI::MachinePool → cluster.x-k8s.io/v1beta2, kind: MachinePool
|
|
352
|
+
*
|
|
353
|
+
* Controller install: kubectl apply -f
|
|
354
|
+
* https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.14.0/cluster-api-components.yaml
|
|
355
|
+
*/
|
|
356
|
+
const CAPI_VERSION = "v1.14.0";
|
|
357
|
+
const CAPI_CRD_BASE = `https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/${CAPI_VERSION}/core/config/crd/bases`;
|
|
358
|
+
/**
|
|
359
|
+
* Cluster API Provider AWS (CAPA) CRDs — infrastructure.cluster.x-k8s.io + controlplane.cluster.x-k8s.io
|
|
360
|
+
*
|
|
361
|
+
* The AWS infrastructure and EKS control-plane providers for CAPI. Produces
|
|
362
|
+
* (first-segment rule, no override — the `AWS` kind prefix already keeps
|
|
363
|
+
* these from reading like anything else in the file):
|
|
364
|
+
* K8s::Infrastructure::AWSManagedCluster → infrastructure.cluster.x-k8s.io/v1beta2
|
|
365
|
+
* K8s::Infrastructure::AWSManagedMachinePool → infrastructure.cluster.x-k8s.io/v1beta2
|
|
366
|
+
* K8s::Infrastructure::AWSClusterControllerIdentity → infrastructure.cluster.x-k8s.io/v1beta2
|
|
367
|
+
* K8s::Controlplane::AWSManagedControlPlane → controlplane.cluster.x-k8s.io/v1beta2
|
|
368
|
+
*
|
|
369
|
+
* Contradicts chant #10's own text: the issue describes AWSManagedControlPlane
|
|
370
|
+
* as an `infrastructure.cluster.x-k8s.io` kind alongside the other three. The
|
|
371
|
+
* shipped CRD (`config/crd/bases/controlplane.cluster.x-k8s.io_awsmanagedcontrolplanes.yaml`
|
|
372
|
+
* in the v2.13.0 tag) puts it under `controlplane.cluster.x-k8s.io` instead —
|
|
373
|
+
* CAPA's EKS control-plane provider is a `controlplane.*` provider like
|
|
374
|
+
* kubeadm's, not an infra one. The parser reads `spec.group` from the fetched
|
|
375
|
+
* CRD document itself (`parseCRDSpec` in `crd/parser.ts`), so the source list
|
|
376
|
+
* below only needs the right URL; the resulting type name follows upstream's
|
|
377
|
+
* actual group, not the issue text's.
|
|
378
|
+
*
|
|
379
|
+
* Operator install: with clusterctl,
|
|
380
|
+
* clusterctl init --infrastructure aws:v2.13.0
|
|
381
|
+
*/
|
|
382
|
+
const CAPA_VERSION = "v2.13.0";
|
|
383
|
+
const CAPA_CRD_BASE = `https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-provider-aws/${CAPA_VERSION}/config/crd/bases`;
|
|
384
|
+
/**
|
|
385
|
+
* Cluster API Addon Provider for Helm (CAAPH) CRD, plus CAPI core's own
|
|
386
|
+
* addon-binding kind — both addons.cluster.x-k8s.io/v1alpha1|v1beta2
|
|
387
|
+
*
|
|
388
|
+
* `HelmChartProxy` is CAAPH's kind — installs a Helm chart across every
|
|
389
|
+
* cluster a label selector matches. `ClusterResourceSet` ships in CAPI
|
|
390
|
+
* core's own `core/` component (same CAPI_VERSION/CAPI_CRD_BASE pin as the
|
|
391
|
+
* `Cluster`/`MachinePool` source above), not a separate provider — it binds
|
|
392
|
+
* a set of raw manifests (ConfigMaps/Secrets) to matching clusters. They're
|
|
393
|
+
* grouped in one source block because both are what the RegionCluster
|
|
394
|
+
* composite's flux-addon wiring needs (chant#11) and both share the
|
|
395
|
+
* `addons.cluster.x-k8s.io` group, so both land under `K8s::Addons::*`:
|
|
396
|
+
* K8s::Addons::HelmChartProxy → addons.cluster.x-k8s.io/v1alpha1, kind: HelmChartProxy
|
|
397
|
+
* K8s::Addons::ClusterResourceSet → addons.cluster.x-k8s.io/v1beta2, kind: ClusterResourceSet
|
|
398
|
+
*
|
|
399
|
+
* `HelmReleaseProxy` (CAAPH's per-cluster status-tracking CR, never authored
|
|
400
|
+
* directly) is deliberately left out.
|
|
401
|
+
*
|
|
402
|
+
* Operator install: with clusterctl,
|
|
403
|
+
* clusterctl init --addon helm:v0.6.4
|
|
404
|
+
*/
|
|
405
|
+
const CAAPH_VERSION = "v0.6.4";
|
|
406
|
+
const CAAPH_CRD_BASE = `https://raw.githubusercontent.com/kubernetes-sigs/cluster-api-addon-provider-helm/${CAAPH_VERSION}/config/crd/bases`;
|
|
407
|
+
/**
|
|
408
|
+
* AWS Controllers for Kubernetes (ACK) — S3 controller CRD — s3.services.k8s.aws/v1alpha1
|
|
409
|
+
*
|
|
410
|
+
* Each ACK service controller is its own release train with its own CRDs, so
|
|
411
|
+
* (per the docs' "add the specific kinds a project uses" guidance, and
|
|
412
|
+
* matching how the ACK IAM group below stays split from EKS/RDS/S3) it is
|
|
413
|
+
* its own scoped source rather than one entry per AWS "provider". Produces:
|
|
414
|
+
* K8s::S3::Bucket → s3.services.k8s.aws/v1alpha1, kind: Bucket
|
|
415
|
+
*
|
|
416
|
+
* Controller install: helm install ack-s3-controller
|
|
417
|
+
* oci://public.ecr.aws/aws-controllers-k8s/s3-chart --version 1.10.0
|
|
418
|
+
*/
|
|
419
|
+
const ACK_S3_VERSION = "v1.10.0";
|
|
420
|
+
const ACK_S3_CRD_BASE = `https://raw.githubusercontent.com/aws-controllers-k8s/s3-controller/${ACK_S3_VERSION}/config/crd/bases`;
|
|
421
|
+
/**
|
|
422
|
+
* ACK RDS controller CRD — rds.services.k8s.aws/v1alpha1
|
|
423
|
+
*
|
|
424
|
+
* Only `DBInstance` — the standalone-instance kind a project provisions
|
|
425
|
+
* directly. `DBCluster` and its endpoint/parameter-group/snapshot satellites
|
|
426
|
+
* are left out (no known consumer; add them when one shows up). Produces:
|
|
427
|
+
* K8s::Rds::DBInstance → rds.services.k8s.aws/v1alpha1, kind: DBInstance
|
|
428
|
+
*
|
|
429
|
+
* Controller install: helm install ack-rds-controller
|
|
430
|
+
* oci://public.ecr.aws/aws-controllers-k8s/rds-chart --version 1.11.1
|
|
431
|
+
*/
|
|
432
|
+
const ACK_RDS_VERSION = "v1.11.1";
|
|
433
|
+
const ACK_RDS_CRD_BASE = `https://raw.githubusercontent.com/aws-controllers-k8s/rds-controller/${ACK_RDS_VERSION}/config/crd/bases`;
|
|
434
|
+
/**
|
|
435
|
+
* ACK IAM controller CRDs — iam.services.k8s.aws/v1alpha1
|
|
436
|
+
*
|
|
437
|
+
* `Role`, `User`, `Policy` — the three IAM primitives a cluster workload
|
|
438
|
+
* needing AWS access declares (a Role's trust policy, a User's access keys,
|
|
439
|
+
* a Policy document attached to either). `Group`, `InstanceProfile`,
|
|
440
|
+
* `OpenIDConnectProvider`, and `ServiceLinkedRole` are left out. Produces:
|
|
441
|
+
* K8s::Iam::Role → iam.services.k8s.aws/v1alpha1, kind: Role
|
|
442
|
+
* K8s::Iam::User → iam.services.k8s.aws/v1alpha1, kind: User
|
|
443
|
+
* K8s::Iam::Policy → iam.services.k8s.aws/v1alpha1, kind: Policy
|
|
444
|
+
*
|
|
445
|
+
* Controller install: helm install ack-iam-controller
|
|
446
|
+
* oci://public.ecr.aws/aws-controllers-k8s/iam-chart --version 1.8.1
|
|
447
|
+
*/
|
|
448
|
+
const ACK_IAM_VERSION = "v1.8.1";
|
|
449
|
+
const ACK_IAM_CRD_BASE = `https://raw.githubusercontent.com/aws-controllers-k8s/iam-controller/${ACK_IAM_VERSION}/config/crd/bases`;
|
|
450
|
+
/**
|
|
451
|
+
* ACK EKS controller CRD — eks.services.k8s.aws/v1alpha1
|
|
452
|
+
*
|
|
453
|
+
* Only `PodIdentityAssociation` — EKS Pod Identity is the modern replacement
|
|
454
|
+
* for IRSA, and the ACK-managed way to bind a Kubernetes ServiceAccount to
|
|
455
|
+
* an IAM role without a webhook. `Cluster`, `Addon`, `Nodegroup`,
|
|
456
|
+
* `FargateProfile`, `AccessEntry`, `IdentityProviderConfig`, and
|
|
457
|
+
* `Capability` are left out (this k8s lexicon doesn't provision the EKS
|
|
458
|
+
* cluster itself). Produces:
|
|
459
|
+
* K8s::Eks::PodIdentityAssociation → eks.services.k8s.aws/v1alpha1, kind: PodIdentityAssociation
|
|
460
|
+
*
|
|
461
|
+
* Controller install: helm install ack-eks-controller
|
|
462
|
+
* oci://public.ecr.aws/aws-controllers-k8s/eks-chart --version 1.20.0
|
|
463
|
+
*/
|
|
464
|
+
const ACK_EKS_VERSION = "v1.20.0";
|
|
465
|
+
const ACK_EKS_CRD_BASE = `https://raw.githubusercontent.com/aws-controllers-k8s/eks-controller/${ACK_EKS_VERSION}/config/crd/bases`;
|
|
466
|
+
/**
|
|
467
|
+
* Grafana Operator CRDs — grafana.integreatly.org/v1beta1
|
|
468
|
+
*
|
|
469
|
+
* The delivery path for a Grafana the Grafana Operator runs, used by
|
|
470
|
+
* `GrafanaOperatorResources` in `@intentius/chant-lexicon-grafana/k8s`
|
|
471
|
+
* (#3015). Produces (the `grafana.integreatly.org` group maps to the
|
|
472
|
+
* `Grafana` namespace via the first-segment rule):
|
|
473
|
+
* K8s::Grafana::GrafanaDashboard → grafana.integreatly.org/v1beta1, kind: GrafanaDashboard
|
|
474
|
+
* K8s::Grafana::GrafanaDatasource → grafana.integreatly.org/v1beta1, kind: GrafanaDatasource
|
|
475
|
+
* K8s::Grafana::GrafanaFolder → grafana.integreatly.org/v1beta1, kind: GrafanaFolder
|
|
476
|
+
* K8s::Grafana::GrafanaLibraryPanel → grafana.integreatly.org/v1beta1, kind: GrafanaLibraryPanel
|
|
477
|
+
* K8s::Grafana::GrafanaAlertRuleGroup, GrafanaContactPoint, GrafanaNotificationPolicy,
|
|
478
|
+
* GrafanaNotificationPolicyRoute, GrafanaMuteTiming, GrafanaNotificationTemplate
|
|
479
|
+
* → grafana.integreatly.org/v1beta1, the alerting kinds (#3156)
|
|
480
|
+
*
|
|
481
|
+
* The operator's other kinds (Grafana itself, service accounts, manifests)
|
|
482
|
+
* are left out until something uses them.
|
|
483
|
+
*
|
|
484
|
+
* Operator install: kubectl apply --server-side -f
|
|
485
|
+
* https://github.com/grafana/grafana-operator/releases/download/v5.25.0/kustomize-cluster_scoped.yaml
|
|
486
|
+
*/
|
|
487
|
+
const GRAFANA_OPERATOR_VERSION = "v5.25.0";
|
|
488
|
+
const GRAFANA_OPERATOR_CRD_BASE = `https://raw.githubusercontent.com/grafana/grafana-operator/${GRAFANA_OPERATOR_VERSION}/config/crd/bases`;
|
|
489
|
+
/**
|
|
490
|
+
* OpenTelemetry Operator CRDs — opentelemetry.io (#3367)
|
|
491
|
+
*
|
|
492
|
+
* The `opentelemetry.io` group is mapped to the `OpenTelemetry` namespace (see
|
|
493
|
+
* GROUP_NAMESPACE_OVERRIDES in group-namespace.ts). Each CRD is generated at
|
|
494
|
+
* its storage version:
|
|
495
|
+
* K8s::OpenTelemetry::OpenTelemetryCollector → opentelemetry.io/v1beta1 (spec.config is a structured object)
|
|
496
|
+
* K8s::OpenTelemetry::Instrumentation → opentelemetry.io/v1alpha1
|
|
497
|
+
* K8s::OpenTelemetry::TargetAllocator → opentelemetry.io/v1alpha1
|
|
498
|
+
* K8s::OpenTelemetry::OpAMPBridge → opentelemetry.io/v1alpha1
|
|
499
|
+
* K8s::OpenTelemetry::ClusterObservability → opentelemetry.io/v1alpha1 (new in v0.160.0: one CR that
|
|
500
|
+
* sets up the operator's collectors and instrumentation cluster-wide)
|
|
501
|
+
*
|
|
502
|
+
* Operator install: kubectl apply -f
|
|
503
|
+
* https://github.com/open-telemetry/opentelemetry-operator/releases/download/v0.160.0/opentelemetry-operator.yaml
|
|
504
|
+
*/
|
|
505
|
+
const OTEL_OPERATOR_VERSION = "v0.160.0";
|
|
506
|
+
const OTEL_OPERATOR_CRD_BASE = `https://raw.githubusercontent.com/open-telemetry/opentelemetry-operator/${OTEL_OPERATOR_VERSION}/config/crd/bases`;
|
|
507
|
+
export const CRD_SOURCES = [
|
|
508
|
+
{ type: "url", url: `${KUBERAY_CRD_BASE}/ray.io_rayclusters.yaml` },
|
|
509
|
+
{ type: "url", url: `${KUBERAY_CRD_BASE}/ray.io_rayjobs.yaml` },
|
|
510
|
+
{ type: "url", url: `${KUBERAY_CRD_BASE}/ray.io_rayservices.yaml` },
|
|
511
|
+
{ type: "url", url: `${ARGOCD_CRD_BASE}/application-crd.yaml` },
|
|
512
|
+
{ type: "url", url: `${ARGOCD_CRD_BASE}/applicationset-crd.yaml` },
|
|
513
|
+
{ type: "url", url: `${ARGOCD_CRD_BASE}/appproject-crd.yaml` },
|
|
514
|
+
{ type: "url", url: `${GATEWAY_API_CRD_BASE}/gateway.networking.k8s.io_gatewayclasses.yaml` },
|
|
515
|
+
{ type: "url", url: `${GATEWAY_API_CRD_BASE}/gateway.networking.k8s.io_gateways.yaml` },
|
|
516
|
+
{ type: "url", url: `${GATEWAY_API_CRD_BASE}/gateway.networking.k8s.io_httproutes.yaml` },
|
|
517
|
+
{ type: "url", url: `${GATEWAY_API_CRD_BASE}/gateway.networking.k8s.io_grpcroutes.yaml` },
|
|
518
|
+
{ type: "url", url: `${GATEWAY_API_CRD_BASE}/gateway.networking.k8s.io_referencegrants.yaml` },
|
|
519
|
+
{ type: "url", url: `${COCKROACH_OPERATOR_CRD_BASE}/crdb.cockroachlabs.com_crdbclusters.yaml` },
|
|
520
|
+
{ type: "url", url: CERT_MANAGER_CRD_BUNDLE },
|
|
521
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_servicemonitors.yaml` },
|
|
522
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_prometheusrules.yaml` },
|
|
523
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_prometheuses.yaml` },
|
|
524
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_alertmanagers.yaml` },
|
|
525
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_podmonitors.yaml` },
|
|
526
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_probes.yaml` },
|
|
527
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_thanosrulers.yaml` },
|
|
528
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_prometheusagents.yaml` },
|
|
529
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_alertmanagerconfigs.yaml` },
|
|
530
|
+
{ type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_scrapeconfigs.yaml` },
|
|
531
|
+
{ type: "url", url: `${CNPG_CRD_BASE}/postgresql.cnpg.io_clusters.yaml` },
|
|
532
|
+
{ type: "url", url: `${CNPG_CRD_BASE}/postgresql.cnpg.io_scheduledbackups.yaml` },
|
|
533
|
+
{ type: "url", url: `${CNPG_CRD_BASE}/postgresql.cnpg.io_backups.yaml` },
|
|
534
|
+
{ type: "url", url: `${CNPG_CRD_BASE}/postgresql.cnpg.io_poolers.yaml` },
|
|
535
|
+
{ type: "url", url: `${BARMAN_PLUGIN_CRD_BASE}/barmancloud.cnpg.io_objectstores.yaml` },
|
|
536
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_ingressroutes.yaml` },
|
|
537
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_ingressroutetcps.yaml` },
|
|
538
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_ingressrouteudps.yaml` },
|
|
539
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_middlewares.yaml` },
|
|
540
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_middlewaretcps.yaml` },
|
|
541
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_serverstransports.yaml` },
|
|
542
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_serverstransporttcps.yaml` },
|
|
543
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_tlsoptions.yaml` },
|
|
544
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_tlsstores.yaml` },
|
|
545
|
+
{ type: "url", url: `${TRAEFIK_CRD_BASE}/traefik.io_traefikservices.yaml` },
|
|
546
|
+
{ type: "url", url: `${INFISICAL_CRD_BASE}/secrets.infisical.com_infisicalsecrets.yaml` },
|
|
547
|
+
{ type: "url", url: `${INFISICAL_CRD_BASE}/secrets.infisical.com_infisicalpushsecrets.yaml` },
|
|
548
|
+
{ type: "url", url: `${INFISICAL_CRD_BASE}/secrets.infisical.com_infisicaldynamicsecrets.yaml` },
|
|
549
|
+
{
|
|
550
|
+
type: "url",
|
|
551
|
+
url: FLUX_TOOLKIT_INSTALL,
|
|
552
|
+
kinds: [
|
|
553
|
+
"GitRepository",
|
|
554
|
+
"OCIRepository",
|
|
555
|
+
"HelmRepository",
|
|
556
|
+
"HelmChart",
|
|
557
|
+
"Bucket",
|
|
558
|
+
"Kustomization",
|
|
559
|
+
"HelmRelease",
|
|
560
|
+
"Provider",
|
|
561
|
+
"Alert",
|
|
562
|
+
"Receiver",
|
|
563
|
+
"ImagePolicy",
|
|
564
|
+
"ImageRepository",
|
|
565
|
+
"ImageUpdateAutomation",
|
|
566
|
+
],
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
type: "url",
|
|
570
|
+
url: FLUX_OPERATOR_INSTALL,
|
|
571
|
+
kinds: ["FluxInstance", "FluxReport", "ResourceSet", "ResourceSetInputProvider"],
|
|
572
|
+
},
|
|
573
|
+
{ type: "url", url: `${K3S_HELM_CONTROLLER_CRD_BASE}/helm.cattle.io_helmcharts.yaml` },
|
|
574
|
+
{ type: "url", url: `${K3S_HELM_CONTROLLER_CRD_BASE}/helm.cattle.io_helmchartconfigs.yaml` },
|
|
575
|
+
{ type: "url", url: `${K3S_API_CRD_BASE}/k3s.cattle.io_addons.yaml` },
|
|
576
|
+
{
|
|
577
|
+
type: "helm",
|
|
578
|
+
chart: KUBEMICROVM_CHART,
|
|
579
|
+
version: KUBEMICROVM_VERSION,
|
|
580
|
+
digest: KUBEMICROVM_CHART_DIGEST,
|
|
581
|
+
kinds: ["MicroVM", "MicroVMImage", "MicroVMNetwork", "MicroVMClass", "MicroVMReplicaSet"],
|
|
582
|
+
},
|
|
583
|
+
{ type: "url", url: `${KSERVE_CRD_BASE}/serving.kserve.io_inferenceservices.yaml` },
|
|
584
|
+
{ type: "url", url: `${KSERVE_CRD_BASE}/serving.kserve.io_servingruntimes.yaml` },
|
|
585
|
+
{ type: "url", url: `${KSERVE_CRD_BASE}/serving.kserve.io_clusterservingruntimes.yaml` },
|
|
586
|
+
{ type: "url", url: `${CAPI_CRD_BASE}/cluster.x-k8s.io_clusters.yaml` },
|
|
587
|
+
{ type: "url", url: `${CAPI_CRD_BASE}/cluster.x-k8s.io_machinepools.yaml` },
|
|
588
|
+
{ type: "url", url: `${CAPA_CRD_BASE}/controlplane.cluster.x-k8s.io_awsmanagedcontrolplanes.yaml` },
|
|
589
|
+
{ type: "url", url: `${CAPA_CRD_BASE}/infrastructure.cluster.x-k8s.io_awsmanagedclusters.yaml` },
|
|
590
|
+
{ type: "url", url: `${CAPA_CRD_BASE}/infrastructure.cluster.x-k8s.io_awsmanagedmachinepools.yaml` },
|
|
591
|
+
{ type: "url", url: `${CAPA_CRD_BASE}/infrastructure.cluster.x-k8s.io_awsclustercontrolleridentities.yaml` },
|
|
592
|
+
{ type: "url", url: `${CAAPH_CRD_BASE}/addons.cluster.x-k8s.io_helmchartproxies.yaml` },
|
|
593
|
+
{ type: "url", url: `${CAPI_CRD_BASE}/addons.cluster.x-k8s.io_clusterresourcesets.yaml` },
|
|
594
|
+
{ type: "url", url: `${ACK_S3_CRD_BASE}/s3.services.k8s.aws_buckets.yaml` },
|
|
595
|
+
{ type: "url", url: `${ACK_RDS_CRD_BASE}/rds.services.k8s.aws_dbinstances.yaml` },
|
|
596
|
+
{ type: "url", url: `${ACK_IAM_CRD_BASE}/iam.services.k8s.aws_roles.yaml` },
|
|
597
|
+
{ type: "url", url: `${ACK_IAM_CRD_BASE}/iam.services.k8s.aws_users.yaml` },
|
|
598
|
+
{ type: "url", url: `${ACK_IAM_CRD_BASE}/iam.services.k8s.aws_policies.yaml` },
|
|
599
|
+
{ type: "url", url: `${ACK_EKS_CRD_BASE}/eks.services.k8s.aws_podidentityassociations.yaml` },
|
|
600
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafanadashboards.yaml` },
|
|
601
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafanadatasources.yaml` },
|
|
602
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafanafolders.yaml` },
|
|
603
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafanalibrarypanels.yaml` },
|
|
604
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafanaalertrulegroups.yaml` },
|
|
605
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafanacontactpoints.yaml` },
|
|
606
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafananotificationpolicies.yaml` },
|
|
607
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafananotificationpolicyroutes.yaml` },
|
|
608
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafanamutetimings.yaml` },
|
|
609
|
+
{ type: "url", url: `${GRAFANA_OPERATOR_CRD_BASE}/grafana.integreatly.org_grafananotificationtemplates.yaml` },
|
|
610
|
+
{ type: "url", url: `${OTEL_OPERATOR_CRD_BASE}/opentelemetry.io_opentelemetrycollectors.yaml` },
|
|
611
|
+
{ type: "url", url: `${OTEL_OPERATOR_CRD_BASE}/opentelemetry.io_instrumentations.yaml` },
|
|
612
|
+
{ type: "url", url: `${OTEL_OPERATOR_CRD_BASE}/opentelemetry.io_targetallocators.yaml` },
|
|
613
|
+
{ type: "url", url: `${OTEL_OPERATOR_CRD_BASE}/opentelemetry.io_opampbridges.yaml` },
|
|
614
|
+
{ type: "url", url: `${OTEL_OPERATOR_CRD_BASE}/opentelemetry.io_clusterobservabilities.yaml` },
|
|
615
|
+
];
|