@intentius/chant-lexicon-k8s 0.5.0 → 0.7.0

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.
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "9374641f828a73946b94c618f4506db09e0572e37c80687d27ec1bd087d46c5b",
5
- "meta.json": "8e9c0279eb8666c8b181897a55f614c7e803fed6fc6cb549249d8f998aa764d2",
6
- "types/index.d.ts": "7eb3017762f49faa57dae1d71f3e77a08e52ac8fc7eeab192cba4e981b7efed6",
4
+ "manifest.json": "06a6c6dd129c63c45760cb3ec4ba5c15982e19cbf46be77c024c286a078a7704",
5
+ "meta.json": "4177925d0043a2879c34e1e871e9ca8f33093999d08fa5fc411ee11086381529",
6
+ "types/index.d.ts": "bf626b2c92e3375a7d93b2c96a8a95a992507a679707b47a35cf6501f32a70bf",
7
7
  "rules/argo-appset-single-project.ts": "afa9f310753aa2d475f35012b13135b2dfaebed2a35d44edbe185ebc07673674",
8
8
  "rules/argo-ast.ts": "f57b7d84fef9c9cd326a7cad0dff290914e01299415d64bdab48e2f6eb4181c3",
9
9
  "rules/argo-automated-prune.ts": "176ac5441c3ccb7106a194abab3abe22fd8a29f976716761c66c243b72d57b14",
@@ -50,5 +50,5 @@
50
50
  "skills/chant-k8s-aks.md": "e18f0e2b055f72cd7a37deaf258d7027c2d4d3e286e8fd4975b27a1f981a3ad9",
51
51
  "skills/chant-k8s-argo.md": "b1a0b826559d8c5033a479c5781efaf650320f0aee4419d8841170bd3393cea5"
52
52
  },
53
- "composite": "180d3f080502a920514bd5170f6e05173aeb9a02475271731b3caa2373a34539"
53
+ "composite": "b83e449c4a6e459187ffa9b6cfde1aae75cae514a50cee72a0086ba2e3a66c9e"
54
54
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k8s",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "chantVersion": ">=0.1.0",
5
5
  "namespace": "K8s",
6
6
  "intrinsics": [],
package/dist/meta.json CHANGED
@@ -187,6 +187,11 @@
187
187
  "kind": "property",
188
188
  "lexicon": "k8s"
189
189
  },
190
+ "AttachMetadata": {
191
+ "resourceType": "K8s::Monitoring::ServiceMonitor.attachMetadata",
192
+ "kind": "property",
193
+ "lexicon": "k8s"
194
+ },
190
195
  "AutoscalerOptions": {
191
196
  "resourceType": "K8s::Ray::RayCluster.autoscalerOptions",
192
197
  "kind": "property",
@@ -655,6 +660,11 @@
655
660
  "apiVersion": "resource.k8s.io/v1beta1",
656
661
  "gvkKind": "DeviceClassList"
657
662
  },
663
+ "Endpoint": {
664
+ "resourceType": "K8s::Monitoring::ServiceMonitor.endpoints",
665
+ "kind": "property",
666
+ "lexicon": "k8s"
667
+ },
658
668
  "EndpointSlice": {
659
669
  "resourceType": "K8s::Discovery::EndpointSlice",
660
670
  "kind": "resource",
@@ -826,6 +836,11 @@
826
836
  "kind": "property",
827
837
  "lexicon": "k8s"
828
838
  },
839
+ "Group": {
840
+ "resourceType": "K8s::Monitoring::PrometheusRule.groups",
841
+ "kind": "property",
842
+ "lexicon": "k8s"
843
+ },
829
844
  "HPA": {
830
845
  "resourceType": "K8s::Autoscaling::HorizontalPodAutoscaler",
831
846
  "kind": "resource",
@@ -1154,6 +1169,11 @@
1154
1169
  "kind": "property",
1155
1170
  "lexicon": "k8s"
1156
1171
  },
