@intentius/chant-lexicon-cpln 0.53.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/README.md +85 -0
- package/dist/api.d.ts +77 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/codegen/docs-cli.d.ts +3 -0
- package/dist/codegen/docs-cli.d.ts.map +1 -0
- package/dist/codegen/docs.d.ts +17 -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 +36 -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 +15 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/naming.d.ts +30 -0
- package/dist/codegen/naming.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +17 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/composites/cron-job.d.ts +60 -0
- package/dist/composites/cron-job.d.ts.map +1 -0
- package/dist/composites/gvc-environment.d.ts +47 -0
- package/dist/composites/gvc-environment.d.ts.map +1 -0
- package/dist/composites/index.d.ts +13 -0
- package/dist/composites/index.d.ts.map +1 -0
- package/dist/composites/public-domain.d.ts +68 -0
- package/dist/composites/public-domain.d.ts.map +1 -0
- package/dist/composites/secret-access.d.ts +78 -0
- package/dist/composites/secret-access.d.ts.map +1 -0
- package/dist/composites/serverless-service.d.ts +78 -0
- package/dist/composites/serverless-service.d.ts.map +1 -0
- package/dist/composites/stateful-service.d.ts +79 -0
- package/dist/composites/stateful-service.d.ts.map +1 -0
- package/dist/coverage.d.ts +59 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +71 -0
- package/dist/describe-resources.d.ts.map +1 -0
- package/dist/detect.d.ts +14 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/entity-props.d.ts +34 -0
- package/dist/entity-props.d.ts.map +1 -0
- package/dist/generated/index.d.ts +151 -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/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/init-templates.d.ts +16 -0
- package/dist/init-templates.d.ts.map +1 -0
- package/dist/integrity.json +35 -0
- package/dist/kinds.d.ts +70 -0
- package/dist/kinds.d.ts.map +1 -0
- package/dist/lint/audit-catalog.d.ts +19 -0
- package/dist/lint/audit-catalog.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl010-unrestricted-outbound.d.ts +12 -0
- package/dist/lint/post-synth/cpl010-unrestricted-outbound.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl011-internal-firewall-scope.d.ts +11 -0
- package/dist/lint/post-synth/cpl011-internal-firewall-scope.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl012-no-literal-credential-env.d.ts +11 -0
- package/dist/lint/post-synth/cpl012-no-literal-credential-env.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl013-qualified-identity-principal.d.ts +11 -0
- package/dist/lint/post-synth/cpl013-qualified-identity-principal.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl014-qualified-secret-ref.d.ts +14 -0
- package/dist/lint/post-synth/cpl014-qualified-secret-ref.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl020-serverless-single-port.d.ts +10 -0
- package/dist/lint/post-synth/cpl020-serverless-single-port.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl021-cron-job-shape.d.ts +11 -0
- package/dist/lint/post-synth/cpl021-cron-job-shape.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl022-container-ports.d.ts +10 -0
- package/dist/lint/post-synth/cpl022-container-ports.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl023-container-resources.d.ts +12 -0
- package/dist/lint/post-synth/cpl023-container-resources.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl024-probe-handler.d.ts +10 -0
- package/dist/lint/post-synth/cpl024-probe-handler.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl025-autoscaling-shape.d.ts +11 -0
- package/dist/lint/post-synth/cpl025-autoscaling-shape.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl026-scale-to-zero.d.ts +11 -0
- package/dist/lint/post-synth/cpl026-scale-to-zero.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl027-capacity-ai-conflict.d.ts +13 -0
- package/dist/lint/post-synth/cpl027-capacity-ai-conflict.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl028-volume-set.d.ts +3 -0
- package/dist/lint/post-synth/cpl028-volume-set.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl029-link-targets.d.ts +3 -0
- package/dist/lint/post-synth/cpl029-link-targets.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl030-domain-routing.d.ts +3 -0
- package/dist/lint/post-synth/cpl030-domain-routing.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl040-pinned-image.d.ts +11 -0
- package/dist/lint/post-synth/cpl040-pinned-image.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl041-image-reference-form.d.ts +12 -0
- package/dist/lint/post-synth/cpl041-image-reference-form.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl042-gvc-placement.d.ts +10 -0
- package/dist/lint/post-synth/cpl042-gvc-placement.d.ts.map +1 -0
- package/dist/lint/post-synth/cpl043-policy-scope.d.ts +16 -0
- package/dist/lint/post-synth/cpl043-policy-scope.d.ts.map +1 -0
- package/dist/lint/post-synth/helpers.d.ts +45 -0
- package/dist/lint/post-synth/helpers.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/rules/cpl001-no-secret-literals.d.ts +3 -0
- package/dist/lint/rules/cpl001-no-secret-literals.d.ts.map +1 -0
- package/dist/lint/rules/cpl002-prefer-resource-reference.d.ts +3 -0
- package/dist/lint/rules/cpl002-prefer-resource-reference.d.ts.map +1 -0
- package/dist/lint/rules/index.d.ts +6 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +7 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +4 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/manifest.json +6 -0
- package/dist/meta.json +2110 -0
- package/dist/okf/index.md +39 -0
- package/dist/okf/rules/CPL001.md +22 -0
- package/dist/okf/rules/CPL002.md +22 -0
- package/dist/okf/rules/CPL010.md +15 -0
- package/dist/okf/rules/CPL011.md +15 -0
- package/dist/okf/rules/CPL012.md +15 -0
- package/dist/okf/rules/CPL013.md +15 -0
- package/dist/okf/rules/CPL014.md +16 -0
- package/dist/okf/rules/CPL020.md +11 -0
- package/dist/okf/rules/CPL021.md +15 -0
- package/dist/okf/rules/CPL022.md +15 -0
- package/dist/okf/rules/CPL023.md +15 -0
- package/dist/okf/rules/CPL024.md +15 -0
- package/dist/okf/rules/CPL025.md +15 -0
- package/dist/okf/rules/CPL026.md +15 -0
- package/dist/okf/rules/CPL027.md +15 -0
- package/dist/okf/rules/CPL028.md +15 -0
- package/dist/okf/rules/CPL029.md +15 -0
- package/dist/okf/rules/CPL030.md +16 -0
- package/dist/okf/rules/CPL040.md +15 -0
- package/dist/okf/rules/CPL041.md +15 -0
- package/dist/okf/rules/CPL042.md +11 -0
- package/dist/okf/rules/CPL043.md +15 -0
- package/dist/okf/types/Domain.md +22 -0
- package/dist/okf/types/Gvc.md +21 -0
- package/dist/okf/types/Identity.md +29 -0
- package/dist/okf/types/IpSet.md +21 -0
- package/dist/okf/types/Policy.md +28 -0
- package/dist/okf/types/Secret.md +23 -0
- package/dist/okf/types/VolumeSet.md +22 -0
- package/dist/okf/types/Workload.md +38 -0
- package/dist/ownership.d.ts +23 -0
- package/dist/ownership.d.ts.map +1 -0
- package/dist/package-cli.d.ts +3 -0
- package/dist/package-cli.d.ts.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/reference-catalog.d.ts +24 -0
- package/dist/reference-catalog.d.ts.map +1 -0
- package/dist/rules/cpl001-no-secret-literals.ts +83 -0
- package/dist/rules/cpl002-prefer-resource-reference.ts +71 -0
- package/dist/rules/cpl010-unrestricted-outbound.ts +41 -0
- package/dist/rules/cpl011-internal-firewall-scope.ts +38 -0
- package/dist/rules/cpl012-no-literal-credential-env.ts +58 -0
- package/dist/rules/cpl013-qualified-identity-principal.ts +45 -0
- package/dist/rules/cpl014-qualified-secret-ref.ts +54 -0
- package/dist/rules/cpl020-serverless-single-port.ts +58 -0
- package/dist/rules/cpl021-cron-job-shape.ts +64 -0
- package/dist/rules/cpl022-container-ports.ts +64 -0
- package/dist/rules/cpl023-container-resources.ts +87 -0
- package/dist/rules/cpl024-probe-handler.ts +51 -0
- package/dist/rules/cpl025-autoscaling-shape.ts +100 -0
- package/dist/rules/cpl026-scale-to-zero.ts +67 -0
- package/dist/rules/cpl027-capacity-ai-conflict.ts +78 -0
- package/dist/rules/cpl028-volume-set.ts +183 -0
- package/dist/rules/cpl029-link-targets.ts +155 -0
- package/dist/rules/cpl030-domain-routing.ts +137 -0
- package/dist/rules/cpl040-pinned-image.ts +48 -0
- package/dist/rules/cpl041-image-reference-form.ts +60 -0
- package/dist/rules/cpl042-gvc-placement.ts +57 -0
- package/dist/rules/cpl043-policy-scope.ts +0 -0
- package/dist/rules/helpers.ts +114 -0
- package/dist/serializer.d.ts +69 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/skills/chant-cpln-secrets.md +110 -0
- package/dist/skills/chant-cpln-workloads.md +78 -0
- package/dist/skills/chant-cpln.md +103 -0
- package/dist/spec/fetch.d.ts +43 -0
- package/dist/spec/fetch.d.ts.map +1 -0
- package/dist/spec/parse.d.ts +79 -0
- package/dist/spec/parse.d.ts.map +1 -0
- package/dist/spec/snapshot-cli.d.ts +18 -0
- package/dist/spec/snapshot-cli.d.ts.map +1 -0
- package/dist/types/index.d.ts +1649 -0
- package/dist/validate-cli.d.ts +3 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate.d.ts +26 -0
- package/dist/validate.d.ts.map +1 -0
- package/package.json +74 -0
- package/src/api.ts +134 -0
- package/src/codegen/docs-cli.ts +7 -0
- package/src/codegen/docs.ts +94 -0
- package/src/codegen/generate-cli.ts +34 -0
- package/src/codegen/generate-lexicon.ts +88 -0
- package/src/codegen/generate-typescript.ts +71 -0
- package/src/codegen/generate.ts +110 -0
- package/src/codegen/naming.ts +61 -0
- package/src/codegen/package.ts +35 -0
- package/src/composites/composites.test.ts +252 -0
- package/src/composites/cron-job.ts +124 -0
- package/src/composites/gvc-environment.ts +104 -0
- package/src/composites/index.ts +17 -0
- package/src/composites/public-domain.ts +144 -0
- package/src/composites/secret-access.ts +136 -0
- package/src/composites/serverless-service.ts +143 -0
- package/src/composites/stateful-service.ts +179 -0
- package/src/coverage.ts +149 -0
- package/src/describe-resources.test.ts +252 -0
- package/src/describe-resources.ts +310 -0
- package/src/detect.ts +58 -0
- package/src/entity-props.ts +98 -0
- package/src/generated/index.d.ts +1649 -0
- package/src/generated/index.ts +156 -0
- package/src/generated/lexicon-cpln.json +2110 -0
- package/src/generated/runtime.ts +4 -0
- package/src/index.ts +31 -0
- package/src/init-templates.ts +131 -0
- package/src/kinds.ts +173 -0
- package/src/lint/audit-catalog.ts +230 -0
- package/src/lint/post-synth/cpl010-unrestricted-outbound.ts +41 -0
- package/src/lint/post-synth/cpl011-internal-firewall-scope.ts +38 -0
- package/src/lint/post-synth/cpl012-no-literal-credential-env.ts +58 -0
- package/src/lint/post-synth/cpl013-qualified-identity-principal.ts +45 -0
- package/src/lint/post-synth/cpl014-qualified-secret-ref.ts +54 -0
- package/src/lint/post-synth/cpl020-serverless-single-port.ts +58 -0
- package/src/lint/post-synth/cpl021-cron-job-shape.ts +64 -0
- package/src/lint/post-synth/cpl022-container-ports.ts +64 -0
- package/src/lint/post-synth/cpl023-container-resources.ts +87 -0
- package/src/lint/post-synth/cpl024-probe-handler.ts +51 -0
- package/src/lint/post-synth/cpl025-autoscaling-shape.ts +100 -0
- package/src/lint/post-synth/cpl026-scale-to-zero.ts +67 -0
- package/src/lint/post-synth/cpl027-capacity-ai-conflict.ts +78 -0
- package/src/lint/post-synth/cpl028-volume-set.ts +183 -0
- package/src/lint/post-synth/cpl029-link-targets.ts +155 -0
- package/src/lint/post-synth/cpl030-domain-routing.ts +137 -0
- package/src/lint/post-synth/cpl040-pinned-image.ts +48 -0
- package/src/lint/post-synth/cpl041-image-reference-form.ts +60 -0
- package/src/lint/post-synth/cpl042-gvc-placement.ts +57 -0
- package/src/lint/post-synth/cpl043-policy-scope.ts +0 -0
- package/src/lint/post-synth/helpers.ts +114 -0
- package/src/lint/post-synth/index.ts +45 -0
- package/src/lint/post-synth/post-synth.test.ts +737 -0
- package/src/lint/rules/cpl001-no-secret-literals.ts +83 -0
- package/src/lint/rules/cpl002-prefer-resource-reference.ts +71 -0
- package/src/lint/rules/index.ts +9 -0
- package/src/lint/rules/rules.test.ts +108 -0
- package/src/lsp/completions.test.ts +44 -0
- package/src/lsp/completions.ts +27 -0
- package/src/lsp/hover.test.ts +53 -0
- package/src/lsp/hover.ts +130 -0
- package/src/ownership.ts +28 -0
- package/src/package-cli.ts +25 -0
- package/src/plugin.test.ts +131 -0
- package/src/plugin.ts +187 -0
- package/src/reference-catalog.ts +110 -0
- package/src/serializer.test.ts +233 -0
- package/src/serializer.ts +253 -0
- package/src/skills/chant-cpln-secrets.md +110 -0
- package/src/skills/chant-cpln-workloads.md +78 -0
- package/src/skills/chant-cpln.md +103 -0
- package/src/spec/cpln-openapi.snapshot.json +10651 -0
- package/src/spec/fetch.ts +77 -0
- package/src/spec/parse.ts +451 -0
- package/src/spec/snapshot-cli.ts +71 -0
- package/src/validate-cli.ts +8 -0
- package/src/validate.ts +102 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
okf_version: '0.2'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Resource types
|
|
6
|
+
|
|
7
|
+
* [Domain](/types/Domain.md) - Cpln::Core::Domain
|
|
8
|
+
* [Gvc](/types/Gvc.md) - Cpln::Core::Gvc
|
|
9
|
+
* [Identity](/types/Identity.md) - Cpln::Core::Identity
|
|
10
|
+
* [IpSet](/types/IpSet.md) - Cpln::Core::IpSet
|
|
11
|
+
* [Policy](/types/Policy.md) - Cpln::Core::Policy
|
|
12
|
+
* [Secret](/types/Secret.md) - Cpln::Core::Secret
|
|
13
|
+
* [VolumeSet](/types/VolumeSet.md) - Cpln::Core::VolumeSet
|
|
14
|
+
* [Workload](/types/Workload.md) - Cpln::Core::Workload
|
|
15
|
+
|
|
16
|
+
# Rules
|
|
17
|
+
|
|
18
|
+
* [CPL001](/rules/CPL001.md) - no literal credential material in a cpln declaration.
|
|
19
|
+
* [CPL002](/rules/CPL002.md) - prefer a resource reference over a hand-written link.
|
|
20
|
+
* [CPL010](/rules/CPL010.md) - Workloads should not allow outbound traffic to every address
|
|
21
|
+
* [CPL011](/rules/CPL011.md) - Internal firewall should not be opened to the entire org
|
|
22
|
+
* [CPL012](/rules/CPL012.md) - Credential-shaped environment variables must reference a secret, not a literal
|
|
23
|
+
* [CPL013](/rules/CPL013.md) - Policy bindings must name identities by their GVC-qualified link
|
|
24
|
+
* [CPL014](/rules/CPL014.md) - Secret references in environment variables must name a field
|
|
25
|
+
* [CPL020](/rules/CPL020.md) - Serverless workloads must expose exactly one HTTP port
|
|
26
|
+
* [CPL021](/rules/CPL021.md) - Cron workloads must declare a schedule and expose no ports
|
|
27
|
+
* [CPL022](/rules/CPL022.md) - Container ports must not mix `port` and `ports`, and must be unique across containers
|
|
28
|
+
* [CPL023](/rules/CPL023.md) - Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
|
|
29
|
+
* [CPL024](/rules/CPL024.md) - Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
|
|
30
|
+
* [CPL025](/rules/CPL025.md) - Autoscaling `metric`, `multi` and `target` must form a valid combination
|
|
31
|
+
* [CPL026](/rules/CPL026.md) - minScale 0 must pair with a strategy that can actually scale to zero
|
|
32
|
+
* [CPL027](/rules/CPL027.md) - Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
|
|
33
|
+
* [CPL028](/rules/CPL028.md) - Volume set capacity, filesystem binding, and workload mount rules
|
|
34
|
+
* [CPL029](/rules/CPL029.md) - Control Plane links must resolve to a declared resource of the right kind and GVC
|
|
35
|
+
* [CPL030](/rules/CPL030.md) - Domain DNS mode, certificate challenge, and routing target must be a valid combination
|
|
36
|
+
* [CPL040](/rules/CPL040.md) - Container images should be pinned to a specific tag or digest
|
|
37
|
+
* [CPL041](/rules/CPL041.md) - Image references must not use docker.io/ or the registry hostname form
|
|
38
|
+
* [CPL042](/rules/CPL042.md) - A GVC must declare where its workloads run
|
|
39
|
+
* [CPL043](/rules/CPL043.md) - Policy target kind, scope and origin must be well formed
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: lint-rule
|
|
3
|
+
title: CPL001
|
|
4
|
+
description: no literal credential material in a cpln declaration.
|
|
5
|
+
id: CPL001
|
|
6
|
+
severity: error
|
|
7
|
+
category: security
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
no literal credential material in a cpln declaration.
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Domain](/types/Domain.md)
|
|
16
|
+
- [Gvc](/types/Gvc.md)
|
|
17
|
+
- [Identity](/types/Identity.md)
|
|
18
|
+
- [IpSet](/types/IpSet.md)
|
|
19
|
+
- [Policy](/types/Policy.md)
|
|
20
|
+
- [Secret](/types/Secret.md)
|
|
21
|
+
- [VolumeSet](/types/VolumeSet.md)
|
|
22
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: lint-rule
|
|
3
|
+
title: CPL002
|
|
4
|
+
description: prefer a resource reference over a hand-written link.
|
|
5
|
+
id: CPL002
|
|
6
|
+
severity: info
|
|
7
|
+
category: style
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
prefer a resource reference over a hand-written link.
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Domain](/types/Domain.md)
|
|
16
|
+
- [Gvc](/types/Gvc.md)
|
|
17
|
+
- [Identity](/types/Identity.md)
|
|
18
|
+
- [IpSet](/types/IpSet.md)
|
|
19
|
+
- [Policy](/types/Policy.md)
|
|
20
|
+
- [Secret](/types/Secret.md)
|
|
21
|
+
- [VolumeSet](/types/VolumeSet.md)
|
|
22
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL010
|
|
4
|
+
description: Workloads should not allow outbound traffic to every address
|
|
5
|
+
id: CPL010
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Workloads should not allow outbound traffic to every address
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL011
|
|
4
|
+
description: Internal firewall should not be opened to the entire org
|
|
5
|
+
id: CPL011
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Internal firewall should not be opened to the entire org
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL012
|
|
4
|
+
description: Credential-shaped environment variables must reference a secret, not a literal
|
|
5
|
+
id: CPL012
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Credential-shaped environment variables must reference a secret, not a literal
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL013
|
|
4
|
+
description: Policy bindings must name identities by their GVC-qualified link
|
|
5
|
+
id: CPL013
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Policy bindings must name identities by their GVC-qualified link
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Policy](/types/Policy.md)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL014
|
|
4
|
+
description: Secret references in environment variables must name a field
|
|
5
|
+
id: CPL014
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Secret references in environment variables must name a field
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Secret](/types/Secret.md)
|
|
16
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL020
|
|
4
|
+
description: Serverless workloads must expose exactly one HTTP port
|
|
5
|
+
id: CPL020
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Serverless workloads must expose exactly one HTTP port
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL021
|
|
4
|
+
description: Cron workloads must declare a schedule and expose no ports
|
|
5
|
+
id: CPL021
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Cron workloads must declare a schedule and expose no ports
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL022
|
|
4
|
+
description: Container ports must not mix `port` and `ports`, and must be unique across containers
|
|
5
|
+
id: CPL022
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Container ports must not mix `port` and `ports`, and must be unique across containers
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL023
|
|
4
|
+
description: Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
|
|
5
|
+
id: CPL023
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL024
|
|
4
|
+
description: Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
|
|
5
|
+
id: CPL024
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL025
|
|
4
|
+
description: Autoscaling `metric`, `multi` and `target` must form a valid combination
|
|
5
|
+
id: CPL025
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Autoscaling `metric`, `multi` and `target` must form a valid combination
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL026
|
|
4
|
+
description: minScale 0 must pair with a strategy that can actually scale to zero
|
|
5
|
+
id: CPL026
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
minScale 0 must pair with a strategy that can actually scale to zero
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL027
|
|
4
|
+
description: Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
|
|
5
|
+
id: CPL027
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL028
|
|
4
|
+
description: Volume set capacity, filesystem binding, and workload mount rules
|
|
5
|
+
id: CPL028
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Volume set capacity, filesystem binding, and workload mount rules
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL029
|
|
4
|
+
description: Control Plane links must resolve to a declared resource of the right kind and GVC
|
|
5
|
+
id: CPL029
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Control Plane links must resolve to a declared resource of the right kind and GVC
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL030
|
|
4
|
+
description: Domain DNS mode, certificate challenge, and routing target must be a valid combination
|
|
5
|
+
id: CPL030
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Domain DNS mode, certificate challenge, and routing target must be a valid combination
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Domain](/types/Domain.md)
|
|
16
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL040
|
|
4
|
+
description: Container images should be pinned to a specific tag or digest
|
|
5
|
+
id: CPL040
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Container images should be pinned to a specific tag or digest
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL041
|
|
4
|
+
description: Image references must not use docker.io/ or the registry hostname form
|
|
5
|
+
id: CPL041
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Image references must not use docker.io/ or the registry hostname form
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Workload](/types/Workload.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL042
|
|
4
|
+
description: A GVC must declare where its workloads run
|
|
5
|
+
id: CPL042
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
A GVC must declare where its workloads run
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: CPL043
|
|
4
|
+
description: Policy target kind, scope and origin must be well formed
|
|
5
|
+
id: CPL043
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: cpln
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/cpln/rules/
|
|
10
|
+
---
|
|
11
|
+
Policy target kind, scope and origin must be well formed
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Policy](/types/Policy.md)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Domain
|
|
4
|
+
description: cpln resource type Cpln::Core::Domain
|
|
5
|
+
name: Domain
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::Domain
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::Domain`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `name` (`string`, required)
|
|
14
|
+
- `description` (`string`, optional)
|
|
15
|
+
- `spec` (`DomainSpec`, optional)
|
|
16
|
+
- `tags` (`Record<string, string>`, optional)
|
|
17
|
+
|
|
18
|
+
## Governed by
|
|
19
|
+
|
|
20
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
21
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
22
|
+
- [CPL030](/rules/CPL030.md): Domain DNS mode, certificate challenge, and routing target must be a valid combination
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Gvc
|
|
4
|
+
description: cpln resource type Cpln::Core::Gvc
|
|
5
|
+
name: Gvc
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::Gvc
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::Gvc`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `name` (`string`, required)
|
|
14
|
+
- `description` (`string`, optional)
|
|
15
|
+
- `spec` (`GvcSpec`, optional)
|
|
16
|
+
- `tags` (`Record<string, string>`, optional)
|
|
17
|
+
|
|
18
|
+
## Governed by
|
|
19
|
+
|
|
20
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
21
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Identity
|
|
4
|
+
description: cpln resource type Cpln::Core::Identity
|
|
5
|
+
name: Identity
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::Identity
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::Identity`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `gvc` (`string`, required): Name of the GVC this resource belongs to.
|
|
14
|
+
- `name` (`string`, required)
|
|
15
|
+
- `aws` (`IdentityAws`, optional)
|
|
16
|
+
- `azure` (`IdentityAzure`, optional)
|
|
17
|
+
- `description` (`string`, optional)
|
|
18
|
+
- `gcp` (`IdentityGcp`, optional)
|
|
19
|
+
- `memcacheAccess` (`IdentityMemcacheAccess[]`, optional)
|
|
20
|
+
- `nativeNetworkResources` (`IdentityNativeNetworkResources[]`, optional)
|
|
21
|
+
- `networkResources` (`NetworkResource[]`, optional)
|
|
22
|
+
- `ngs` (`IdentityNgs`, optional)
|
|
23
|
+
- `spicedbAccess` (`IdentitySpicedbAccess[]`, optional)
|
|
24
|
+
- `tags` (`Record<string, string>`, optional)
|
|
25
|
+
|
|
26
|
+
## Governed by
|
|
27
|
+
|
|
28
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
29
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: IpSet
|
|
4
|
+
description: cpln resource type Cpln::Core::IpSet
|
|
5
|
+
name: IpSet
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::IpSet
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::IpSet`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `name` (`string`, required)
|
|
14
|
+
- `description` (`string`, optional)
|
|
15
|
+
- `spec` (`IpSetSpec`, optional)
|
|
16
|
+
- `tags` (`Record<string, string>`, optional)
|
|
17
|
+
|
|
18
|
+
## Governed by
|
|
19
|
+
|
|
20
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
21
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Policy
|
|
4
|
+
description: cpln resource type Cpln::Core::Policy
|
|
5
|
+
name: Policy
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::Policy
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::Policy`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `name` (`string`, required)
|
|
14
|
+
- `targetKind` (`"accessreport" | "agent" | "auditctx" | "cloudaccount" | "command" | "dbcluster" | "deployment" | "domain" | "event" | "group" | "gvc" | "identity" | "image" | "imagesummary" | "ipset" | "location" | "memcachecluster" | "mk8s" | "org" | "permissions" | "policy" | "policymembership" | "quota" | "resource" | "resourcepolicy" | "secret" | "serviceaccount" | "spicedbcluster" | "task" | "tenant" | "user" | "volumeset" | "workload"`, required)
|
|
15
|
+
- `bindings` (`PolicyBinding[]`, optional)
|
|
16
|
+
- `description` (`string`, optional)
|
|
17
|
+
- `origin` (`"builtin" | "default"`, optional)
|
|
18
|
+
- `tags` (`Record<string, string>`, optional)
|
|
19
|
+
- `target` (`"all"`, optional)
|
|
20
|
+
- `targetLinks` (`string[]`, optional)
|
|
21
|
+
- `targetQuery` (`Query`, optional)
|
|
22
|
+
|
|
23
|
+
## Governed by
|
|
24
|
+
|
|
25
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
26
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
27
|
+
- [CPL013](/rules/CPL013.md): Policy bindings must name identities by their GVC-qualified link
|
|
28
|
+
- [CPL043](/rules/CPL043.md): Policy target kind, scope and origin must be well formed
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Secret
|
|
4
|
+
description: cpln resource type Cpln::Core::Secret
|
|
5
|
+
name: Secret
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::Secret
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::Secret`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `name` (`string`, required)
|
|
14
|
+
- `type` (`"aws" | "azure-connector" | "azure-sdk" | "dictionary" | "docker" | "ecr" | "gcp" | "keypair" | "nats-account" | "opaque" | "tls" | "userpass"`, required)
|
|
15
|
+
- `data` (`SecretOpaque | SecretTls | string | SecretAwskey | Record<string, unknown> | SecretUserpass | SecretKeypair`, optional)
|
|
16
|
+
- `description` (`string`, optional)
|
|
17
|
+
- `tags` (`Record<string, string>`, optional)
|
|
18
|
+
|
|
19
|
+
## Governed by
|
|
20
|
+
|
|
21
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
22
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
23
|
+
- [CPL014](/rules/CPL014.md): Secret references in environment variables must name a field
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: VolumeSet
|
|
4
|
+
description: cpln resource type Cpln::Core::VolumeSet
|
|
5
|
+
name: VolumeSet
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::VolumeSet
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::VolumeSet`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `gvc` (`string`, required): Name of the GVC this resource belongs to.
|
|
14
|
+
- `name` (`string`, required)
|
|
15
|
+
- `description` (`string`, optional)
|
|
16
|
+
- `spec` (`VolumeSetSpec`, optional)
|
|
17
|
+
- `tags` (`Record<string, string>`, optional)
|
|
18
|
+
|
|
19
|
+
## Governed by
|
|
20
|
+
|
|
21
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
22
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: resource-type
|
|
3
|
+
title: Workload
|
|
4
|
+
description: cpln resource type Cpln::Core::Workload
|
|
5
|
+
name: Workload
|
|
6
|
+
lexicon: cpln
|
|
7
|
+
resource_type: Cpln::Core::Workload
|
|
8
|
+
---
|
|
9
|
+
`Cpln::Core::Workload`, a resource type of the cpln lexicon.
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- `gvc` (`string`, required): Name of the GVC this resource belongs to.
|
|
14
|
+
- `name` (`string`, required): Name of the workload (max 49 characters)
|
|
15
|
+
- `description` (`string`, optional)
|
|
16
|
+
- `spec` (`WorkloadSpec`, optional): Workload specification
|
|
17
|
+
- `tags` (`Record<string, string>`, optional)
|
|
18
|
+
|
|
19
|
+
## Governed by
|
|
20
|
+
|
|
21
|
+
- [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
|
|
22
|
+
- [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
|
|
23
|
+
- [CPL010](/rules/CPL010.md): Workloads should not allow outbound traffic to every address
|
|
24
|
+
- [CPL011](/rules/CPL011.md): Internal firewall should not be opened to the entire org
|
|
25
|
+
- [CPL012](/rules/CPL012.md): Credential-shaped environment variables must reference a secret, not a literal
|
|
26
|
+
- [CPL014](/rules/CPL014.md): Secret references in environment variables must name a field
|
|
27
|
+
- [CPL021](/rules/CPL021.md): Cron workloads must declare a schedule and expose no ports
|
|
28
|
+
- [CPL022](/rules/CPL022.md): Container ports must not mix `port` and `ports`, and must be unique across containers
|
|
29
|
+
- [CPL023](/rules/CPL023.md): Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
|
|
30
|
+
- [CPL024](/rules/CPL024.md): Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
|
|
31
|
+
- [CPL025](/rules/CPL025.md): Autoscaling `metric`, `multi` and `target` must form a valid combination
|
|
32
|
+
- [CPL026](/rules/CPL026.md): minScale 0 must pair with a strategy that can actually scale to zero
|
|
33
|
+
- [CPL027](/rules/CPL027.md): Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
|
|
34
|
+
- [CPL028](/rules/CPL028.md): Volume set capacity, filesystem binding, and workload mount rules
|
|
35
|
+
- [CPL029](/rules/CPL029.md): Control Plane links must resolve to a declared resource of the right kind and GVC
|
|
36
|
+
- [CPL030](/rules/CPL030.md): Domain DNS mode, certificate challenge, and routing target must be a valid combination
|
|
37
|
+
- [CPL040](/rules/CPL040.md): Container images should be pinned to a specific tag or digest
|
|
38
|
+
- [CPL041](/rules/CPL041.md): Image references must not use docker.io/ or the registry hostname form
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cpln lexicon's ownership convention.
|
|
3
|
+
*
|
|
4
|
+
* Declared here rather than in core — the same seam aws (`chant:managed-by`),
|
|
5
|
+
* azure and fly sit on. Core owns the generic stamp/detect logic; each lexicon
|
|
6
|
+
* owns key names its provider will actually accept.
|
|
7
|
+
*
|
|
8
|
+
* Control Plane gives every kind a free-form `tags` map, which makes this the
|
|
9
|
+
* cleanest ownership channel of any target chant supports: one uniform place on
|
|
10
|
+
* all eight kinds, readable straight off a plain `GET`, with no per-kind
|
|
11
|
+
* special case of the sort fly needs for volumes and certificates.
|
|
12
|
+
*
|
|
13
|
+
* Key naming. Tag keys accept a `/`, which Control Plane uses itself for its
|
|
14
|
+
* reserved `cpln/…` keys (`cpln/relaxMemoryToCpuRatio`). A prefixed key is
|
|
15
|
+
* therefore both idiomatic and safely namespaced against a future reserved key,
|
|
16
|
+
* so these follow the same `chant.intentius.io/…` convention as the shared
|
|
17
|
+
* label channel rather than inventing a flat spelling. The `cpln/` prefix is
|
|
18
|
+
* Control Plane's own and is never written here.
|
|
19
|
+
*/
|
|
20
|
+
import type { ChannelKeys } from "@intentius/chant/ownership";
|
|
21
|
+
/** Tag keys carrying chant's ownership marker on every cpln resource. */
|
|
22
|
+
export declare const CPLN_TAG_OWNERSHIP_KEYS: ChannelKeys;
|
|
23
|
+
//# sourceMappingURL=ownership.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,EAAE,WAIrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-cli.d.ts","sourceRoot":"","sources":["../src/package-cli.ts"],"names":[],"mappings":""}
|