@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.
Files changed (270) hide show
  1. package/dist/actions/apps.js +18 -0
  2. package/dist/actions/batch.js +6 -0
  3. package/dist/actions/core.js +48 -0
  4. package/dist/actions/index.js +13 -0
  5. package/dist/actions/networking.js +11 -0
  6. package/dist/actions/rbac.js +8 -0
  7. package/dist/api/classify.js +123 -0
  8. package/dist/api/connect.js +62 -0
  9. package/dist/api/fake-cluster.js +175 -0
  10. package/dist/api/operation-surface.d.ts.map +1 -1
  11. package/dist/api/operation-surface.js +109 -0
  12. package/dist/api/owner-chain.js +100 -0
  13. package/dist/api/sweep-types.js +35 -0
  14. package/dist/behaviour-kinds.js +82 -0
  15. package/dist/codegen/docs-cli.js +2 -0
  16. package/dist/codegen/docs.js +146 -0
  17. package/dist/codegen/generate-cli.js +30 -0
  18. package/dist/codegen/generate-lexicon.js +74 -0
  19. package/dist/codegen/generate-list-map-keys.js +88 -0
  20. package/dist/codegen/generate-operations.js +53 -0
  21. package/dist/codegen/generate-typescript.js +124 -0
  22. package/dist/codegen/generate.js +173 -0
  23. package/dist/codegen/naming.js +174 -0
  24. package/dist/codegen/package.js +36 -0
  25. package/dist/codegen/patches.js +88 -0
  26. package/dist/codegen/typecheck.js +4 -0
  27. package/dist/codegen/versions.js +41 -0
  28. package/dist/components/argo-app.js +51 -0
  29. package/dist/components/builders.js +22 -0
  30. package/dist/components/capability-plugin.js +31 -0
  31. package/dist/components/flux-reconcile.js +61 -0
  32. package/dist/components/index.d.ts +1 -1
  33. package/dist/components/index.d.ts.map +1 -1
  34. package/dist/components/index.js +18 -0
  35. package/dist/components/kubectl-apply.d.ts +83 -1
  36. package/dist/components/kubectl-apply.d.ts.map +1 -1
  37. package/dist/components/kubectl-apply.js +274 -0
  38. package/dist/components/kustomize-apply.js +25 -0
  39. package/dist/composites/adot-collector.js +184 -0
  40. package/dist/composites/agic-ingress.js +85 -0
  41. package/dist/composites/aks-external-dns-agent.js +146 -0
  42. package/dist/composites/alb-ingress.js +86 -0
  43. package/dist/composites/argo-app.js +199 -0
  44. package/dist/composites/autoscaled-service.js +174 -0
  45. package/dist/composites/azure-disk-storage-class.js +47 -0
  46. package/dist/composites/azure-file-storage-class.js +48 -0
  47. package/dist/composites/azure-monitor-collector.js +176 -0
  48. package/dist/composites/batch-job.js +139 -0
  49. package/dist/composites/catalog.js +4110 -0
  50. package/dist/composites/cockroachdb-cluster.js +371 -0
  51. package/dist/composites/cockroachdb-region-stack.js +369 -0
  52. package/dist/composites/config-connector-context.js +40 -0
  53. package/dist/composites/configured-app.js +135 -0
  54. package/dist/composites/cron-schedule.js +38 -0
  55. package/dist/composites/cron-workload.js +109 -0
  56. package/dist/composites/ebs-storage-class.js +54 -0
  57. package/dist/composites/efs-storage-class.js +46 -0
  58. package/dist/composites/external-dns-agent.js +122 -0
  59. package/dist/composites/filestore-storage-class.js +49 -0
  60. package/dist/composites/fluent-bit-agent.js +157 -0
  61. package/dist/composites/flux-app.js +156 -0
  62. package/dist/composites/gce-ingress.js +83 -0
  63. package/dist/composites/gce-pd-storage-class.js +49 -0
  64. package/dist/composites/gke-external-dns-agent.js +129 -0
  65. package/dist/composites/gke-fluent-bit-agent.js +165 -0
  66. package/dist/composites/gke-gateway.js +91 -0
  67. package/dist/composites/gke-otel-collector.js +94 -0
  68. package/dist/composites/index.js +51 -0
  69. package/dist/composites/inference-service.js +76 -0
  70. package/dist/composites/irsa-service-account.js +77 -0
  71. package/dist/composites/member-defaults.js +14 -0
  72. package/dist/composites/metrics-server.js +181 -0
  73. package/dist/composites/model.js +92 -0
  74. package/dist/composites/monitored-service.js +152 -0
  75. package/dist/composites/namespace-env.js +114 -0
  76. package/dist/composites/network-isolated-app.js +124 -0
  77. package/dist/composites/node-agent.js +149 -0
  78. package/dist/composites/operator-stack.js +268 -0
  79. package/dist/composites/otel-collector-agent.js +142 -0
  80. package/dist/composites/otel-collector-gateway.js +216 -0
  81. package/dist/composites/otel-collector-node.js +176 -0
  82. package/dist/composites/otel-collector-rbac.js +115 -0
  83. package/dist/composites/otel-collector-shape.js +128 -0
  84. package/dist/composites/otel-collector.js +115 -0
  85. package/dist/composites/otel-operator-collector.js +123 -0
  86. package/dist/composites/ray-cluster.js +378 -0
  87. package/dist/composites/ray-job.js +136 -0
  88. package/dist/composites/ray-service.js +178 -0
  89. package/dist/composites/secure-ingress.js +100 -0
  90. package/dist/composites/security-context.js +1 -0
  91. package/dist/composites/sidecar-app.js +105 -0
  92. package/dist/composites/stateful-app.js +111 -0
  93. package/dist/composites/vllm-serving-runtime.js +114 -0
  94. package/dist/composites/web-app.js +157 -0
  95. package/dist/composites/worker-pool.js +167 -0
  96. package/dist/composites/workload-identity-sa.js +81 -0
  97. package/dist/composites/workload-identity-service-account.js +77 -0
  98. package/dist/config-schema.js +72 -0
  99. package/dist/config.js +59 -0
  100. package/dist/coverage.js +27 -0
  101. package/dist/crd/crd-sources.js +615 -0
  102. package/dist/crd/loader.js +181 -0
  103. package/dist/crd/oci-chart.js +144 -0
  104. package/dist/crd/parser.js +382 -0
  105. package/dist/crd/project-codegen.js +273 -0
  106. package/dist/crd/types.js +7 -0
  107. package/dist/deep-observe-hooks.js +306 -0
  108. package/dist/deep-observe.js +234 -0
  109. package/dist/default-labels.js +87 -0
  110. package/dist/describe-resources.js +699 -0
  111. package/dist/describe-stack-status.js +99 -0
  112. package/dist/detect.js +11 -0
  113. package/dist/effect-receipt-row.js +205 -0
  114. package/dist/export-resources.js +39 -0
  115. package/dist/generated/index.js +1092 -0
  116. package/dist/generated/runtime.js +4 -0
  117. package/dist/group-namespace.js +96 -0
  118. package/dist/import/embedded.js +197 -0
  119. package/dist/import/generator.js +288 -0
  120. package/dist/import/live-export.js +85 -0
  121. package/dist/import/parser.js +204 -0
  122. package/dist/import/testdata/embedded/fixtures.js +60 -0
  123. package/dist/include/entity.js +78 -0
  124. package/dist/include/resolve.js +170 -0
  125. package/dist/index.js +59 -0
  126. package/dist/integrity.json +3 -3
  127. package/dist/kube/apply.js +90 -0
  128. package/dist/kube/connect.js +46 -0
  129. package/dist/kube/delete.js +138 -0
  130. package/dist/kube/describe.js +169 -0
  131. package/dist/kube/events.js +132 -0
  132. package/dist/kube/flags.js +91 -0
  133. package/dist/kube/get.js +159 -0
  134. package/dist/kube/group.js +123 -0
  135. package/dist/kube/logs.js +82 -0
  136. package/dist/kube/project.js +94 -0
  137. package/dist/kube/render.js +227 -0
  138. package/dist/kube/source.js +122 -0
  139. package/dist/kube/target.js +63 -0
  140. package/dist/kube/testing.js +28 -0
  141. package/dist/kube/top.js +99 -0
  142. package/dist/kube/verdict.js +72 -0
  143. package/dist/kube/wait.js +129 -0
  144. package/dist/kustomize/render.js +73 -0
  145. package/dist/kustomize/rendered-entity.js +67 -0
  146. package/dist/kustomize/root.js +68 -0
  147. package/dist/lint/audit-catalog.js +61 -0
  148. package/dist/lint/audit-lineage.js +118 -0
  149. package/dist/lint/post-synth/argo-helpers.js +36 -0
  150. package/dist/lint/post-synth/argo002.js +31 -0
  151. package/dist/lint/post-synth/argo003.js +53 -0
  152. package/dist/lint/post-synth/argo005.js +54 -0
  153. package/dist/lint/post-synth/crd-schema-helpers.d.ts.map +1 -1
  154. package/dist/lint/post-synth/crd-schema-helpers.js +214 -0
  155. package/dist/lint/post-synth/flux002.js +56 -0
  156. package/dist/lint/post-synth/flux003.js +50 -0
  157. package/dist/lint/post-synth/index.js +104 -0
  158. package/dist/lint/post-synth/k8s-helpers.js +186 -0
  159. package/dist/lint/post-synth/monitoring-selection-helpers.js +163 -0
  160. package/dist/lint/post-synth/otel-placement-helpers.js +293 -0
  161. package/dist/lint/post-synth/sops-helpers.js +43 -0
  162. package/dist/lint/post-synth/wk8005.js +44 -0
  163. package/dist/lint/post-synth/wk8006.js +56 -0
  164. package/dist/lint/post-synth/wk8041.js +60 -0
  165. package/dist/lint/post-synth/wk8042.js +36 -0
  166. package/dist/lint/post-synth/wk8101.js +52 -0
  167. package/dist/lint/post-synth/wk8102.js +30 -0
  168. package/dist/lint/post-synth/wk8103.js +33 -0
  169. package/dist/lint/post-synth/wk8104.js +58 -0
  170. package/dist/lint/post-synth/wk8105.js +33 -0
  171. package/dist/lint/post-synth/wk8201.js +44 -0
  172. package/dist/lint/post-synth/wk8202.js +34 -0
  173. package/dist/lint/post-synth/wk8203.js +34 -0
  174. package/dist/lint/post-synth/wk8204.js +71 -0
  175. package/dist/lint/post-synth/wk8205.js +38 -0
  176. package/dist/lint/post-synth/wk8207.js +33 -0
  177. package/dist/lint/post-synth/wk8208.js +33 -0
  178. package/dist/lint/post-synth/wk8209.js +33 -0
  179. package/dist/lint/post-synth/wk8301.js +49 -0
  180. package/dist/lint/post-synth/wk8302.js +34 -0
  181. package/dist/lint/post-synth/wk8303.js +68 -0
  182. package/dist/lint/post-synth/wk8304.js +58 -0
  183. package/dist/lint/post-synth/wk8305.js +96 -0
  184. package/dist/lint/post-synth/wk8306.js +38 -0
  185. package/dist/lint/post-synth/wk8401.js +86 -0
  186. package/dist/lint/post-synth/wk8402.js +31 -0
  187. package/dist/lint/post-synth/wk8403.js +49 -0
  188. package/dist/lint/post-synth/wk8404.js +36 -0
  189. package/dist/lint/post-synth/wk8405.js +65 -0
  190. package/dist/lint/post-synth/wk8406.js +50 -0
  191. package/dist/lint/post-synth/wk8407.js +58 -0
  192. package/dist/lint/post-synth/wk8501.js +36 -0
  193. package/dist/lint/post-synth/wk8502.js +35 -0
  194. package/dist/lint/post-synth/wk8503.js +164 -0
  195. package/dist/lint/post-synth/wk8504.js +20 -0
  196. package/dist/lint/post-synth/wk8505.js +31 -0
  197. package/dist/lint/post-synth/wk8601.js +40 -0
  198. package/dist/lint/post-synth/wk8602.js +120 -0
  199. package/dist/lint/post-synth/wk8603.js +63 -0
  200. package/dist/lint/post-synth/wk8604.js +31 -0
  201. package/dist/lint/post-synth/wk8605.js +124 -0
  202. package/dist/lint/post-synth/wk8606.js +22 -0
  203. package/dist/lint/post-synth/wk8701.js +31 -0
  204. package/dist/lint/post-synth/wk8702.js +37 -0
  205. package/dist/lint/post-synth/wk8703.js +31 -0
  206. package/dist/lint/post-synth/wk8704.js +135 -0
  207. package/dist/lint/post-synth/wk8705.js +38 -0
  208. package/dist/lint/rules/argo-appset-single-project.js +56 -0
  209. package/dist/lint/rules/argo-ast.js +94 -0
  210. package/dist/lint/rules/argo-automated-prune.js +59 -0
  211. package/dist/lint/rules/flux-source-ref-pin.js +44 -0
  212. package/dist/lint/rules/hardcoded-namespace.js +57 -0
  213. package/dist/lint/rules/latest-image-tag.js +103 -0
  214. package/dist/lint/rules/missing-resource-limits.js +85 -0
  215. package/dist/lsp/completions.d.ts.map +1 -1
  216. package/dist/lsp/completions.js +18 -0
  217. package/dist/lsp/hover.d.ts.map +1 -1
  218. package/dist/lsp/hover.js +57 -0
  219. package/dist/manifest-entity.js +71 -0
  220. package/dist/manifest.json +1 -1
  221. package/dist/micro-time.js +49 -0
  222. package/dist/op/activities/apply-diff.d.ts +31 -0
  223. package/dist/op/activities/apply-diff.d.ts.map +1 -0
  224. package/dist/op/activities/apply-diff.js +79 -0
  225. package/dist/op/activities/argo.js +98 -0
  226. package/dist/op/activities/ensure-secret.js +38 -0
  227. package/dist/op/activities/index.js +51 -0
  228. package/dist/op/activities/kubectl.d.ts +64 -0
  229. package/dist/op/activities/kubectl.d.ts.map +1 -1
  230. package/dist/op/activities/kubectl.js +517 -0
  231. package/dist/op/activities/wait-for-ready.js +229 -0
  232. package/dist/op/builders.js +68 -0
  233. package/dist/package-cli.js +21 -0
  234. package/dist/patch/json-patch.js +187 -0
  235. package/dist/patch/rendered-patch.js +94 -0
  236. package/dist/plugin.js +741 -0
  237. package/dist/project-kinds.js +56 -0
  238. package/dist/receipt-store.js +216 -0
  239. package/dist/rules/crd-schema-helpers.ts +2 -1
  240. package/dist/secret-labels.js +33 -0
  241. package/dist/secret-store.js +116 -0
  242. package/dist/serializer.d.ts.map +1 -1
  243. package/dist/serializer.js +578 -0
  244. package/dist/sops/encrypted-secret-file.js +194 -0
  245. package/dist/sops/entity.js +32 -0
  246. package/dist/spec/fetch.js +58 -0
  247. package/dist/spec/parse.js +622 -0
  248. package/dist/subscribe-changes.js +168 -0
  249. package/dist/teardown.js +197 -0
  250. package/dist/telemetry-release.js +86 -0
  251. package/dist/validate-cli.js +17 -0
  252. package/dist/validate.js +47 -0
  253. package/dist/variables.js +34 -0
  254. package/dist/whoami.js +109 -0
  255. package/package.json +12 -12
  256. package/src/api/operation-surface.ts +2 -1
  257. package/src/codegen/package.ts +2 -2
  258. package/src/components/index.ts +3 -0
  259. package/src/components/kubectl-apply-plan.k3d.e2e.test.ts +127 -0
  260. package/src/components/kubectl-apply.test.ts +262 -0
  261. package/src/components/kubectl-apply.ts +341 -12
  262. package/src/deep-observe-hooks.ts +2 -2
  263. package/src/import/roundtrip-build.test.ts +46 -0
  264. package/src/lint/post-synth/crd-schema-helpers.ts +2 -1
  265. package/src/lsp/completions.ts +2 -1
  266. package/src/lsp/hover.ts +2 -1
  267. package/src/op/activities/apply-diff.ts +87 -0
  268. package/src/op/activities/kubectl-plan.test.ts +224 -0
  269. package/src/op/activities/kubectl.ts +204 -16
  270. 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
+ ];