1172
+ "NamespaceSelector": {
1173
+ "resourceType": "K8s::Monitoring::ServiceMonitor.namespaceSelector",
1174
+ "kind": "property",
1175
+ "lexicon": "k8s"
1176
+ },
1157
1177
  "NetPol": {
1158
1178
  "resourceType": "K8s::Networking::NetworkPolicy",
1159
1179
  "kind": "resource",
@@ -1475,6 +1495,18 @@
1475
1495
  }
1476
1496
  }
1477
1497
  },
1498
+ "PrometheusRule": {
1499
+ "resourceType": "K8s::Monitoring::PrometheusRule",
1500
+ "kind": "resource",
1501
+ "lexicon": "k8s",
1502
+ "apiVersion": "monitoring.coreos.com/v1",
1503
+ "gvkKind": "PrometheusRule"
1504
+ },
1505
+ "PrometheusRule_Group": {
1506
+ "resourceType": "K8s::Monitoring::PrometheusRule.groups",
1507
+ "kind": "property",
1508
+ "lexicon": "k8s"
1509
+ },
1478
1510
  "RayCluster": {
1479
1511
  "resourceType": "K8s::Ray::RayCluster",
1480
1512
  "kind": "resource",
@@ -1784,6 +1816,11 @@
1784
1816
  }
1785
1817
  }
1786
1818
  },
1819
+ "Selector": {
1820
+ "resourceType": "K8s::Monitoring::ServiceMonitor.selector",
1821
+ "kind": "property",
1822
+ "lexicon": "k8s"
1823
+ },
1787
1824
  "SelfSubjectAccessReview": {
1788
1825
  "resourceType": "K8s::Authorization::SelfSubjectAccessReview",
1789
1826
  "kind": "resource",
@@ -1862,6 +1899,33 @@
1862
1899
  "apiVersion": "v1",
1863
1900
  "gvkKind": "ServiceList"
1864
1901
  },
