@intentius/chant-lexicon-k8s 0.7.0 → 0.8.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.
- package/dist/actions/apps.d.ts +44 -0
- package/dist/actions/apps.d.ts.map +1 -0
- package/dist/actions/batch.d.ts +22 -0
- package/dist/actions/batch.d.ts.map +1 -0
- package/dist/actions/core.d.ts +131 -0
- package/dist/actions/core.d.ts.map +1 -0
- package/dist/actions/index.d.ts +9 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/networking.d.ts +27 -0
- package/dist/actions/networking.d.ts.map +1 -0
- package/dist/actions/rbac.d.ts +40 -0
- package/dist/actions/rbac.d.ts.map +1 -0
- package/dist/codegen/docs-cli.d.ts +2 -0
- package/dist/codegen/docs-cli.d.ts.map +1 -0
- package/dist/codegen/docs.d.ts +12 -0
- package/dist/codegen/docs.d.ts.map +1 -0
- package/dist/codegen/generate-cli.d.ts +6 -0
- package/dist/codegen/generate-cli.d.ts.map +1 -0
- package/dist/codegen/generate-lexicon.d.ts +21 -0
- package/dist/codegen/generate-lexicon.d.ts.map +1 -0
- package/dist/codegen/generate-typescript.d.ts +11 -0
- package/dist/codegen/generate-typescript.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts +19 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/naming.d.ts +15 -0
- package/dist/codegen/naming.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +11 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/codegen/patches.d.ts +31 -0
- package/dist/codegen/patches.d.ts.map +1 -0
- package/dist/codegen/typecheck.d.ts +5 -0
- package/dist/codegen/typecheck.d.ts.map +1 -0
- package/dist/codegen/versions.d.ts +20 -0
- package/dist/codegen/versions.d.ts.map +1 -0
- package/dist/composites/adot-collector.d.ts +66 -0
- package/dist/composites/adot-collector.d.ts.map +1 -0
- package/dist/composites/agic-ingress.d.ts +73 -0
- package/dist/composites/agic-ingress.d.ts.map +1 -0
- package/dist/composites/aks-external-dns-agent.d.ts +65 -0
- package/dist/composites/aks-external-dns-agent.d.ts.map +1 -0
- package/dist/composites/alb-ingress.d.ts +77 -0
- package/dist/composites/alb-ingress.d.ts.map +1 -0
- package/dist/composites/argo-app.d.ts +168 -0
- package/dist/composites/argo-app.d.ts.map +1 -0
- package/dist/composites/autoscaled-service.d.ts +106 -0
- package/dist/composites/autoscaled-service.d.ts.map +1 -0
- package/dist/composites/azure-disk-storage-class.d.ts +48 -0
- package/dist/composites/azure-disk-storage-class.d.ts.map +1 -0
- package/dist/composites/azure-file-storage-class.d.ts +46 -0
- package/dist/composites/azure-file-storage-class.d.ts.map +1 -0
- package/dist/composites/azure-monitor-collector.d.ts +63 -0
- package/dist/composites/azure-monitor-collector.d.ts.map +1 -0
- package/dist/composites/batch-job.d.ts +85 -0
- package/dist/composites/batch-job.d.ts.map +1 -0
- package/dist/composites/cockroachdb-cluster.d.ts +132 -0
- package/dist/composites/cockroachdb-cluster.d.ts.map +1 -0
- package/dist/composites/cockroachdb-region-stack.d.ts +164 -0
- package/dist/composites/cockroachdb-region-stack.d.ts.map +1 -0
- package/dist/composites/config-connector-context.d.ts +41 -0
- package/dist/composites/config-connector-context.d.ts.map +1 -0
- package/dist/composites/configured-app.d.ts +91 -0
- package/dist/composites/configured-app.d.ts.map +1 -0
- package/dist/composites/cron-workload.d.ts +76 -0
- package/dist/composites/cron-workload.d.ts.map +1 -0
- package/dist/composites/ebs-storage-class.d.ts +55 -0
- package/dist/composites/ebs-storage-class.d.ts.map +1 -0
- package/dist/composites/efs-storage-class.d.ts +47 -0
- package/dist/composites/efs-storage-class.d.ts.map +1 -0
- package/dist/composites/external-dns-agent.d.ts +58 -0
- package/dist/composites/external-dns-agent.d.ts.map +1 -0
- package/dist/composites/filestore-storage-class.d.ts +46 -0
- package/dist/composites/filestore-storage-class.d.ts.map +1 -0
- package/dist/composites/fluent-bit-agent.d.ts +66 -0
- package/dist/composites/fluent-bit-agent.d.ts.map +1 -0
- package/dist/composites/gce-ingress.d.ts +72 -0
- package/dist/composites/gce-ingress.d.ts.map +1 -0
- package/dist/composites/gce-pd-storage-class.d.ts +48 -0
- package/dist/composites/gce-pd-storage-class.d.ts.map +1 -0
- package/dist/composites/gke-external-dns-agent.d.ts +59 -0
- package/dist/composites/gke-external-dns-agent.d.ts.map +1 -0
- package/dist/composites/gke-fluent-bit-agent.d.ts +64 -0
- package/dist/composites/gke-fluent-bit-agent.d.ts.map +1 -0
- package/dist/composites/gke-gateway.d.ts +63 -0
- package/dist/composites/gke-gateway.d.ts.map +1 -0
- package/dist/composites/gke-otel-collector.d.ts +64 -0
- package/dist/composites/gke-otel-collector.d.ts.map +1 -0
- package/dist/composites/index.d.ts +86 -0
- package/dist/composites/index.d.ts.map +1 -0
- package/dist/composites/irsa-service-account.d.ts +54 -0
- package/dist/composites/irsa-service-account.d.ts.map +1 -0
- package/dist/composites/metrics-server.d.ts +56 -0
- package/dist/composites/metrics-server.d.ts.map +1 -0
- package/dist/composites/monitored-service.d.ts +92 -0
- package/dist/composites/monitored-service.d.ts.map +1 -0
- package/dist/composites/namespace-env.d.ts +64 -0
- package/dist/composites/namespace-env.d.ts.map +1 -0
- package/dist/composites/network-isolated-app.d.ts +88 -0
- package/dist/composites/network-isolated-app.d.ts.map +1 -0
- package/dist/composites/node-agent.d.ts +87 -0
- package/dist/composites/node-agent.d.ts.map +1 -0
- package/dist/composites/ray-cluster.d.ts +179 -0
- package/dist/composites/ray-cluster.d.ts.map +1 -0
- package/dist/composites/ray-job.d.ts +88 -0
- package/dist/composites/ray-job.d.ts.map +1 -0
- package/dist/composites/ray-service.d.ts +87 -0
- package/dist/composites/ray-service.d.ts.map +1 -0
- package/dist/composites/secure-ingress.d.ts +66 -0
- package/dist/composites/secure-ingress.d.ts.map +1 -0
- package/dist/composites/security-context.d.ts +17 -0
- package/dist/composites/security-context.d.ts.map +1 -0
- package/dist/composites/sidecar-app.d.ts +121 -0
- package/dist/composites/sidecar-app.d.ts.map +1 -0
- package/dist/composites/stateful-app.d.ts +82 -0
- package/dist/composites/stateful-app.d.ts.map +1 -0
- package/dist/composites/web-app.d.ts +95 -0
- package/dist/composites/web-app.d.ts.map +1 -0
- package/dist/composites/worker-pool.d.ts +96 -0
- package/dist/composites/worker-pool.d.ts.map +1 -0
- package/dist/composites/workload-identity-sa.d.ts +54 -0
- package/dist/composites/workload-identity-sa.d.ts.map +1 -0
- package/dist/composites/workload-identity-service-account.d.ts +54 -0
- package/dist/composites/workload-identity-service-account.d.ts.map +1 -0
- package/dist/coverage.d.ts +14 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/crd/crd-sources.d.ts +10 -0
- package/dist/crd/crd-sources.d.ts.map +1 -0
- package/dist/crd/loader.d.ts +17 -0
- package/dist/crd/loader.d.ts.map +1 -0
- package/dist/crd/parser.d.ts +21 -0
- package/dist/crd/parser.d.ts.map +1 -0
- package/dist/crd/types.d.ts +55 -0
- package/dist/crd/types.d.ts.map +1 -0
- package/dist/default-labels.d.ts +84 -0
- package/dist/default-labels.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +30 -0
- package/dist/describe-resources.d.ts.map +1 -0
- package/dist/detect.d.ts +4 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/export-resources.d.ts +8 -0
- package/dist/export-resources.d.ts.map +1 -0
- package/dist/generated/index.d.ts +295 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/runtime.d.ts +5 -0
- package/dist/generated/runtime.d.ts.map +1 -0
- package/dist/import/generator.d.ts +25 -0
- package/dist/import/generator.d.ts.map +1 -0
- package/dist/import/live-export.d.ts +18 -0
- package/dist/import/live-export.d.ts.map +1 -0
- package/dist/import/parser.d.ts +19 -0
- package/dist/import/parser.d.ts.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/integrity.json +2 -2
- package/dist/lint/post-synth/argo-helpers.d.ts +24 -0
- package/dist/lint/post-synth/argo-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/argo002.d.ts +12 -0
- package/dist/lint/post-synth/argo002.d.ts.map +1 -0
- package/dist/lint/post-synth/argo003.d.ts +14 -0
- package/dist/lint/post-synth/argo003.d.ts.map +1 -0
- package/dist/lint/post-synth/argo005.d.ts +3 -0
- package/dist/lint/post-synth/argo005.d.ts.map +1 -0
- package/dist/lint/post-synth/index.d.ts +3 -0
- package/dist/lint/post-synth/index.d.ts.map +1 -0
- package/dist/lint/post-synth/k8s-helpers.d.ts +97 -0
- package/dist/lint/post-synth/k8s-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8005.d.ts +10 -0
- package/dist/lint/post-synth/wk8005.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8006.d.ts +9 -0
- package/dist/lint/post-synth/wk8006.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8041.d.ts +10 -0
- package/dist/lint/post-synth/wk8041.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8042.d.ts +10 -0
- package/dist/lint/post-synth/wk8042.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8101.d.ts +10 -0
- package/dist/lint/post-synth/wk8101.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8102.d.ts +9 -0
- package/dist/lint/post-synth/wk8102.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8103.d.ts +9 -0
- package/dist/lint/post-synth/wk8103.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8104.d.ts +10 -0
- package/dist/lint/post-synth/wk8104.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8105.d.ts +10 -0
- package/dist/lint/post-synth/wk8105.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8201.d.ts +10 -0
- package/dist/lint/post-synth/wk8201.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8202.d.ts +10 -0
- package/dist/lint/post-synth/wk8202.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8203.d.ts +10 -0
- package/dist/lint/post-synth/wk8203.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8204.d.ts +14 -0
- package/dist/lint/post-synth/wk8204.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8205.d.ts +10 -0
- package/dist/lint/post-synth/wk8205.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8207.d.ts +10 -0
- package/dist/lint/post-synth/wk8207.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8208.d.ts +10 -0
- package/dist/lint/post-synth/wk8208.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8209.d.ts +10 -0
- package/dist/lint/post-synth/wk8209.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8301.d.ts +15 -0
- package/dist/lint/post-synth/wk8301.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8302.d.ts +9 -0
- package/dist/lint/post-synth/wk8302.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8303.d.ts +10 -0
- package/dist/lint/post-synth/wk8303.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8304.d.ts +10 -0
- package/dist/lint/post-synth/wk8304.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8305.d.ts +9 -0
- package/dist/lint/post-synth/wk8305.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8306.d.ts +11 -0
- package/dist/lint/post-synth/wk8306.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8401.d.ts +11 -0
- package/dist/lint/post-synth/wk8401.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8402.d.ts +10 -0
- package/dist/lint/post-synth/wk8402.d.ts.map +1 -0
- package/dist/lint/post-synth/wk8403.d.ts +10 -0
- package/dist/lint/post-synth/wk8403.d.ts.map +1 -0
- package/dist/lint/rules/argo-appset-single-project.d.ts +18 -0
- package/dist/lint/rules/argo-appset-single-project.d.ts.map +1 -0
- package/dist/lint/rules/argo-ast.d.ts +37 -0
- package/dist/lint/rules/argo-ast.d.ts.map +1 -0
- package/dist/lint/rules/argo-automated-prune.d.ts +20 -0
- package/dist/lint/rules/argo-automated-prune.d.ts.map +1 -0
- package/dist/lint/rules/hardcoded-namespace.d.ts +13 -0
- package/dist/lint/rules/hardcoded-namespace.d.ts.map +1 -0
- package/dist/lint/rules/latest-image-tag.d.ts +3 -0
- package/dist/lint/rules/latest-image-tag.d.ts.map +1 -0
- package/dist/lint/rules/missing-resource-limits.d.ts +3 -0
- package/dist/lint/rules/missing-resource-limits.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +6 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +6 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/manifest.json +1 -1
- package/dist/micro-time.d.ts +43 -0
- package/dist/micro-time.d.ts.map +1 -0
- package/dist/package-cli.d.ts +6 -0
- package/dist/package-cli.d.ts.map +1 -0
- package/dist/plugin.d.ts +9 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/serializer.d.ts +12 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/spec/fetch.d.ts +34 -0
- package/dist/spec/fetch.d.ts.map +1 -0
- package/dist/spec/parse.d.ts +73 -0
- package/dist/spec/parse.d.ts.map +1 -0
- package/dist/validate-cli.d.ts +6 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate.d.ts +15 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/variables.d.ts +35 -0
- package/dist/variables.d.ts.map +1 -0
- package/package.json +24 -5
- package/src/composites/argo-app.ts +3 -3
- package/src/detect.ts +9 -0
- package/src/lint/post-synth/index.ts +63 -0
- package/src/plugin.ts +4 -12
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AzureMonitorCollector composite — DaemonSet + RBAC + ConfigMap for Azure Monitor / OTel collector.
|
|
3
|
+
*
|
|
4
|
+
* @aks Azure Monitor agent with OpenTelemetry collector config for
|
|
5
|
+
* Log Analytics workspace integration on AKS clusters.
|
|
6
|
+
*/
|
|
7
|
+
import { DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, ConfigMap } from "../generated/index.js";
|
|
8
|
+
export interface AzureMonitorCollectorProps {
|
|
9
|
+
/** Azure Log Analytics workspace ID. */
|
|
10
|
+
workspaceId: string;
|
|
11
|
+
/** AKS cluster name. */
|
|
12
|
+
clusterName: string;
|
|
13
|
+
/** Agent name (default: "azure-monitor-collector"). */
|
|
14
|
+
name?: string;
|
|
15
|
+
/** Collector image (default: "mcr.microsoft.com/azuremonitor/containerinsights/ciprod:3.1.35"). */
|
|
16
|
+
image?: string;
|
|
17
|
+
/** Namespace (default: "azure-monitor"). */
|
|
18
|
+
namespace?: string;
|
|
19
|
+
/** Additional labels. */
|
|
20
|
+
labels?: Record<string, string>;
|
|
21
|
+
/** CPU request (default: "100m"). */
|
|
22
|
+
cpuRequest?: string;
|
|
23
|
+
/** Memory request (default: "256Mi"). */
|
|
24
|
+
memoryRequest?: string;
|
|
25
|
+
/** CPU limit (default: "500m"). */
|
|
26
|
+
cpuLimit?: string;
|
|
27
|
+
/** Memory limit (default: "512Mi"). */
|
|
28
|
+
memoryLimit?: string;
|
|
29
|
+
/** Azure AD client ID for Workload Identity (adds azure.workload.identity annotations to ServiceAccount). */
|
|
30
|
+
clientId?: string;
|
|
31
|
+
/** Per-member defaults for fine-grained overrides. */
|
|
32
|
+
defaults?: {
|
|
33
|
+
daemonSet?: Partial<Record<string, unknown>>;
|
|
34
|
+
serviceAccount?: Partial<Record<string, unknown>>;
|
|
35
|
+
clusterRole?: Partial<Record<string, unknown>>;
|
|
36
|
+
clusterRoleBinding?: Partial<Record<string, unknown>>;
|
|
37
|
+
configMap?: Partial<Record<string, unknown>>;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface AzureMonitorCollectorResult {
|
|
41
|
+
daemonSet: InstanceType<typeof DaemonSet>;
|
|
42
|
+
serviceAccount: InstanceType<typeof ServiceAccount>;
|
|
43
|
+
clusterRole: InstanceType<typeof ClusterRole>;
|
|
44
|
+
clusterRoleBinding: InstanceType<typeof ClusterRoleBinding>;
|
|
45
|
+
configMap: InstanceType<typeof ConfigMap>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create an AzureMonitorCollector composite — returns prop objects for
|
|
49
|
+
* a DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, and ConfigMap.
|
|
50
|
+
*
|
|
51
|
+
* @aks
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* import { AzureMonitorCollector } from "@intentius/chant-lexicon-k8s";
|
|
55
|
+
*
|
|
56
|
+
* const { daemonSet, serviceAccount, clusterRole, clusterRoleBinding, configMap } = AzureMonitorCollector({
|
|
57
|
+
* workspaceId: "00000000-0000-0000-0000-000000000000",
|
|
58
|
+
* clusterName: "my-aks-cluster",
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare const AzureMonitorCollector: import("@intentius/chant").CompositeDefinition<AzureMonitorCollectorProps, import("@intentius/chant").CompositeMembers>;
|
|
63
|
+
//# sourceMappingURL=azure-monitor-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-monitor-collector.d.ts","sourceRoot":"","sources":["../../src/composites/azure-monitor-collector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErG,MAAM,WAAW,0BAA0B;IACzC,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC9C,CAAC;CACH;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;IAC1C,cAAc,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;IACpD,WAAW,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC9C,kBAAkB,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC5D,SAAS,EAAE,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;CAC3C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,yHAiLP,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BatchJob composite — Job + optional RBAC (ServiceAccount + Role + RoleBinding).
|
|
3
|
+
*
|
|
4
|
+
* A higher-level construct for one-shot batch jobs (data migrations,
|
|
5
|
+
* seed tasks, backups). For scheduled workloads, use CronWorkload instead.
|
|
6
|
+
*/
|
|
7
|
+
import { Job, ServiceAccount, Role, RoleBinding } from "../generated/index.js";
|
|
8
|
+
import type { ContainerSecurityContext } from "./security-context.js";
|
|
9
|
+
export interface BatchJobProps {
|
|
10
|
+
/** Job name — used in metadata and labels. */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Container image. */
|
|
13
|
+
image: string;
|
|
14
|
+
/** Command to run in the container. */
|
|
15
|
+
command?: string[];
|
|
16
|
+
/** Arguments to the command. */
|
|
17
|
+
args?: string[];
|
|
18
|
+
/** Number of retries before marking the job as failed (default: 6). */
|
|
19
|
+
backoffLimit?: number;
|
|
20
|
+
/** Seconds after completion before the job is eligible for GC. */
|
|
21
|
+
ttlSecondsAfterFinished?: number;
|
|
22
|
+
/** Number of completions required (default: 1). */
|
|
23
|
+
completions?: number;
|
|
24
|
+
/** Number of pods running in parallel (default: 1). */
|
|
25
|
+
parallelism?: number;
|
|
26
|
+
/** Restart policy (default: "OnFailure"). */
|
|
27
|
+
restartPolicy?: string;
|
|
28
|
+
/** RBAC rules for the service account. Omit for defaults; pass [] to skip RBAC entirely. */
|
|
29
|
+
rbacRules?: Array<{
|
|
30
|
+
apiGroups: string[];
|
|
31
|
+
resources: string[];
|
|
32
|
+
verbs: string[];
|
|
33
|
+
}>;
|
|
34
|
+
/** Additional labels to apply to all resources. */
|
|
35
|
+
labels?: Record<string, string>;
|
|
36
|
+
/** Namespace for all resources. */
|
|
37
|
+
namespace?: string;
|
|
38
|
+
/** CPU request (default: "100m"). */
|
|
39
|
+
cpuRequest?: string;
|
|
40
|
+
/** Memory request (default: "128Mi"). */
|
|
41
|
+
memoryRequest?: string;
|
|
42
|
+
/** CPU limit (default: "500m"). */
|
|
43
|
+
cpuLimit?: string;
|
|
44
|
+
/** Memory limit (default: "256Mi"). */
|
|
45
|
+
memoryLimit?: string;
|
|
46
|
+
/** Environment variables for the container. */
|
|
47
|
+
env?: Array<{
|
|
48
|
+
name: string;
|
|
49
|
+
value: string;
|
|
50
|
+
}>;
|
|
51
|
+
/** Container security context (supports PSS restricted fields). */
|
|
52
|
+
securityContext?: ContainerSecurityContext;
|
|
53
|
+
/** Per-member defaults for fine-grained overrides. */
|
|
54
|
+
defaults?: {
|
|
55
|
+
job?: Partial<Record<string, unknown>>;
|
|
56
|
+
serviceAccount?: Partial<Record<string, unknown>>;
|
|
57
|
+
role?: Partial<Record<string, unknown>>;
|
|
58
|
+
roleBinding?: Partial<Record<string, unknown>>;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export interface BatchJobResult {
|
|
62
|
+
job: InstanceType<typeof Job>;
|
|
63
|
+
serviceAccount?: InstanceType<typeof ServiceAccount>;
|
|
64
|
+
role?: InstanceType<typeof Role>;
|
|
65
|
+
roleBinding?: InstanceType<typeof RoleBinding>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create a BatchJob composite — returns prop objects for
|
|
69
|
+
* a Job, and optional ServiceAccount, Role, and RoleBinding.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { BatchJob } from "@intentius/chant-lexicon-k8s";
|
|
74
|
+
*
|
|
75
|
+
* const { job, serviceAccount, role, roleBinding } = BatchJob({
|
|
76
|
+
* name: "db-migrate",
|
|
77
|
+
* image: "migrate:1.0",
|
|
78
|
+
* command: ["python", "manage.py", "migrate"],
|
|
79
|
+
* backoffLimit: 3,
|
|
80
|
+
* ttlSecondsAfterFinished: 3600,
|
|
81
|
+
* });
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare const BatchJob: import("@intentius/chant").CompositeDefinition<BatchJobProps, import("@intentius/chant").CompositeMembers>;
|
|
85
|
+
//# sourceMappingURL=batch-job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-job.d.ts","sourceRoot":"","sources":["../../src/composites/batch-job.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAsBnE,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IACH,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,mEAAmE;IACnE,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACvC,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAChD,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;IAC9B,cAAc,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,4GA2HP,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CockroachDbCluster composite — StatefulSet + Services + RBAC + PDB + Jobs.
|
|
3
|
+
*
|
|
4
|
+
* Deploys a CockroachDB cluster on Kubernetes with TLS support via self-signed
|
|
5
|
+
* certificates. Produces all K8s resources needed for a single cloud's slice of
|
|
6
|
+
* a CockroachDB cluster (typically 3 nodes). Multi-cloud deployments use one
|
|
7
|
+
* CockroachDbCluster per cloud, sharing joinAddresses across clouds.
|
|
8
|
+
*/
|
|
9
|
+
import { StatefulSet, Service, ServiceAccount, Role, RoleBinding, ClusterRole, ClusterRoleBinding, PodDisruptionBudget, Job } from "../generated/index.js";
|
|
10
|
+
export interface CockroachDbClusterProps {
|
|
11
|
+
/** Cluster name — used in metadata, labels, and service names. */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Namespace for all namespaced resources. */
|
|
14
|
+
namespace?: string;
|
|
15
|
+
/** Number of StatefulSet replicas (default: 3). */
|
|
16
|
+
replicas?: number;
|
|
17
|
+
/** CockroachDB container image (default: "cockroachdb/cockroach:v24.3.0"). */
|
|
18
|
+
image?: string;
|
|
19
|
+
/** PVC storage size per node (default: "100Gi"). */
|
|
20
|
+
storageSize?: string;
|
|
21
|
+
/** StorageClass name for PVCs. */
|
|
22
|
+
storageClassName?: string;
|
|
23
|
+
/** CPU limit per pod (default: "2"). */
|
|
24
|
+
cpuLimit?: string;
|
|
25
|
+
/** Memory limit per pod (default: "8Gi"). */
|
|
26
|
+
memoryLimit?: string;
|
|
27
|
+
/** Fraction of container memory for CockroachDB cache (default: ".25"). */
|
|
28
|
+
cachePercent?: string;
|
|
29
|
+
/** Fraction of container memory for SQL temp storage (default: ".25"). */
|
|
30
|
+
sqlMemoryPercent?: string;
|
|
31
|
+
/** CockroachDB locality flag (e.g., "cloud=aws,region=us-east-1"). */
|
|
32
|
+
locality?: string;
|
|
33
|
+
/** All node DNS names for --join (cross-cloud cluster membership). */
|
|
34
|
+
joinAddresses?: string[];
|
|
35
|
+
/** Enable TLS via self-signed CA certs (default: true). */
|
|
36
|
+
secure?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Skip the cockroach init Job (default: false).
|
|
39
|
+
* Set true for secondary regions in a multi-region cluster — only ONE region
|
|
40
|
+
* should run `cockroach init` to bootstrap the unified cluster. Secondary
|
|
41
|
+
* nodes start fresh and auto-join the cluster via the joinAddresses.
|
|
42
|
+
*/
|
|
43
|
+
skipInit?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Skip the cert-gen Job (default: false).
|
|
46
|
+
* Set true for multi-region deployments where a shared CA and node certs are
|
|
47
|
+
* pre-generated externally (e.g. via generate-certs.sh) and distributed via
|
|
48
|
+
* External Secrets Operator or direct kubectl. Each region's cert-gen creates
|
|
49
|
+
* a separate CA, breaking cross-region TLS — so all regions must use the same CA.
|
|
50
|
+
*/
|
|
51
|
+
skipCertGen?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Extra DNS names / IPs to include in node cert SANs beyond the auto-generated
|
|
54
|
+
* cluster-local names. Use for cross-region or external hostnames.
|
|
55
|
+
* E.g. ["cockroachdb-0.east.crdb.internal", "cockroachdb-1.east.crdb.internal"].
|
|
56
|
+
*/
|
|
57
|
+
extraCertNodeAddresses?: string[];
|
|
58
|
+
/**
|
|
59
|
+
* Domain suffix for cross-cluster advertise address (e.g. "east.crdb.internal").
|
|
60
|
+
* When set, nodes advertise "${HOSTNAME}.${advertiseHostDomain}" instead of the
|
|
61
|
+
* cluster-local FQDN from $(hostname -f). Required for multi-region clusters so
|
|
62
|
+
* that gossip addresses are resolvable from other Kubernetes clusters.
|
|
63
|
+
* E.g. pod "cockroachdb-0" in east advertises "cockroachdb-0.east.crdb.internal".
|
|
64
|
+
*/
|
|
65
|
+
advertiseHostDomain?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Mount the client certs secret (`${name}-client-certs`) into pods at
|
|
68
|
+
* `/cockroach/cockroach-client-certs` (default: false).
|
|
69
|
+
*
|
|
70
|
+
* Enable for multi-region deployments where `cockroach init`, `cockroach sql`,
|
|
71
|
+
* and backup schedule setup run inside a pod via `kubectl exec`. The client cert
|
|
72
|
+
* is separate from the node cert and is NOT included in the node certs secret.
|
|
73
|
+
* Without this flag you must inject client certs manually (e.g. via /tmp).
|
|
74
|
+
*/
|
|
75
|
+
mountClientCerts?: boolean;
|
|
76
|
+
/** Additional labels to apply to all resources. */
|
|
77
|
+
labels?: Record<string, string>;
|
|
78
|
+
/** Per-member defaults for fine-grained overrides. */
|
|
79
|
+
defaults?: {
|
|
80
|
+
serviceAccount?: Partial<Record<string, unknown>>;
|
|
81
|
+
role?: Partial<Record<string, unknown>>;
|
|
82
|
+
roleBinding?: Partial<Record<string, unknown>>;
|
|
83
|
+
clusterRole?: Partial<Record<string, unknown>>;
|
|
84
|
+
clusterRoleBinding?: Partial<Record<string, unknown>>;
|
|
85
|
+
publicService?: Partial<Record<string, unknown>>;
|
|
86
|
+
headlessService?: Partial<Record<string, unknown>>;
|
|
87
|
+
pdb?: Partial<Record<string, unknown>>;
|
|
88
|
+
statefulSet?: Partial<Record<string, unknown>>;
|
|
89
|
+
initJob?: Partial<Record<string, unknown>>;
|
|
90
|
+
certGenJob?: Partial<Record<string, unknown>>;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export interface CockroachDbClusterResult {
|
|
94
|
+
serviceAccount: InstanceType<typeof ServiceAccount>;
|
|
95
|
+
role: InstanceType<typeof Role>;
|
|
96
|
+
roleBinding: InstanceType<typeof RoleBinding>;
|
|
97
|
+
clusterRole: InstanceType<typeof ClusterRole>;
|
|
98
|
+
clusterRoleBinding: InstanceType<typeof ClusterRoleBinding>;
|
|
99
|
+
/** Client-facing service (ClusterIP, ports 26257+8080). */
|
|
100
|
+
publicService: InstanceType<typeof Service>;
|
|
101
|
+
/** Pod discovery service (headless, publishNotReadyAddresses). */
|
|
102
|
+
headlessService: InstanceType<typeof Service>;
|
|
103
|
+
pdb: InstanceType<typeof PodDisruptionBudget>;
|
|
104
|
+
statefulSet: InstanceType<typeof StatefulSet>;
|
|
105
|
+
/** One-shot cockroach init job. Absent when skipInit is true. */
|
|
106
|
+
initJob?: InstanceType<typeof Job>;
|
|
107
|
+
/** Generates self-signed CA + node certs, stores in Secrets. Absent when skipCertGen is true. */
|
|
108
|
+
certGenJob?: InstanceType<typeof Job>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Create a CockroachDbCluster composite — returns prop objects for a full
|
|
112
|
+
* CockroachDB StatefulSet deployment including RBAC, Services, PDB, and Jobs.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* import { CockroachDbCluster } from "@intentius/chant-lexicon-k8s";
|
|
117
|
+
*
|
|
118
|
+
* const crdb = CockroachDbCluster({
|
|
119
|
+
* name: "cockroachdb",
|
|
120
|
+
* namespace: "crdb",
|
|
121
|
+
* replicas: 3,
|
|
122
|
+
* locality: "cloud=aws,region=us-east-1",
|
|
123
|
+
* joinAddresses: [
|
|
124
|
+
* "cockroachdb-0.cockroachdb.crdb.svc.cluster.local",
|
|
125
|
+
* "cockroachdb-1.cockroachdb.crdb.svc.cluster.local",
|
|
126
|
+
* "cockroachdb-2.cockroachdb.crdb.svc.cluster.local",
|
|
127
|
+
* ],
|
|
128
|
+
* });
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare const CockroachDbCluster: import("@intentius/chant").CompositeDefinition<CockroachDbClusterProps, import("@intentius/chant").CompositeMembers>;
|
|
132
|
+
//# sourceMappingURL=cockroachdb-cluster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cockroachdb-cluster.d.ts","sourceRoot":"","sources":["../../src/composites/cockroachdb-cluster.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAElJ,MAAM,WAAW,uBAAuB;IACtC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACnD,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACvC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC/C,CAAC;CACH;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;IACpD,IAAI,EAAE,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;IAChC,WAAW,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC9C,WAAW,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC9C,kBAAkB,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC5D,2DAA2D;IAC3D,aAAa,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;IAC5C,kEAAkE;IAClE,eAAe,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;IAC9C,GAAG,EAAE,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAC9C,WAAW,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC9C,iEAAiE;IACjE,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;IACnC,iGAAiG;IACjG,UAAU,CAAC,EAAE,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB,sHAuYP,CAAC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CockroachDbRegionStack composite — all K8s resources for one CockroachDB region.
|
|
3
|
+
*
|
|
4
|
+
* Collapses the 8-file per-region K8s pattern into a single composite call:
|
|
5
|
+
* namespace, storage, CockroachDB StatefulSet, External Secrets, GCE Ingress,
|
|
6
|
+
* ExternalDNS, Cloud Armor BackendConfig, TLS cert, and optional Prometheus monitoring.
|
|
7
|
+
*
|
|
8
|
+
* @gke Requires: External Secrets Operator (ESO), ExternalDNS (via GkeExternalDnsAgent).
|
|
9
|
+
*/
|
|
10
|
+
export interface CockroachDbRegionCockroachConfig {
|
|
11
|
+
/** Cluster name (default: "cockroachdb"). */
|
|
12
|
+
name?: string;
|
|
13
|
+
/** StatefulSet replicas (default: 3). */
|
|
14
|
+
replicas?: number;
|
|
15
|
+
/** CockroachDB image (default: "cockroachdb/cockroach:v24.3.0"). */
|
|
16
|
+
image?: string;
|
|
17
|
+
/** PVC storage size per node (default: "100Gi"). */
|
|
18
|
+
storageSize?: string;
|
|
19
|
+
/** CPU limit per pod (default: "2"). */
|
|
20
|
+
cpuLimit?: string;
|
|
21
|
+
/** Memory limit per pod (default: "8Gi"). */
|
|
22
|
+
memoryLimit?: string;
|
|
23
|
+
/** Locality flag (e.g. "cloud=gcp,region=us-east4"). */
|
|
24
|
+
locality?: string;
|
|
25
|
+
/** Join addresses for multi-region cluster. */
|
|
26
|
+
joinAddresses?: string[];
|
|
27
|
+
/**
|
|
28
|
+
* Skip the cockroach init Job (set true for secondary regions).
|
|
29
|
+
* Only the first region should run cockroach init.
|
|
30
|
+
*/
|
|
31
|
+
skipInit?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Mount the client certs secret into pods (needed for multi-region init via kubectl exec).
|
|
34
|
+
*/
|
|
35
|
+
mountClientCerts?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Extra DNS names to include in node cert SANs (e.g. cross-region ExternalDNS names).
|
|
38
|
+
*/
|
|
39
|
+
extraCertNodeAddresses?: string[];
|
|
40
|
+
/**
|
|
41
|
+
* Domain for cross-cluster advertise address (e.g. "east.crdb.internal").
|
|
42
|
+
* When set, pods advertise "${HOSTNAME}.${advertiseHostDomain}" for cross-cluster gossip.
|
|
43
|
+
*/
|
|
44
|
+
advertiseHostDomain?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface CockroachDbRegionTlsConfig {
|
|
47
|
+
/**
|
|
48
|
+
* GCP Secret Manager secret names to sync into K8s Secrets via External Secrets Operator.
|
|
49
|
+
*/
|
|
50
|
+
gcpSecretNames: {
|
|
51
|
+
/** CA cert secret name in GCP Secret Manager. */
|
|
52
|
+
ca: string;
|
|
53
|
+
/** Node cert secret name. */
|
|
54
|
+
nodeCrt: string;
|
|
55
|
+
/** Node cert key secret name. */
|
|
56
|
+
nodeKey: string;
|
|
57
|
+
/** Client root cert secret name. */
|
|
58
|
+
clientRootCrt: string;
|
|
59
|
+
/** Client root key secret name. */
|
|
60
|
+
clientRootKey: string;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export interface CockroachDbRegionStackConfig {
|
|
64
|
+
/**
|
|
65
|
+
* Short region identifier used in resource names and labels (e.g. "east").
|
|
66
|
+
* Used to distinguish resources across regions.
|
|
67
|
+
*/
|
|
68
|
+
region: string;
|
|
69
|
+
/** K8s namespace for all namespaced resources (e.g. "crdb-east"). */
|
|
70
|
+
namespace: string;
|
|
71
|
+
/** Public UI domain for this region (e.g. "east.crdb.example.com"). */
|
|
72
|
+
domain: string;
|
|
73
|
+
/** Cross-cluster ExternalDNS domain (e.g. "east.crdb.internal"). */
|
|
74
|
+
internalDomain: string;
|
|
75
|
+
/** Root public domain for ExternalDNS domain filter (e.g. "crdb.example.com"). */
|
|
76
|
+
publicRootDomain: string;
|
|
77
|
+
/** GCP project ID — used in ClusterSecretStore Workload Identity config. */
|
|
78
|
+
projectId: string;
|
|
79
|
+
/** GKE cluster name — used in ClusterSecretStore Workload Identity config. */
|
|
80
|
+
clusterName: string;
|
|
81
|
+
/** GKE cluster region (e.g. "us-east4") — used in ClusterSecretStore config. */
|
|
82
|
+
clusterRegion: string;
|
|
83
|
+
/** GCP service account email for CRDB Workload Identity annotation on the K8s SA. */
|
|
84
|
+
crdbGsaEmail: string;
|
|
85
|
+
/** GCP service account email for ExternalDNS Workload Identity. */
|
|
86
|
+
externalDnsGsaEmail: string;
|
|
87
|
+
/** CockroachDB cluster configuration. */
|
|
88
|
+
cockroachdb: CockroachDbRegionCockroachConfig;
|
|
89
|
+
/** TLS certificate sync config (External Secrets Operator). */
|
|
90
|
+
tls: CockroachDbRegionTlsConfig;
|
|
91
|
+
/** Namespace resource quotas. */
|
|
92
|
+
quota?: {
|
|
93
|
+
/** Total CPU limit quota (e.g. "8"). */
|
|
94
|
+
cpu?: string;
|
|
95
|
+
/** Total memory limit quota (e.g. "20Gi"). */
|
|
96
|
+
memory?: string;
|
|
97
|
+
/** Maximum pods. */
|
|
98
|
+
maxPods?: number;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* CIDRs that may send traffic to CockroachDB ports (26257 + 8080).
|
|
102
|
+
* Used in the allow-cockroachdb NetworkPolicy.
|
|
103
|
+
*/
|
|
104
|
+
allowCidrs?: string[];
|
|
105
|
+
/**
|
|
106
|
+
* Cloud Armor WAF configuration.
|
|
107
|
+
* When set, a BackendConfig is created attaching the policy to the public service.
|
|
108
|
+
*/
|
|
109
|
+
cloudArmor?: {
|
|
110
|
+
/** Cloud Armor security policy name. */
|
|
111
|
+
policyName: string;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Emit Prometheus ConfigMap + Deployment + Service for CockroachDB metrics.
|
|
115
|
+
* Uses a lightweight Prometheus scraping `/_status/vars` (default: false).
|
|
116
|
+
*/
|
|
117
|
+
monitoring?: boolean;
|
|
118
|
+
/** Additional labels for all resources. */
|
|
119
|
+
labels?: Record<string, string>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create a CockroachDbRegionStack composite — returns all K8s resources for one
|
|
123
|
+
* CockroachDB region in a single call.
|
|
124
|
+
*
|
|
125
|
+
* Replaces: namespace.ts, storage.ts, cockroachdb.ts, external-secrets.ts,
|
|
126
|
+
* ingress.ts, tls.ts, backend-config.ts, monitoring.ts (8 files → 1 call).
|
|
127
|
+
*
|
|
128
|
+
* @gke
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* import { CockroachDbRegionStack } from "@intentius/chant-lexicon-k8s";
|
|
132
|
+
*
|
|
133
|
+
* export const east = CockroachDbRegionStack({
|
|
134
|
+
* region: "east",
|
|
135
|
+
* namespace: "crdb-east",
|
|
136
|
+
* domain: `east.${CRDB_DOMAIN}`,
|
|
137
|
+
* internalDomain: `east.${INTERNAL_DOMAIN}`,
|
|
138
|
+
* publicRootDomain: CRDB_DOMAIN,
|
|
139
|
+
* projectId: GCP_PROJECT_ID,
|
|
140
|
+
* clusterName: "gke-crdb-east",
|
|
141
|
+
* clusterRegion: "us-east4",
|
|
142
|
+
* crdbGsaEmail: `gke-crdb-east-crdb@${GCP_PROJECT_ID}.iam.gserviceaccount.com`,
|
|
143
|
+
* externalDnsGsaEmail: `gke-crdb-east-dns@${GCP_PROJECT_ID}.iam.gserviceaccount.com`,
|
|
144
|
+
* cockroachdb: {
|
|
145
|
+
* locality: "cloud=gcp,region=us-east4",
|
|
146
|
+
* joinAddresses: [...],
|
|
147
|
+
* advertiseHostDomain: `east.${INTERNAL_DOMAIN}`,
|
|
148
|
+
* skipInit: false,
|
|
149
|
+
* mountClientCerts: true,
|
|
150
|
+
* },
|
|
151
|
+
* tls: {
|
|
152
|
+
* gcpSecretNames: {
|
|
153
|
+
* ca: "crdb-ca-crt", nodeCrt: "crdb-node-crt", nodeKey: "crdb-node-key",
|
|
154
|
+
* clientRootCrt: "crdb-client-root-crt", clientRootKey: "crdb-client-root-key",
|
|
155
|
+
* },
|
|
156
|
+
* },
|
|
157
|
+
* allowCidrs: ALL_CIDRS,
|
|
158
|
+
* cloudArmor: { policyName: "crdb-ui-waf" },
|
|
159
|
+
* monitoring: true,
|
|
160
|
+
* });
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export declare const CockroachDbRegionStack: import("@intentius/chant").CompositeDefinition<CockroachDbRegionStackConfig, import("@intentius/chant").CompositeMembers>;
|
|
164
|
+
//# sourceMappingURL=cockroachdb-region-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cockroachdb-region-stack.d.ts","sourceRoot":"","sources":["../../src/composites/cockroachdb-region-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH,MAAM,WAAW,gCAAgC;IAC/C,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,cAAc,EAAE;QACd,iDAAiD;QACjD,EAAE,EAAE,MAAM,CAAC;QACX,6BAA6B;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,iCAAiC;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,oCAAoC;QACpC,aAAa,EAAE,MAAM,CAAC;QACtB,mCAAmC;QACnC,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,CAAC;IAEzB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAE5B,yCAAyC;IACzC,WAAW,EAAE,gCAAgC,CAAC;IAC9C,+DAA+D;IAC/D,GAAG,EAAE,0BAA0B,CAAC;IAEhC,iCAAiC;IACjC,KAAK,CAAC,EAAE;QACN,wCAAwC;QACxC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,8CAA8C;QAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,oBAAoB;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,wCAAwC;QACxC,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,sBAAsB,2HAmWP,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigConnectorContext composite — bootstrap Config Connector per-namespace context.
|
|
3
|
+
*
|
|
4
|
+
* @gke Creates a ConfigConnectorContext resource that configures
|
|
5
|
+
* Config Connector to manage GCP resources in a specific namespace.
|
|
6
|
+
*/
|
|
7
|
+
import { Deployment } from "../generated/index.js";
|
|
8
|
+
export interface ConfigConnectorContextProps {
|
|
9
|
+
/** Context name (default: "configconnectorcontext.core.cnrm.cloud.google.com"). */
|
|
10
|
+
name?: string;
|
|
11
|
+
/** Google service account email for Config Connector to use. */
|
|
12
|
+
googleServiceAccountEmail: string;
|
|
13
|
+
/** Namespace for the context (default: "default"). */
|
|
14
|
+
namespace?: string;
|
|
15
|
+
/** Whether to sync status into spec (default: "Absent"). */
|
|
16
|
+
stateIntoSpec?: "Absent" | "Merge";
|
|
17
|
+
/** Per-member defaults for fine-grained overrides. */
|
|
18
|
+
defaults?: {
|
|
19
|
+
context?: Partial<Record<string, unknown>>;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface ConfigConnectorContextResult {
|
|
23
|
+
context: InstanceType<typeof Deployment>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a ConfigConnectorContext composite — returns prop objects for
|
|
27
|
+
* a ConfigConnectorContext resource.
|
|
28
|
+
*
|
|
29
|
+
* @gke
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { ConfigConnectorContext } from "@intentius/chant-lexicon-k8s";
|
|
33
|
+
*
|
|
34
|
+
* const { context } = ConfigConnectorContext({
|
|
35
|
+
* googleServiceAccountEmail: "cnrm@my-project.iam.gserviceaccount.com",
|
|
36
|
+
* namespace: "config-connector",
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare const ConfigConnectorContext: import("@intentius/chant").CompositeDefinition<ConfigConnectorContextProps, import("@intentius/chant").CompositeMembers>;
|
|
41
|
+
//# sourceMappingURL=config-connector-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-connector-context.d.ts","sourceRoot":"","sources":["../../src/composites/config-connector-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,2BAA2B;IAC1C,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,yBAAyB,EAAE,MAAM,CAAC;IAClC,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC5C,CAAC;CACH;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,0HAwBP,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfiguredApp composite — Deployment + Service + optional ConfigMap.
|
|
3
|
+
*
|
|
4
|
+
* Wires ConfigMap→Volume→VolumeMount and Secret→Volume→VolumeMount
|
|
5
|
+
* triangles, plus envFrom injection. Covers cdk8s-plus Volume.fromConfigMap(),
|
|
6
|
+
* Volume.fromSecret(), and container.mount() patterns.
|
|
7
|
+
*/
|
|
8
|
+
import { Deployment, Service, ConfigMap } from "../generated/index.js";
|
|
9
|
+
import type { ContainerSecurityContext } from "./security-context.js";
|
|
10
|
+
export interface ConfiguredAppProps {
|
|
11
|
+
/** Application name — used in metadata and labels. */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Container image. */
|
|
14
|
+
image: string;
|
|
15
|
+
/** Container port (default: 80). */
|
|
16
|
+
port?: number;
|
|
17
|
+
/** Number of replicas (default: 2). */
|
|
18
|
+
replicas?: number;
|
|
19
|
+
/** Config data — creates a ConfigMap. */
|
|
20
|
+
configData?: Record<string, string>;
|
|
21
|
+
/** Mount path for the ConfigMap volume. */
|
|
22
|
+
configMountPath?: string;
|
|
23
|
+
/** Existing Secret name to mount as a volume. */
|
|
24
|
+
secretName?: string;
|
|
25
|
+
/** Mount path for the Secret volume. */
|
|
26
|
+
secretMountPath?: string;
|
|
27
|
+
/** Inject config/secrets as environment variables. */
|
|
28
|
+
envFrom?: {
|
|
29
|
+
configMapRef?: string;
|
|
30
|
+
secretRef?: string;
|
|
31
|
+
};
|
|
32
|
+
/** Init containers (e.g., migrations, cert setup). */
|
|
33
|
+
initContainers?: Array<{
|
|
34
|
+
name: string;
|
|
35
|
+
image: string;
|
|
36
|
+
command?: string[];
|
|
37
|
+
args?: string[];
|
|
38
|
+
}>;
|
|
39
|
+
/** Additional labels to apply to all resources. */
|
|
40
|
+
labels?: Record<string, string>;
|
|
41
|
+
/** CPU limit (default: "500m"). */
|
|
42
|
+
cpuLimit?: string;
|
|
43
|
+
/** Memory limit (default: "256Mi"). */
|
|
44
|
+
memoryLimit?: string;
|
|
45
|
+
/** CPU request (default: "100m"). */
|
|
46
|
+
cpuRequest?: string;
|
|
47
|
+
/** Memory request (default: "128Mi"). */
|
|
48
|
+
memoryRequest?: string;
|
|
49
|
+
/** Namespace for all resources. */
|
|
50
|
+
namespace?: string;
|
|
51
|
+
/** Environment variables for the container. */
|
|
52
|
+
env?: Array<{
|
|
53
|
+
name: string;
|
|
54
|
+
value: string;
|
|
55
|
+
}>;
|
|
56
|
+
/** Container security context (supports PSS restricted fields). */
|
|
57
|
+
securityContext?: ContainerSecurityContext;
|
|
58
|
+
/** Per-member defaults for fine-grained overrides. */
|
|
59
|
+
defaults?: {
|
|
60
|
+
deployment?: Partial<Record<string, unknown>>;
|
|
61
|
+
service?: Partial<Record<string, unknown>>;
|
|
62
|
+
configMap?: Partial<Record<string, unknown>>;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export interface ConfiguredAppResult {
|
|
66
|
+
deployment: InstanceType<typeof Deployment>;
|
|
67
|
+
service: InstanceType<typeof Service>;
|
|
68
|
+
configMap?: InstanceType<typeof ConfigMap>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a ConfiguredApp composite — returns prop objects for
|
|
72
|
+
* a Deployment, Service, and optional ConfigMap.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* import { ConfiguredApp } from "@intentius/chant-lexicon-k8s";
|
|
77
|
+
*
|
|
78
|
+
* const { deployment, service, configMap } = ConfiguredApp({
|
|
79
|
+
* name: "api",
|
|
80
|
+
* image: "api:1.0",
|
|
81
|
+
* port: 8080,
|
|
82
|
+
* configData: { "app.conf": "key=value" },
|
|
83
|
+
* configMountPath: "/etc/api",
|
|
84
|
+
* secretName: "api-creds",
|
|
85
|
+
* secretMountPath: "/secrets",
|
|
86
|
+
* envFrom: { secretRef: "api-env-secret" },
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare const ConfiguredApp: import("@intentius/chant").CompositeDefinition<ConfiguredAppProps, import("@intentius/chant").CompositeMembers>;
|
|
91
|
+
//# sourceMappingURL=configured-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configured-app.d.ts","sourceRoot":"","sources":["../../src/composites/configured-app.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,sDAAsD;IACtD,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IACH,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,mEAAmE;IACnE,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3C,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC9C,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;IAC5C,OAAO,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,iHA0IP,CAAC"}
|