1902
+ "ServiceMonitor": {
1903
+ "resourceType": "K8s::Monitoring::ServiceMonitor",
1904
+ "kind": "resource",
1905
+ "lexicon": "k8s",
1906
+ "apiVersion": "monitoring.coreos.com/v1",
1907
+ "gvkKind": "ServiceMonitor"
1908
+ },
1909
+ "ServiceMonitor_AttachMetadata": {
1910
+ "resourceType": "K8s::Monitoring::ServiceMonitor.attachMetadata",
1911
+ "kind": "property",
1912
+ "lexicon": "k8s"
1913
+ },
1914
+ "ServiceMonitor_Endpoint": {
1915
+ "resourceType": "K8s::Monitoring::ServiceMonitor.endpoints",
1916
+ "kind": "property",
1917
+ "lexicon": "k8s"
1918
+ },
1919
+ "ServiceMonitor_NamespaceSelector": {
1920
+ "resourceType": "K8s::Monitoring::ServiceMonitor.namespaceSelector",
1921
+ "kind": "property",
1922
+ "lexicon": "k8s"
1923
+ },
1924
+ "ServiceMonitor_Selector": {
1925
+ "resourceType": "K8s::Monitoring::ServiceMonitor.selector",
1926
+ "kind": "property",
1927
+ "lexicon": "k8s"
1928
+ },
1865
1929
  "ServicePort": {
1866
1930
  "resourceType": "K8s::Core::ServicePort",
1867
1931
  "kind": "property",
@@ -1375,6 +1375,17 @@ export declare class PriorityLevelConfigurationList {
1375
1375
  readonly uid: string;
1376
1376
  }
1377
1377
 
1378
+ export declare class PrometheusRule {
1379
+ constructor(props: {
1380
+ /** Specification of desired alerting rule definitions for Prometheus. */
1381
+ spec: Record<string, unknown>;
1382
+ metadata?: Record<string, unknown>;
1383
+ });
1384
+ readonly name: string;
1385
+ readonly namespace: string;
1386
+ readonly uid: string;
1387
+ }
1388
+
1378
1389
  export declare class PV {
1379
1390
  constructor(props: {
1380
1391
  /** Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata */
@@ -1853,6 +1864,18 @@ export declare class ServiceList {
1853
1864
  readonly uid: string;
1854
1865
  }
1855
1866
 
1867
+ export declare class ServiceMonitor {
1868
+ constructor(props: {
1869
+ /** Specification of desired Service selection for target discovery by
1870
+ Prometheus. */
1871
+ spec: Record<string, unknown>;
1872
+ metadata?: Record<string, unknown>;
1873
+ });
1874
+ readonly name: string;
1875
+ readonly namespace: string;
1876
+ readonly uid: string;
1877
+ }
1878
+
1856
1879
  export declare class StatefulSet {
1857
1880
  constructor(props: {
1858
1881
  /** Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant-lexicon-k8s",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Kubernetes lexicon for chant — declarative IaC in TypeScript",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://intentius.io/chant",
@@ -1689,6 +1689,12 @@ describe("MonitoredService", () => {
1689
1689
  expect(spec.groups[0].rules[0].labels.severity).toBe("critical");
1690
1690
  });
1691
1691
 
1692
+ test("serviceMonitor and prometheusRule emit the correct CRD kind (not Deployment)", () => {
1693
+ const result = MonitoredService({ ...minProps, alertRules: [{ name: "A", expr: "1" }] });
1694
+ expect((result.serviceMonitor as any).entityType).toBe("K8s::Monitoring::ServiceMonitor");
1695
+ expect((result.prometheusRule as any).entityType).toBe("K8s::Monitoring::PrometheusRule");
1696
+ });
1697
+
1692
1698
  test("serviceMonitor has correct selector and endpoint", () => {
1693
1699
  const result = MonitoredService({ ...minProps, metricsPort: 9090, metricsPath: "/metrics", scrapeInterval: "15s" });
1694
1700
  const spec = p(result.serviceMonitor).spec as any;
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { Composite, mergeDefaults } from "@intentius/chant";
10
- import { Deployment, Service } from "../generated";
10
+ import { Deployment, Service, ServiceMonitor, PrometheusRule } from "../generated";
11
11
  import type { ContainerSecurityContext } from "./security-context";
12
12
 
13
13
  export interface AlertRule {
@@ -68,8 +68,8 @@ export interface MonitoredServiceProps {
68
68
  export interface MonitoredServiceResult {
69
69
  deployment: InstanceType<typeof Deployment>;
70
70
  service: InstanceType<typeof Service>;
71
- serviceMonitor: InstanceType<typeof Deployment>; // CRD — use Deployment as proxy type
72
- prometheusRule?: InstanceType<typeof Deployment>; // CRD — use Deployment as proxy type
71
+ serviceMonitor: InstanceType<typeof ServiceMonitor>;
72
+ prometheusRule?: InstanceType<typeof PrometheusRule>;
73
73
  }
74
74
 
75
75
  /**
@@ -175,8 +175,7 @@ export const MonitoredService = Composite<MonitoredServiceProps>((props) => {
175
175
  },
176
176
  }, defs?.service));
177
177
 
178
- // ServiceMonitor is a CRD — use Deployment constructor as a generic Declarable wrapper
179
- const serviceMonitor = new Deployment(mergeDefaults({
178
+ const serviceMonitor = new ServiceMonitor(mergeDefaults({
180
179
  metadata: {
181
180
  name,
182
181
  ...(namespace && { namespace }),
@@ -199,7 +198,7 @@ export const MonitoredService = Composite<MonitoredServiceProps>((props) => {
199
198
  const result: Record<string, any> = { deployment, service, serviceMonitor };
200
199
 
201
200
  if (alertRules && alertRules.length > 0) {
202
- result.prometheusRule = new Deployment(mergeDefaults({
201
+ result.prometheusRule = new PrometheusRule(mergeDefaults({
203
202
  metadata: {
204
203
  name: `${name}-alerts`,
205
204
  ...(namespace && { namespace }),
@@ -93,6 +93,20 @@ const COCKROACH_OPERATOR_CRD_BASE = `https://raw.githubusercontent.com/cockroach
93
93
  const CERT_MANAGER_VERSION = "v1.16.2";
94
94
  const CERT_MANAGER_CRD_BUNDLE = `https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml`;
95
95
 
96
+ /**
97
+ * Prometheus Operator CRDs — monitoring.coreos.com/v1
98
+ *
99
+ * Produces (the `monitoring.coreos.com` group maps to the `Monitoring`
100
+ * namespace):
101
+ * K8s::Monitoring::ServiceMonitor → apiVersion: monitoring.coreos.com/v1, kind: ServiceMonitor
102
+ * K8s::Monitoring::PrometheusRule → apiVersion: monitoring.coreos.com/v1, kind: PrometheusRule
103
+ *
104
+ * Operator install: kube-prometheus-stack chart, or
105
+ * https://github.com/prometheus-operator/prometheus-operator
106
+ */
107
+ const PROM_OPERATOR_VERSION = "v0.79.2";
108
+ const PROM_OPERATOR_CRD_BASE = `https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/${PROM_OPERATOR_VERSION}/example/prometheus-operator-crd`;
109
+
96
110
  export const CRD_SOURCES: CRDSource[] = [
97
111
  { type: "url", url: `${KUBERAY_CRD_BASE}/ray.io_rayclusters.yaml` },
98
112
  { type: "url", url: `${KUBERAY_CRD_BASE}/ray.io_rayjobs.yaml` },
@@ -107,4 +121,6 @@ export const CRD_SOURCES: CRDSource[] = [
107
121
  { type: "url", url: `${GATEWAY_API_CRD_BASE}/gateway.networking.k8s.io_referencegrants.yaml` },
108
122
  { type: "url", url: `${COCKROACH_OPERATOR_CRD_BASE}/crdb.cockroachlabs.com_crdbclusters.yaml` },
109
123
  { type: "url", url: CERT_MANAGER_CRD_BUNDLE },
124
+ { type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_servicemonitors.yaml` },
125
+ { type: "url", url: `${PROM_OPERATOR_CRD_BASE}/monitoring.coreos.com_prometheusrules.yaml` },
110
126
  ];
@@ -1375,6 +1375,17 @@ export declare class PriorityLevelConfigurationList {
1375
1375
  readonly uid: string;
1376
1376
  }
1377
1377
 
1378
+ export declare class PrometheusRule {
1379
+ constructor(props: {
1380
+ /** Specification of desired alerting rule definitions for Prometheus. */
1381
+ spec: Record<string, unknown>;
1382
+ metadata?: Record<string, unknown>;
1383
+ });
1384
+ readonly name: string;
1385
+ readonly namespace: string;
1386
+ readonly uid: string;
1387
+ }
1388
+
1378
1389
  export declare class PV {
1379
1390
  constructor(props: {
1380
1391
  /** Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata */
@@ -1853,6 +1864,18 @@ export declare class ServiceList {
1853
1864
  readonly uid: string;
1854
1865
  }
1855
1866
 
1867
+ export declare class ServiceMonitor {
1868
+ constructor(props: {
1869
+ /** Specification of desired Service selection for target discovery by
1870
+ Prometheus. */
1871
+ spec: Record<string, unknown>;
1872
+ metadata?: Record<string, unknown>;
1873
+ });
1874
+ readonly name: string;
1875
+ readonly namespace: string;
1876
+ readonly uid: string;
1877
+ }
1878
+
1856
1879
  export declare class StatefulSet {
1857
1880
  constructor(props: {
1858
1881
  /** Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata */
@@ -108,6 +108,7 @@ export const PriorityClass = createResource("K8s::Scheduling::PriorityClass", "k
108
108
  export const PriorityClassList = createResource("K8s::Scheduling::PriorityClassList", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
109
109
  export const PriorityLevelConfiguration = createResource("K8s::Flowcontrol::PriorityLevelConfiguration", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
110
110
  export const PriorityLevelConfigurationList = createResource("K8s::Flowcontrol::PriorityLevelConfigurationList", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
111
+ export const PrometheusRule = createResource("K8s::Monitoring::PrometheusRule", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
111
112
  export const PV = createResource("K8s::Core::PersistentVolume", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
112
113
  export const PVC = createResource("K8s::Core::PersistentVolumeClaim", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
113
114
  export const RayCluster = createResource("K8s::Ray::RayCluster", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
@@ -146,6 +147,7 @@ export const ServiceAccountList = createResource("K8s::Core::ServiceAccountList"
146
147
  export const ServiceCIDR = createResource("K8s::Networking::ServiceCIDR", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
147
148
  export const ServiceCIDRList = createResource("K8s::Networking::ServiceCIDRList", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
148
149
  export const ServiceList = createResource("K8s::Core::ServiceList", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
150
+ export const ServiceMonitor = createResource("K8s::Monitoring::ServiceMonitor", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
149
151
  export const StatefulSet = createResource("K8s::Apps::StatefulSet", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
150
152
  export const StatefulSetList = createResource("K8s::Apps::StatefulSetList", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
151
153
  export const Status = createResource("K8s::Core::Status", "k8s", {"name":"name","namespace":"namespace","uid":"uid"});
@@ -264,6 +266,7 @@ export const PodSpec = createProperty("K8s::Core::PodSpec", "k8s");
264
266
  export const PodTemplateSpec = createProperty("K8s::Core::PodTemplateSpec", "k8s");
265
267
  export const PolicyRule = createProperty("K8s::Rbac::PolicyRule", "k8s");
266
268
  export const Probe = createProperty("K8s::Core::Probe", "k8s");
269
+ export const PrometheusRule_Group = createProperty("K8s::Monitoring::PrometheusRule.groups", "k8s");
267
270
  export const RayCluster_AutoscalerOptions = createProperty("K8s::Ray::RayCluster.autoscalerOptions", "k8s");
268
271
  export const RayCluster_GcsFaultToleranceOptions = createProperty("K8s::Ray::RayCluster.gcsFaultToleranceOptions", "k8s");
269
272
  export const RayCluster_HeadGroupSpec = createProperty("K8s::Ray::RayCluster.headGroupSpec", "k8s");
@@ -282,6 +285,10 @@ export const RollingUpdateDeployment = createProperty("K8s::Apps::RollingUpdateD
282
285
  export const SecretKeySelector = createProperty("K8s::Core::SecretKeySelector", "k8s");
283
286
  export const SecurityContext = createProperty("K8s::Core::SecurityContext", "k8s");
284
287
  export const ServiceBackendPort = createProperty("K8s::Networking::ServiceBackendPort", "k8s");
288
+ export const ServiceMonitor_AttachMetadata = createProperty("K8s::Monitoring::ServiceMonitor.attachMetadata", "k8s");
289
+ export const ServiceMonitor_Endpoint = createProperty("K8s::Monitoring::ServiceMonitor.endpoints", "k8s");
290
+ export const ServiceMonitor_NamespaceSelector = createProperty("K8s::Monitoring::ServiceMonitor.namespaceSelector", "k8s");
291
+ export const ServiceMonitor_Selector = createProperty("K8s::Monitoring::ServiceMonitor.selector", "k8s");
285
292
  export const ServicePort = createProperty("K8s::Core::ServicePort", "k8s");
286
293
  export const Subject = createProperty("K8s::Rbac::Subject", "k8s");
287
294
  export const TCPSocketAction = createProperty("K8s::Core::TCPSocketAction", "k8s");
@@ -187,6 +187,11 @@
187
187
  "kind": "property",
188
188
  "lexicon": "k8s"
189
189
  },
190
+ "AttachMetadata": {
191
+ "resourceType": "K8s::Monitoring::ServiceMonitor.attachMetadata",
192
+ "kind": "property",
193
+ "lexicon": "k8s"
194
+ },
190
195
  "AutoscalerOptions": {
191
196
  "resourceType": "K8s::Ray::RayCluster.autoscalerOptions",
192
197
  "kind": "property",
@@ -655,6 +660,11 @@
655
660
  "apiVersion": "resource.k8s.io/v1beta1",
656
661
  "gvkKind": "DeviceClassList"
657
662
  },
663
+ "Endpoint": {
664
+ "resourceType": "K8s::Monitoring::ServiceMonitor.endpoints",
665
+ "kind": "property",
666
+ "lexicon": "k8s"
667
+ },
658
668
  "EndpointSlice": {
659
669
  "resourceType": "K8s::Discovery::EndpointSlice",
660
670
  "kind": "resource",
@@ -826,6 +836,11 @@
826
836
  "kind": "property",
827
837
  "lexicon": "k8s"
828
838
  },
839
+ "Group": {
840
+ "resourceType": "K8s::Monitoring::PrometheusRule.groups",
841
+ "kind": "property",
842
+ "lexicon": "k8s"
843
+ },
829
844
  "HPA": {
830
845
  "resourceType": "K8s::Autoscaling::HorizontalPodAutoscaler",
831
846
  "kind": "resource",
@@ -1154,6 +1169,11 @@
1154
1169
  "kind": "property",
1155
1170
  "lexicon": "k8s"
1156
1171
  },
1172
+ "NamespaceSelector": {
1173
+ "resourceType": "K8s::Monitoring::ServiceMonitor.namespaceSelector",
1174
+ "kind": "property",
1175
+ "lexicon": "k8s"
1176
+ },
1157
1177
  "NetPol": {
1158
1178
  "resourceType": "K8s::Networking::NetworkPolicy",
1159
1179
  "kind": "resource",
@@ -1475,6 +1495,18 @@
1475
1495
  }
1476
1496
  }
1477
1497
  },
1498
+ "PrometheusRule": {
1499
+ "resourceType": "K8s::Monitoring::PrometheusRule",
1500
+ "kind": "resource",
1501
+ "lexicon": "k8s",
1502
+ "apiVersion": "monitoring.coreos.com/v1",
1503
+ "gvkKind": "PrometheusRule"
1504
+ },
1505
+ "PrometheusRule_Group": {
1506
+ "resourceType": "K8s::Monitoring::PrometheusRule.groups",
1507
+ "kind": "property",
1508
+ "lexicon": "k8s"
1509
+ },
1478
1510
  "RayCluster": {
1479
1511
  "resourceType": "K8s::Ray::RayCluster",
1480
1512
  "kind": "resource",
@@ -1784,6 +1816,11 @@
1784
1816
  }
1785
1817
  }
1786
1818
  },
1819
+ "Selector": {
1820
+ "resourceType": "K8s::Monitoring::ServiceMonitor.selector",
1821
+ "kind": "property",
1822
+ "lexicon": "k8s"
1823
+ },
1787
1824
  "SelfSubjectAccessReview": {
1788
1825
  "resourceType": "K8s::Authorization::SelfSubjectAccessReview",
1789
1826
  "kind": "resource",
@@ -1862,6 +1899,33 @@
1862
1899
  "apiVersion": "v1",
1863
1900
  "gvkKind": "ServiceList"
1864
1901
  },
1902
+ "ServiceMonitor": {
1903
+ "resourceType": "K8s::Monitoring::ServiceMonitor",
1904
+ "kind": "resource",
1905
+ "lexicon": "k8s",
1906
+ "apiVersion": "monitoring.coreos.com/v1",
1907
+ "gvkKind": "ServiceMonitor"
1908
+ },
1909
+ "ServiceMonitor_AttachMetadata": {
1910
+ "resourceType": "K8s::Monitoring::ServiceMonitor.attachMetadata",
1911
+ "kind": "property",
1912
+ "lexicon": "k8s"
1913
+ },
1914
+ "ServiceMonitor_Endpoint": {
1915
+ "resourceType": "K8s::Monitoring::ServiceMonitor.endpoints",
1916
+ "kind": "property",
1917
+ "lexicon": "k8s"
1918
+ },
1919
+ "ServiceMonitor_NamespaceSelector": {
1920
+ "resourceType": "K8s::Monitoring::ServiceMonitor.namespaceSelector",
1921
+ "kind": "property",
1922
+ "lexicon": "k8s"
1923
+ },
1924
+ "ServiceMonitor_Selector": {
1925
+ "resourceType": "K8s::Monitoring::ServiceMonitor.selector",
1926
+ "kind": "property",
1927
+ "lexicon": "k8s"
1928
+ },
1865
1929
  "ServicePort": {
1866
1930
  "resourceType": "K8s::Core::ServicePort",
1867
1931
  "kind": "property",