typekro 0.33.9 → 0.34.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/.tsbuildinfo +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts +0 -33
- package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.js +63 -1
- package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/compositions/typekro-runtime/types.d.ts +8 -0
- package/dist/compositions/typekro-runtime/types.d.ts.map +1 -1
- package/dist/compositions/typekro-runtime/types.js +1 -0
- package/dist/compositions/typekro-runtime/types.js.map +1 -1
- package/dist/core/aspects/values-merge.d.ts +17 -0
- package/dist/core/aspects/values-merge.d.ts.map +1 -1
- package/dist/core/aspects/values-merge.js +67 -8
- package/dist/core/aspects/values-merge.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +9 -0
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +37 -3
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +34 -0
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +173 -29
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/index.d.ts +2 -0
- package/dist/core/deployment/index.d.ts.map +1 -1
- package/dist/core/deployment/index.js +1 -0
- package/dist/core/deployment/index.js.map +1 -1
- package/dist/core/deployment/k8s-helpers.d.ts +73 -0
- package/dist/core/deployment/k8s-helpers.d.ts.map +1 -1
- package/dist/core/deployment/k8s-helpers.js +198 -4
- package/dist/core/deployment/k8s-helpers.js.map +1 -1
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +21 -1
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/status-leaf-resolution.d.ts +101 -0
- package/dist/core/deployment/status-leaf-resolution.d.ts.map +1 -0
- package/dist/core/deployment/status-leaf-resolution.js +232 -0
- package/dist/core/deployment/status-leaf-resolution.js.map +1 -0
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.js +31 -3
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.js +8 -1
- package/dist/core/deployment/strategies/kro-strategy.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +20 -2
- package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
- package/dist/core/kro/index.d.ts +6 -0
- package/dist/core/kro/index.d.ts.map +1 -0
- package/dist/core/kro/index.js +6 -0
- package/dist/core/kro/index.js.map +1 -0
- package/dist/core/kro/label-guard-capability.d.ts +141 -0
- package/dist/core/kro/label-guard-capability.d.ts.map +1 -0
- package/dist/core/kro/label-guard-capability.js +257 -0
- package/dist/core/kro/label-guard-capability.js.map +1 -0
- package/dist/core/kro/labels.d.ts +56 -0
- package/dist/core/kro/labels.d.ts.map +1 -0
- package/dist/core/kro/labels.js +62 -0
- package/dist/core/kro/labels.js.map +1 -0
- package/dist/core/kubernetes/api-capability.d.ts +196 -0
- package/dist/core/kubernetes/api-capability.d.ts.map +1 -0
- package/dist/core/kubernetes/api-capability.js +301 -0
- package/dist/core/kubernetes/api-capability.js.map +1 -0
- package/dist/core/kubernetes/index.d.ts +2 -0
- package/dist/core/kubernetes/index.d.ts.map +1 -1
- package/dist/core/kubernetes/index.js +2 -0
- package/dist/core/kubernetes/index.js.map +1 -1
- package/dist/core/kubernetes/naming.d.ts +100 -0
- package/dist/core/kubernetes/naming.d.ts.map +1 -0
- package/dist/core/kubernetes/naming.js +93 -0
- package/dist/core/kubernetes/naming.js.map +1 -0
- package/dist/core/planning/direct-runtime-adapter.d.ts.map +1 -1
- package/dist/core/planning/direct-runtime-adapter.js +54 -17
- package/dist/core/planning/direct-runtime-adapter.js.map +1 -1
- package/dist/core/planning/planner.d.ts.map +1 -1
- package/dist/core/planning/planner.js +17 -0
- package/dist/core/planning/planner.js.map +1 -1
- package/dist/core/planning/schema.d.ts.map +1 -1
- package/dist/core/planning/schema.js +7 -3
- package/dist/core/planning/schema.js.map +1 -1
- package/dist/core/references/cel-lexical-scanner.d.ts +100 -1
- package/dist/core/references/cel-lexical-scanner.d.ts.map +1 -1
- package/dist/core/references/cel-lexical-scanner.js +196 -2
- package/dist/core/references/cel-lexical-scanner.js.map +1 -1
- package/dist/core/references/cel.d.ts +249 -1
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +289 -8
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/serialization/arktype-ast.d.ts +21 -0
- package/dist/core/serialization/arktype-ast.d.ts.map +1 -0
- package/dist/core/serialization/arktype-ast.js +29 -0
- package/dist/core/serialization/arktype-ast.js.map +1 -0
- package/dist/core/serialization/cel-references.d.ts +133 -32
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +908 -109
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +13 -2
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/schema.d.ts +16 -2
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +113 -21
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/types/composable.d.ts +7 -1
- package/dist/core/types/composable.d.ts.map +1 -1
- package/dist/core/types/deployment.d.ts +32 -2
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/serialization.d.ts +37 -0
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/validation/cel-dialect.d.ts +246 -0
- package/dist/core/validation/cel-dialect.d.ts.map +1 -0
- package/dist/core/validation/cel-dialect.js +1997 -0
- package/dist/core/validation/cel-dialect.js.map +1 -0
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +8 -1
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/core/validation/literal-status.d.ts +107 -0
- package/dist/core/validation/literal-status.d.ts.map +1 -0
- package/dist/core/validation/literal-status.js +346 -0
- package/dist/core/validation/literal-status.js.map +1 -0
- package/dist/core/validation/structural-spec-dependence.d.ts +179 -0
- package/dist/core/validation/structural-spec-dependence.d.ts.map +1 -0
- package/dist/core/validation/structural-spec-dependence.js +911 -0
- package/dist/core/validation/structural-spec-dependence.js.map +1 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.js +9 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts +6 -0
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.js +273 -23
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.js.map +1 -1
- package/dist/factories/clickhouse/resources/index.d.ts +1 -0
- package/dist/factories/clickhouse/resources/index.d.ts.map +1 -1
- package/dist/factories/clickhouse/resources/index.js +1 -0
- package/dist/factories/clickhouse/resources/index.js.map +1 -1
- package/dist/factories/clickhouse/resources/installation.d.ts.map +1 -1
- package/dist/factories/clickhouse/resources/installation.js +31 -4
- package/dist/factories/clickhouse/resources/installation.js.map +1 -1
- package/dist/factories/clickhouse/resources/s3-backup.d.ts +215 -0
- package/dist/factories/clickhouse/resources/s3-backup.d.ts.map +1 -0
- package/dist/factories/clickhouse/resources/s3-backup.js +410 -0
- package/dist/factories/clickhouse/resources/s3-backup.js.map +1 -0
- package/dist/factories/clickhouse/types.d.ts +416 -20
- package/dist/factories/clickhouse/types.d.ts.map +1 -1
- package/dist/factories/clickhouse/types.js +235 -11
- package/dist/factories/clickhouse/types.js.map +1 -1
- package/dist/factories/clickhouse/utils/helm-values-mapper.d.ts +42 -0
- package/dist/factories/clickhouse/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/clickhouse/utils/helm-values-mapper.js +48 -0
- package/dist/factories/clickhouse/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/clickhouse/utils/index.d.ts +2 -0
- package/dist/factories/clickhouse/utils/index.d.ts.map +1 -1
- package/dist/factories/clickhouse/utils/index.js +2 -0
- package/dist/factories/clickhouse/utils/index.js.map +1 -1
- package/dist/factories/clickhouse/utils/s3-storage.d.ts +503 -0
- package/dist/factories/clickhouse/utils/s3-storage.d.ts.map +1 -0
- package/dist/factories/clickhouse/utils/s3-storage.js +1139 -0
- package/dist/factories/clickhouse/utils/s3-storage.js.map +1 -0
- package/dist/factories/clickhouse/utils/validation.d.ts +103 -0
- package/dist/factories/clickhouse/utils/validation.d.ts.map +1 -1
- package/dist/factories/clickhouse/utils/validation.js +129 -0
- package/dist/factories/clickhouse/utils/validation.js.map +1 -1
- package/dist/factories/clickhouse/utils/xml.d.ts +87 -0
- package/dist/factories/clickhouse/utils/xml.d.ts.map +1 -0
- package/dist/factories/clickhouse/utils/xml.js +151 -0
- package/dist/factories/clickhouse/utils/xml.js.map +1 -0
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts +57 -0
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts.map +1 -1
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.js +266 -7
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.js.map +1 -1
- package/dist/factories/clickstack/types.d.ts +205 -26
- package/dist/factories/clickstack/types.d.ts.map +1 -1
- package/dist/factories/clickstack/types.js +106 -8
- package/dist/factories/clickstack/types.js.map +1 -1
- package/dist/factories/clickstack/utils/collector-config.d.ts +104 -0
- package/dist/factories/clickstack/utils/collector-config.d.ts.map +1 -0
- package/dist/factories/clickstack/utils/collector-config.js +266 -0
- package/dist/factories/clickstack/utils/collector-config.js.map +1 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.d.ts +26 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/clickstack/utils/helm-values-mapper.js +53 -12
- package/dist/factories/clickstack/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/clickstack/utils/index.d.ts +2 -0
- package/dist/factories/clickstack/utils/index.d.ts.map +1 -1
- package/dist/factories/clickstack/utils/index.js +2 -0
- package/dist/factories/clickstack/utils/index.js.map +1 -1
- package/dist/factories/clickstack/utils/storage.d.ts +449 -0
- package/dist/factories/clickstack/utils/storage.d.ts.map +1 -0
- package/dist/factories/clickstack/utils/storage.js +698 -0
- package/dist/factories/clickstack/utils/storage.js.map +1 -0
- package/dist/factories/cnpg/resources/helm.d.ts.map +1 -1
- package/dist/factories/cnpg/resources/helm.js +4 -4
- package/dist/factories/cnpg/resources/helm.js.map +1 -1
- package/dist/factories/cnpg/types.d.ts +10 -1
- package/dist/factories/cnpg/types.d.ts.map +1 -1
- package/dist/factories/cnpg/types.js.map +1 -1
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts +19 -2
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts.map +1 -1
- package/dist/factories/cnpg/utils/helm-values-mapper.js +22 -4
- package/dist/factories/cnpg/utils/helm-values-mapper.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/compositions/gateway.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/compositions/gateway.js +16 -3
- package/dist/factories/envoy-ai-gateway/compositions/gateway.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/constants.d.ts +5 -2
- package/dist/factories/envoy-ai-gateway/constants.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/constants.js +5 -2
- package/dist/factories/envoy-ai-gateway/constants.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/resources/gateway.d.ts +12 -0
- package/dist/factories/envoy-ai-gateway/resources/gateway.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/resources/gateway.js +27 -104
- package/dist/factories/envoy-ai-gateway/resources/gateway.js.map +1 -1
- package/dist/factories/envoy-ai-gateway/types.d.ts +15 -47
- package/dist/factories/envoy-ai-gateway/types.d.ts.map +1 -1
- package/dist/factories/envoy-ai-gateway/types.js.map +1 -1
- package/dist/factories/gateway-api/constants.d.ts +27 -0
- package/dist/factories/gateway-api/constants.d.ts.map +1 -0
- package/dist/factories/gateway-api/constants.js +27 -0
- package/dist/factories/gateway-api/constants.js.map +1 -0
- package/dist/factories/gateway-api/index.d.ts +14 -0
- package/dist/factories/gateway-api/index.d.ts.map +1 -0
- package/dist/factories/gateway-api/index.js +14 -0
- package/dist/factories/gateway-api/index.js.map +1 -0
- package/dist/factories/gateway-api/readiness.d.ts +67 -0
- package/dist/factories/gateway-api/readiness.d.ts.map +1 -0
- package/dist/factories/gateway-api/readiness.js +213 -0
- package/dist/factories/gateway-api/readiness.js.map +1 -0
- package/dist/factories/gateway-api/resources/gateway.d.ts +91 -0
- package/dist/factories/gateway-api/resources/gateway.d.ts.map +1 -0
- package/dist/factories/gateway-api/resources/gateway.js +99 -0
- package/dist/factories/gateway-api/resources/gateway.js.map +1 -0
- package/dist/factories/gateway-api/resources/index.d.ts +2 -0
- package/dist/factories/gateway-api/resources/index.d.ts.map +1 -0
- package/dist/factories/gateway-api/resources/index.js +2 -0
- package/dist/factories/gateway-api/resources/index.js.map +1 -0
- package/dist/factories/gateway-api/types.d.ts +1269 -0
- package/dist/factories/gateway-api/types.d.ts.map +1 -0
- package/dist/factories/gateway-api/types.js +417 -0
- package/dist/factories/gateway-api/types.js.map +1 -0
- package/dist/factories/helm/readiness-evaluators.d.ts +21 -3
- package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -1
- package/dist/factories/helm/readiness-evaluators.js +117 -11
- package/dist/factories/helm/readiness-evaluators.js.map +1 -1
- package/dist/factories/helm/types.d.ts +28 -0
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/index.d.ts +2 -0
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +8 -0
- package/dist/factories/index.js.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -1
- package/dist/factories/inngest/compositions/inngest-bootstrap.js +10 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -1
- package/dist/factories/kubernetes/admission/index.d.ts +2 -0
- package/dist/factories/kubernetes/admission/index.d.ts.map +1 -1
- package/dist/factories/kubernetes/admission/index.js +2 -0
- package/dist/factories/kubernetes/admission/index.js.map +1 -1
- package/dist/factories/kubernetes/admission/label-propagation-guard.d.ts +108 -0
- package/dist/factories/kubernetes/admission/label-propagation-guard.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/label-propagation-guard.js +247 -0
- package/dist/factories/kubernetes/admission/label-propagation-guard.js.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.d.ts +286 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.d.ts.map +1 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.js +157 -0
- package/dist/factories/kubernetes/admission/mutating-admission-policy.js.map +1 -0
- package/dist/factories/opensearch/compositions/cluster.d.ts.map +1 -1
- package/dist/factories/opensearch/compositions/cluster.js +6 -1
- package/dist/factories/opensearch/compositions/cluster.js.map +1 -1
- package/dist/factories/ory/compositions/ory-identity-stack.d.ts +8 -8
- package/dist/factories/ory/types.d.ts +16 -16
- package/dist/factories/rook/compositions/object-storage-claim.d.ts +1 -1
- package/dist/factories/rook/compositions/rook-ceph-platform.js +8 -1
- package/dist/factories/rook/compositions/rook-ceph-platform.js.map +1 -1
- package/dist/factories/rook/types.d.ts +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -1
- package/dist/factories/searxng/compositions/searxng-bootstrap.js +18 -13
- package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -1
- package/dist/factories/searxng/index.d.ts +3 -0
- package/dist/factories/searxng/index.d.ts.map +1 -1
- package/dist/factories/searxng/index.js +3 -0
- package/dist/factories/searxng/index.js.map +1 -1
- package/dist/factories/searxng/types.js +1 -1
- package/dist/factories/searxng/types.js.map +1 -1
- package/dist/factories/traefik/compositions/index.d.ts +6 -0
- package/dist/factories/traefik/compositions/index.d.ts.map +1 -0
- package/dist/factories/traefik/compositions/index.js +6 -0
- package/dist/factories/traefik/compositions/index.js.map +1 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts +185 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts.map +1 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.js +339 -0
- package/dist/factories/traefik/compositions/traefik-bootstrap.js.map +1 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts +16 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts.map +1 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.js +31 -0
- package/dist/factories/traefik/compositions/traefik-helm-repository.js.map +1 -0
- package/dist/factories/traefik/constants.d.ts +78 -0
- package/dist/factories/traefik/constants.d.ts.map +1 -0
- package/dist/factories/traefik/constants.js +104 -0
- package/dist/factories/traefik/constants.js.map +1 -0
- package/dist/factories/traefik/index.d.ts +25 -0
- package/dist/factories/traefik/index.d.ts.map +1 -0
- package/dist/factories/traefik/index.js +25 -0
- package/dist/factories/traefik/index.js.map +1 -0
- package/dist/factories/traefik/resources/common.d.ts +68 -0
- package/dist/factories/traefik/resources/common.d.ts.map +1 -0
- package/dist/factories/traefik/resources/common.js +59 -0
- package/dist/factories/traefik/resources/common.js.map +1 -0
- package/dist/factories/traefik/resources/gateway.d.ts +85 -0
- package/dist/factories/traefik/resources/gateway.d.ts.map +1 -0
- package/dist/factories/traefik/resources/gateway.js +109 -0
- package/dist/factories/traefik/resources/gateway.js.map +1 -0
- package/dist/factories/traefik/resources/helm.d.ts +56 -0
- package/dist/factories/traefik/resources/helm.d.ts.map +1 -0
- package/dist/factories/traefik/resources/helm.js +131 -0
- package/dist/factories/traefik/resources/helm.js.map +1 -0
- package/dist/factories/traefik/resources/index.d.ts +10 -0
- package/dist/factories/traefik/resources/index.d.ts.map +1 -0
- package/dist/factories/traefik/resources/index.js +10 -0
- package/dist/factories/traefik/resources/index.js.map +1 -0
- package/dist/factories/traefik/resources/middleware.d.ts +169 -0
- package/dist/factories/traefik/resources/middleware.d.ts.map +1 -0
- package/dist/factories/traefik/resources/middleware.js +225 -0
- package/dist/factories/traefik/resources/middleware.js.map +1 -0
- package/dist/factories/traefik/resources/routing.d.ts +113 -0
- package/dist/factories/traefik/resources/routing.d.ts.map +1 -0
- package/dist/factories/traefik/resources/routing.js +119 -0
- package/dist/factories/traefik/resources/routing.js.map +1 -0
- package/dist/factories/traefik/resources/tls.d.ts +85 -0
- package/dist/factories/traefik/resources/tls.d.ts.map +1 -0
- package/dist/factories/traefik/resources/tls.js +93 -0
- package/dist/factories/traefik/resources/tls.js.map +1 -0
- package/dist/factories/traefik/types.d.ts +2690 -0
- package/dist/factories/traefik/types.d.ts.map +1 -0
- package/dist/factories/traefik/types.js +1084 -0
- package/dist/factories/traefik/types.js.map +1 -0
- package/dist/factories/traefik/utils/helm-values-mapper.d.ts +198 -0
- package/dist/factories/traefik/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/traefik/utils/helm-values-mapper.js +372 -0
- package/dist/factories/traefik/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/traefik/utils/index.d.ts +6 -0
- package/dist/factories/traefik/utils/index.d.ts.map +1 -0
- package/dist/factories/traefik/utils/index.js +6 -0
- package/dist/factories/traefik/utils/index.js.map +1 -0
- package/dist/factories/traefik/utils/middleware-validation.d.ts +42 -0
- package/dist/factories/traefik/utils/middleware-validation.d.ts.map +1 -0
- package/dist/factories/traefik/utils/middleware-validation.js +78 -0
- package/dist/factories/traefik/utils/middleware-validation.js.map +1 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -1
- package/dist/factories/webapp/compositions/web-app-with-processing.js +10 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `traefikBootstrap` — the composition that stands Traefik up as a cluster edge.
|
|
3
|
+
*
|
|
4
|
+
* It owns the whole install: the (optional) namespace, the Flux `HelmRelease`,
|
|
5
|
+
* the entrypoint `Service`, and optionally the cluster-default
|
|
6
|
+
* `TLSOption`/`TLSStore`. The shared chart `HelmRepository` is delegated to a
|
|
7
|
+
* singleton composition so one instance's teardown cannot break another's
|
|
8
|
+
* chart source.
|
|
9
|
+
*
|
|
10
|
+
* **Why the entrypoint Service is owned rather than observed.** The status
|
|
11
|
+
* contract publishes the edge's load-balancer address, which means projecting
|
|
12
|
+
* the entrypoint Service's `status.loadBalancer`. A projection requires the
|
|
13
|
+
* resource to be in the graph. Observing the chart-created Service instead
|
|
14
|
+
* (`observedResource`) made every FRESH direct deployment fail: the direct
|
|
15
|
+
* engine resolves external references before it applies anything, so it read a
|
|
16
|
+
* `Service` that the release had not created yet and treated the `404` as
|
|
17
|
+
* fatal — and `dependsOn` cannot reorder that, because the read happens before
|
|
18
|
+
* the dependency graph is walked. So the chart's Service is disabled through
|
|
19
|
+
* values and this composition creates a typed one selecting the chart's pods.
|
|
20
|
+
* The graph therefore has no external reference to any Kubernetes API object.
|
|
21
|
+
*
|
|
22
|
+
* **Build-time vs runtime.** Options that decide WHICH resources exist — the
|
|
23
|
+
* namespace lifecycle, the default TLS resources, the `web` → `websecure`
|
|
24
|
+
* redirect, raw chart values — are arguments to {@link makeTraefikBootstrap}
|
|
25
|
+
* and are always concrete, so plain JavaScript branches on them are safe. The
|
|
26
|
+
* runtime spec carries only values, which may arrive as schema references in
|
|
27
|
+
* KRO mode and are therefore only ever placed into the values tree, never
|
|
28
|
+
* branched on. This is the ClickStack convention.
|
|
29
|
+
*
|
|
30
|
+
* @security The dashboard and the insecure API are not reachable through this
|
|
31
|
+
* contract: the spec's `dashboard` field is typed as the literal `false`, and
|
|
32
|
+
* `mapTraefikConfigToHelmValues` pins `api.dashboard`, `api.insecure`,
|
|
33
|
+
* `api.debug` and the dashboard `IngressRoute` off after every other values
|
|
34
|
+
* source has been merged.
|
|
35
|
+
*/
|
|
36
|
+
import { kubernetesComposition } from '../../../core/composition/imperative.js';
|
|
37
|
+
import { DEFAULT_FLUX_NAMESPACE } from '../../../core/config/defaults.js';
|
|
38
|
+
import { Cel } from '../../../core/references/cel.js';
|
|
39
|
+
import { singleton } from '../../../core/singleton/singleton.js';
|
|
40
|
+
import { helmReleaseConditionSummary } from '../../helm/status.js';
|
|
41
|
+
import { namespace } from '../../kubernetes/core/namespace.js';
|
|
42
|
+
import { service } from '../../kubernetes/networking/service.js';
|
|
43
|
+
import { DEFAULT_TRAEFIK_CHART_VERSION, DEFAULT_TRAEFIK_CRDS_POLICY, DEFAULT_TRAEFIK_NAMESPACE, DEFAULT_TRAEFIK_REPOSITORY_NAME, DEFAULT_TRAEFIK_REPOSITORY_URL, DEFAULT_TRAEFIK_WEB_PORT, DEFAULT_TRAEFIK_WEBSECURE_PORT, TRAEFIK_DEFAULT_TLS_OPTION_NAME, TRAEFIK_DEFAULT_TLS_STORE_NAME, TRAEFIK_POD_NAME_LABEL_VALUE, TRAEFIK_WEB_ENTRYPOINT, TRAEFIK_WEBSECURE_ENTRYPOINT, } from '../constants.js';
|
|
44
|
+
import { traefikHelmRelease } from '../resources/helm.js';
|
|
45
|
+
import { traefikTLSOption, traefikTLSStore } from '../resources/tls.js';
|
|
46
|
+
import { TraefikBootstrapConfigSchema, TraefikBootstrapStatusSchema, } from '../types.js';
|
|
47
|
+
import { mapTraefikConfigToHelmValues, traefikEntrypointServiceType, } from '../utils/helm-values-mapper.js';
|
|
48
|
+
import { traefikHelmRepositoryBootstrap } from './traefik-helm-repository.js';
|
|
49
|
+
/**
|
|
50
|
+
* CEL reading one field of the first load-balancer address the entrypoint
|
|
51
|
+
* Service reports that carries it, falling back to `''`.
|
|
52
|
+
*
|
|
53
|
+
* Written as an explicit expression rather than a JavaScript optional chain
|
|
54
|
+
* because every hop is genuinely absent for a `ClusterIP`/`NodePort` Service
|
|
55
|
+
* and while a cloud controller is still provisioning: `status.loadBalancer` may
|
|
56
|
+
* be missing, `ingress` may be missing, it may be empty, and an entry carries
|
|
57
|
+
* either `ip` or `hostname` but rarely both.
|
|
58
|
+
*
|
|
59
|
+
* Two details of the shape are load-bearing, both of them about satisfying the
|
|
60
|
+
* two CEL engines this one string has to run on — KRO's cel-go and the `cel-js`
|
|
61
|
+
* evaluator direct mode uses:
|
|
62
|
+
*
|
|
63
|
+
* 1. **A ternary, not one `&&` chain.** `size()` on an absent `ingress` is an
|
|
64
|
+
* evaluation error. cel-go absorbs an error in one operand of `&&` when the
|
|
65
|
+
* other operand is false; cel-js evaluates both operands and propagates the
|
|
66
|
+
* error. A ternary is lazy in both, so the guard is actually reached before
|
|
67
|
+
* the access it protects. Without this, a plain `ClusterIP` Service took the
|
|
68
|
+
* WHOLE status object down to unresolved — `ready` and `phase` included, not
|
|
69
|
+
* just this field.
|
|
70
|
+
* 2. **`filter(...)` rather than a guard on `ingress[0]`.** The obvious
|
|
71
|
+
* `has(ingress[0].hostname)` is rejected by cel-js ("has() does not support
|
|
72
|
+
* atomic expressions" — its operand is an index expression), and the obvious
|
|
73
|
+
* workaround `"hostname" in ingress[0]` is rejected by KRO, which types an
|
|
74
|
+
* ingress entry as a message rather than a map ("no matching overload for
|
|
75
|
+
* '@in'"). Selecting the entries that carry the field is accepted by both —
|
|
76
|
+
* and says what is actually meant: an entry carries `ip` or `hostname`, and
|
|
77
|
+
* a load balancer may report more than one.
|
|
78
|
+
*/
|
|
79
|
+
function loadBalancerAddressExpression(resourceId, field) {
|
|
80
|
+
const base = `${resourceId}.status.loadBalancer`;
|
|
81
|
+
const matching = `${base}.ingress.filter(entry, has(entry.${field}))`;
|
|
82
|
+
return (`has(${base}) && has(${base}.ingress) ` +
|
|
83
|
+
`? (size(${matching}) > 0 ? ${matching}[0].${field} : "") ` +
|
|
84
|
+
`: ""`);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* CEL reading the chart version Flux actually installed off the owned
|
|
88
|
+
* `HelmRelease`.
|
|
89
|
+
*
|
|
90
|
+
* This is a RESOURCE PROJECTION, deliberately not a literal: KRO drops literal
|
|
91
|
+
* status fields (#188), and echoing `schema.spec.chartVersion` would report a
|
|
92
|
+
* version the release may never have managed to install. `status.history[]` is
|
|
93
|
+
* Flux's own record of its releases, newest first, so entry 0 is the live one.
|
|
94
|
+
*
|
|
95
|
+
* The shape mirrors {@link loadBalancerAddressExpression}, for the same two
|
|
96
|
+
* reasons — both about running on KRO's cel-go AND the `cel-js` evaluator
|
|
97
|
+
* direct mode uses. A lazy ternary rather than an `&&` chain, because `size()`
|
|
98
|
+
* over an absent `history` is an evaluation error that cel-js propagates; and
|
|
99
|
+
* `filter(...)` rather than `has(history[0].chartVersion)`, which cel-js
|
|
100
|
+
* rejects as `has()` over an index expression while KRO rejects the
|
|
101
|
+
* `"chartVersion" in history[0]` workaround. Reports `''` until Flux has
|
|
102
|
+
* recorded its first release.
|
|
103
|
+
*/
|
|
104
|
+
function chartVersionExpression(resourceId) {
|
|
105
|
+
const history = `${resourceId}.status.history`;
|
|
106
|
+
const matching = `${history}.filter(entry, has(entry.chartVersion))`;
|
|
107
|
+
return `has(${history}) ? (size(${matching}) > 0 ? ${matching}[0].chartVersion : "") : ""`;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build a Traefik bootstrap composition.
|
|
111
|
+
*
|
|
112
|
+
* Use this when the defaults of {@link traefikBootstrap} are not enough — to
|
|
113
|
+
* adopt an externally managed namespace, to own the cluster-default TLS
|
|
114
|
+
* resources, to disable the HTTP→HTTPS redirect, or to pass chart values this
|
|
115
|
+
* factory does not model.
|
|
116
|
+
*
|
|
117
|
+
* @param options - Build-time options. Must be concrete values.
|
|
118
|
+
*
|
|
119
|
+
* @example An edge that owns its default TLS store, fed by cert-manager
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const edge = makeTraefikBootstrap({
|
|
122
|
+
* name: 'traefik-edge',
|
|
123
|
+
* kind: 'TraefikEdge',
|
|
124
|
+
* defaultTlsStore: { defaultCertificateSecretName: 'edge-wildcard-tls' },
|
|
125
|
+
* defaultTlsOption: { minVersion: 'VersionTLS13' },
|
|
126
|
+
* });
|
|
127
|
+
*
|
|
128
|
+
* await edge.factory('direct', { kubeConfig, waitForReady: true }).deploy({
|
|
129
|
+
* name: 'traefik',
|
|
130
|
+
* namespace: 'traefik',
|
|
131
|
+
* service: { type: 'LoadBalancer' },
|
|
132
|
+
* });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export function makeTraefikBootstrap(options = {}) {
|
|
136
|
+
const ownsNamespace = (options.namespaceOwnership ?? 'owned') === 'owned';
|
|
137
|
+
const redirectWebToWebsecure = options.redirectWebToWebsecure ?? true;
|
|
138
|
+
const defaultTlsOption = options.defaultTlsOption;
|
|
139
|
+
const defaultTlsStore = options.defaultTlsStore;
|
|
140
|
+
const crdsPolicy = options.crds ?? DEFAULT_TRAEFIK_CRDS_POLICY;
|
|
141
|
+
return kubernetesComposition({
|
|
142
|
+
name: options.name ?? 'traefik-bootstrap',
|
|
143
|
+
kind: options.kind ?? 'TraefikBootstrap',
|
|
144
|
+
spec: TraefikBootstrapConfigSchema,
|
|
145
|
+
status: TraefikBootstrapStatusSchema,
|
|
146
|
+
}, (spec) => {
|
|
147
|
+
const installNamespace = Cel.default(spec.namespace, DEFAULT_TRAEFIK_NAMESPACE);
|
|
148
|
+
const chartVersion = Cel.default(spec.chartVersion, DEFAULT_TRAEFIK_CHART_VERSION);
|
|
149
|
+
if (ownsNamespace) {
|
|
150
|
+
namespace({
|
|
151
|
+
metadata: {
|
|
152
|
+
name: installNamespace,
|
|
153
|
+
labels: {
|
|
154
|
+
'app.kubernetes.io/name': TRAEFIK_POD_NAME_LABEL_VALUE,
|
|
155
|
+
'app.kubernetes.io/instance': spec.name,
|
|
156
|
+
'app.kubernetes.io/managed-by': 'typekro',
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
id: 'traefikNamespace',
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// The official chart source is shared by every Traefik installation, so
|
|
163
|
+
// its ownership stays outside any consumer instance.
|
|
164
|
+
singleton(traefikHelmRepositoryBootstrap, {
|
|
165
|
+
id: 'traefikHelmRepository',
|
|
166
|
+
spec: {
|
|
167
|
+
name: DEFAULT_TRAEFIK_REPOSITORY_NAME,
|
|
168
|
+
namespace: DEFAULT_FLUX_NAMESPACE,
|
|
169
|
+
url: DEFAULT_TRAEFIK_REPOSITORY_URL,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
const values = mapTraefikConfigToHelmValues(spec, {
|
|
173
|
+
redirectWebToWebsecure,
|
|
174
|
+
targetNamespace: installNamespace,
|
|
175
|
+
...(options.values ? { baseValues: options.values } : {}),
|
|
176
|
+
});
|
|
177
|
+
// Chart 41.5.0 ships the traefik.io CRDs in its own crds/ directory, so
|
|
178
|
+
// this single release installs the CRDs and the proxy together.
|
|
179
|
+
const release = traefikHelmRelease({
|
|
180
|
+
name: spec.name,
|
|
181
|
+
namespace: DEFAULT_FLUX_NAMESPACE,
|
|
182
|
+
targetNamespace: installNamespace,
|
|
183
|
+
version: chartVersion,
|
|
184
|
+
repositoryName: DEFAULT_TRAEFIK_REPOSITORY_NAME,
|
|
185
|
+
repositoryNamespace: DEFAULT_FLUX_NAMESPACE,
|
|
186
|
+
// Flux creates the namespace only when this composition does not.
|
|
187
|
+
createNamespace: !ownsNamespace,
|
|
188
|
+
crds: crdsPolicy,
|
|
189
|
+
values,
|
|
190
|
+
id: 'traefikHelmRelease',
|
|
191
|
+
});
|
|
192
|
+
if (defaultTlsOption) {
|
|
193
|
+
const tlsOption = traefikTLSOption({
|
|
194
|
+
name: defaultTlsOption.name ?? TRAEFIK_DEFAULT_TLS_OPTION_NAME,
|
|
195
|
+
namespace: installNamespace,
|
|
196
|
+
spec: {
|
|
197
|
+
...(defaultTlsOption.minVersion ? { minVersion: defaultTlsOption.minVersion } : {}),
|
|
198
|
+
...(defaultTlsOption.sniStrict === undefined
|
|
199
|
+
? {}
|
|
200
|
+
: { sniStrict: defaultTlsOption.sniStrict }),
|
|
201
|
+
...(defaultTlsOption.cipherSuites
|
|
202
|
+
? { cipherSuites: [...defaultTlsOption.cipherSuites] }
|
|
203
|
+
: {}),
|
|
204
|
+
...(defaultTlsOption.curvePreferences
|
|
205
|
+
? { curvePreferences: [...defaultTlsOption.curvePreferences] }
|
|
206
|
+
: {}),
|
|
207
|
+
...(defaultTlsOption.clientAuth ? { clientAuth: defaultTlsOption.clientAuth } : {}),
|
|
208
|
+
},
|
|
209
|
+
id: 'traefikDefaultTlsOption',
|
|
210
|
+
});
|
|
211
|
+
// The TLSOption CRD arrives with the release.
|
|
212
|
+
tlsOption.dependsOn(release);
|
|
213
|
+
}
|
|
214
|
+
if (defaultTlsStore) {
|
|
215
|
+
const tlsStore = traefikTLSStore({
|
|
216
|
+
name: defaultTlsStore.name ?? TRAEFIK_DEFAULT_TLS_STORE_NAME,
|
|
217
|
+
namespace: installNamespace,
|
|
218
|
+
spec: {
|
|
219
|
+
defaultCertificate: { secretName: defaultTlsStore.defaultCertificateSecretName },
|
|
220
|
+
},
|
|
221
|
+
id: 'traefikDefaultTlsStore',
|
|
222
|
+
});
|
|
223
|
+
tlsStore.dependsOn(release);
|
|
224
|
+
}
|
|
225
|
+
// The entrypoint Service this composition OWNS. The chart's own Service
|
|
226
|
+
// is pinned off by the values mapper; this one carries the same name
|
|
227
|
+
// (`fullnameOverride` is pinned to `spec.name`) and the same selector, so
|
|
228
|
+
// nothing downstream — `providers.kubernetesIngress.publishedService`
|
|
229
|
+
// included — has to know which of the two created it.
|
|
230
|
+
//
|
|
231
|
+
// `targetPort` is the container port NAME, exactly as the chart's own
|
|
232
|
+
// Service template does it: the chart names every container port after
|
|
233
|
+
// its entrypoint, so the names survive a change of container port.
|
|
234
|
+
service({
|
|
235
|
+
metadata: {
|
|
236
|
+
name: spec.name,
|
|
237
|
+
namespace: installNamespace,
|
|
238
|
+
labels: {
|
|
239
|
+
'app.kubernetes.io/name': TRAEFIK_POD_NAME_LABEL_VALUE,
|
|
240
|
+
'app.kubernetes.io/instance': spec.name,
|
|
241
|
+
'app.kubernetes.io/managed-by': 'typekro',
|
|
242
|
+
},
|
|
243
|
+
// `Cel.default`, never a JavaScript branch: a schema proxy is a truthy
|
|
244
|
+
// object, so `spec.service?.annotations ? ... : {}` would always take
|
|
245
|
+
// the first arm in KRO mode and disagree with direct mode.
|
|
246
|
+
annotations: Cel.default(spec.service?.annotations, {}),
|
|
247
|
+
},
|
|
248
|
+
spec: {
|
|
249
|
+
type: traefikEntrypointServiceType(spec),
|
|
250
|
+
// The chart stamps these two labels on the Traefik pods, and the
|
|
251
|
+
// values mapper pins both of their sources (`nameOverride`,
|
|
252
|
+
// `instanceLabelOverride`) so this selector is exact.
|
|
253
|
+
selector: {
|
|
254
|
+
'app.kubernetes.io/name': TRAEFIK_POD_NAME_LABEL_VALUE,
|
|
255
|
+
'app.kubernetes.io/instance': spec.name,
|
|
256
|
+
},
|
|
257
|
+
// @security The internal `traefik` entrypoint serves /ping, metrics
|
|
258
|
+
// and the (pinned off) dashboard. Owning the Service is what makes
|
|
259
|
+
// its absence here a structural guarantee rather than a chart value.
|
|
260
|
+
ports: [
|
|
261
|
+
{
|
|
262
|
+
name: TRAEFIK_WEB_ENTRYPOINT,
|
|
263
|
+
port: Cel.default(spec.entrypoints?.web?.exposedPort, DEFAULT_TRAEFIK_WEB_PORT),
|
|
264
|
+
targetPort: TRAEFIK_WEB_ENTRYPOINT,
|
|
265
|
+
protocol: 'TCP',
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
name: TRAEFIK_WEBSECURE_ENTRYPOINT,
|
|
269
|
+
port: Cel.default(spec.entrypoints?.websecure?.exposedPort, DEFAULT_TRAEFIK_WEBSECURE_PORT),
|
|
270
|
+
targetPort: TRAEFIK_WEBSECURE_ENTRYPOINT,
|
|
271
|
+
protocol: 'TCP',
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
},
|
|
275
|
+
id: 'traefikService',
|
|
276
|
+
});
|
|
277
|
+
// Deliberately no `dependsOn`. Ordering against the owned namespace is
|
|
278
|
+
// already implicit — the dependency resolver adds an edge from any
|
|
279
|
+
// resource whose `metadata.namespace` matches a `Namespace` in the same
|
|
280
|
+
// graph — and the Service must NOT wait for the release: a Service with
|
|
281
|
+
// no endpoints is valid, and creating it first lets a cloud
|
|
282
|
+
// load-balancer controller provision while Helm is still installing.
|
|
283
|
+
// An explicit `dependsOn` would also force TypeKro to inject ordering
|
|
284
|
+
// annotations into `metadata.annotations`, which cannot be merged into an
|
|
285
|
+
// annotation map that arrives as one schema reference.
|
|
286
|
+
const releaseStatus = helmReleaseConditionSummary(release);
|
|
287
|
+
return {
|
|
288
|
+
ready: releaseStatus.ready,
|
|
289
|
+
failed: releaseStatus.failed,
|
|
290
|
+
phase: releaseStatus.phase,
|
|
291
|
+
loadBalancer: {
|
|
292
|
+
hostname: Cel.expr(loadBalancerAddressExpression('traefikService', 'hostname')),
|
|
293
|
+
ip: Cel.expr(loadBalancerAddressExpression('traefikService', 'ip')),
|
|
294
|
+
},
|
|
295
|
+
// Read back from the owned Service rather than echoing the spec. The
|
|
296
|
+
// resource-scoped CEL form is deliberate: a `schema.spec` reference in
|
|
297
|
+
// a status field is not a resource projection and KRO drops it.
|
|
298
|
+
serviceName: Cel.expr('traefikService.metadata.name'),
|
|
299
|
+
// The chart version Flux INSTALLED, off the owned release's history —
|
|
300
|
+
// the same reasoning as `serviceName`, and the reason `version` is not
|
|
301
|
+
// a deploy-time literal here (#188).
|
|
302
|
+
version: Cel.expr(chartVersionExpression('traefikHelmRelease')),
|
|
303
|
+
};
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* The default Traefik bootstrap composition.
|
|
308
|
+
*
|
|
309
|
+
* Owns its install namespace, redirects `web` to `websecure`, and creates no
|
|
310
|
+
* default TLS resources. Use {@link makeTraefikBootstrap} for anything else.
|
|
311
|
+
*
|
|
312
|
+
* @example
|
|
313
|
+
* ```typescript
|
|
314
|
+
* const factory = traefikBootstrap.factory('direct', {
|
|
315
|
+
* namespace: 'flux-system',
|
|
316
|
+
* waitForReady: true,
|
|
317
|
+
* timeout: 600_000,
|
|
318
|
+
* kubeConfig,
|
|
319
|
+
* });
|
|
320
|
+
*
|
|
321
|
+
* const instance = await factory.deploy({
|
|
322
|
+
* name: 'traefik',
|
|
323
|
+
* namespace: 'traefik',
|
|
324
|
+
* replicas: 2,
|
|
325
|
+
* service: {
|
|
326
|
+
* type: 'LoadBalancer',
|
|
327
|
+
* annotations: {
|
|
328
|
+
* 'service.beta.kubernetes.io/aws-load-balancer-type': 'external',
|
|
329
|
+
* 'service.beta.kubernetes.io/aws-load-balancer-nlb-target-type': 'ip',
|
|
330
|
+
* 'service.beta.kubernetes.io/aws-load-balancer-scheme': 'internet-facing',
|
|
331
|
+
* },
|
|
332
|
+
* },
|
|
333
|
+
* providers: { crd: true },
|
|
334
|
+
* accessLogs: true,
|
|
335
|
+
* });
|
|
336
|
+
* ```
|
|
337
|
+
*/
|
|
338
|
+
export const traefikBootstrap = makeTraefikBootstrap();
|
|
339
|
+
//# sourceMappingURL=traefik-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traefik-bootstrap.js","sourceRoot":"","sources":["../../../../src/factories/traefik/compositions/traefik-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Traefik `HelmRepository` singleton.
|
|
3
|
+
*
|
|
4
|
+
* Every Traefik release consumes the same official chart source. Keeping that
|
|
5
|
+
* source outside consumer ownership prevents one installation's teardown from
|
|
6
|
+
* deleting or relabeling the repository another `HelmRelease` still resolves
|
|
7
|
+
* against.
|
|
8
|
+
*/
|
|
9
|
+
export declare const traefikHelmRepositoryBootstrap: import("../../../index.js").CallableComposition<{
|
|
10
|
+
name: string;
|
|
11
|
+
namespace: string;
|
|
12
|
+
url: string;
|
|
13
|
+
}, {
|
|
14
|
+
ready: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=traefik-helm-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traefik-helm-repository.d.ts","sourceRoot":"","sources":["../../../../src/factories/traefik/compositions/traefik-helm-repository.ts"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B;;;;;;EAwB1C,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { kubernetesComposition } from '../../../core/composition/imperative.js';
|
|
2
|
+
import { Cel } from '../../../core/references/cel.js';
|
|
3
|
+
import { traefikHelmRepository } from '../resources/helm.js';
|
|
4
|
+
import { TraefikHelmRepositorySingletonSpecSchema, TraefikHelmRepositorySingletonStatusSchema, } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Shared Traefik `HelmRepository` singleton.
|
|
7
|
+
*
|
|
8
|
+
* Every Traefik release consumes the same official chart source. Keeping that
|
|
9
|
+
* source outside consumer ownership prevents one installation's teardown from
|
|
10
|
+
* deleting or relabeling the repository another `HelmRelease` still resolves
|
|
11
|
+
* against.
|
|
12
|
+
*/
|
|
13
|
+
export const traefikHelmRepositoryBootstrap = kubernetesComposition({
|
|
14
|
+
name: 'traefik-helm-repository',
|
|
15
|
+
kind: 'TraefikHelmRepository',
|
|
16
|
+
spec: TraefikHelmRepositorySingletonSpecSchema,
|
|
17
|
+
status: TraefikHelmRepositorySingletonStatusSchema,
|
|
18
|
+
}, (spec) => {
|
|
19
|
+
const repository = traefikHelmRepository({
|
|
20
|
+
name: spec.name,
|
|
21
|
+
namespace: spec.namespace,
|
|
22
|
+
url: spec.url,
|
|
23
|
+
id: 'repository',
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
// The official repository is a classic (non-OCI) Helm repository, so Flux
|
|
27
|
+
// publishes a real Ready condition for it.
|
|
28
|
+
ready: Cel.expr(repository.status.conditions, '.exists(c, c.type == "Ready" && c.status == "True")'),
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=traefik-helm-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traefik-helm-repository.js","sourceRoot":"","sources":["../../../../src/factories/traefik/compositions/traefik-helm-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,wCAAwC,EACxC,0CAA0C,GAC3C,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,qBAAqB,CACjE;IACE,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,wCAAwC;IAC9C,MAAM,EAAE,0CAA0C;CACnD,EACD,CAAC,IAAI,EAAE,EAAE;IACP,MAAM,UAAU,GAAG,qBAAqB,CAAC;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,EAAE,EAAE,YAAY;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,0EAA0E;QAC1E,2CAA2C;QAC3C,KAAK,EAAE,GAAG,CAAC,IAAI,CACb,UAAU,CAAC,MAAM,CAAC,UAAU,EAC5B,qDAAqD,CACtD;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traefik factory constants.
|
|
3
|
+
*
|
|
4
|
+
* Compatibility tuple verified against the official Traefik Helm chart
|
|
5
|
+
* `traefik` 41.5.0 (appVersion `v3.7.13`, `kubeVersion >=1.25.0-0`) published on
|
|
6
|
+
* https://traefik.github.io/charts. That chart ships the `traefik.io/v1alpha1`
|
|
7
|
+
* CRDs in its own `crds/` directory, so one HelmRelease installs both the CRDs
|
|
8
|
+
* and the proxy.
|
|
9
|
+
*/
|
|
10
|
+
/** API group/version of every Traefik CRD this factory creates. */
|
|
11
|
+
export declare const TRAEFIK_API_VERSION = "traefik.io/v1alpha1";
|
|
12
|
+
/** Pinned official chart version. */
|
|
13
|
+
export declare const DEFAULT_TRAEFIK_CHART_VERSION = "41.5.0";
|
|
14
|
+
/** Traefik Proxy version bundled with {@link DEFAULT_TRAEFIK_CHART_VERSION}. */
|
|
15
|
+
export declare const DEFAULT_TRAEFIK_APP_VERSION = "v3.7.13";
|
|
16
|
+
/** Chart name inside the official repository. */
|
|
17
|
+
export declare const DEFAULT_TRAEFIK_CHART_NAME = "traefik";
|
|
18
|
+
/** Official classic (non-OCI) Helm repository. */
|
|
19
|
+
export declare const DEFAULT_TRAEFIK_REPOSITORY_URL = "https://traefik.github.io/charts";
|
|
20
|
+
/** `HelmRepository` name the bootstrap composition owns as a singleton. */
|
|
21
|
+
export declare const DEFAULT_TRAEFIK_REPOSITORY_NAME = "traefik-repo";
|
|
22
|
+
/** Namespace Traefik is installed into by default. */
|
|
23
|
+
export declare const DEFAULT_TRAEFIK_NAMESPACE = "traefik";
|
|
24
|
+
/** `IngressClass` / `providers.kubernetesCRD.ingressClass` value. */
|
|
25
|
+
export declare const DEFAULT_TRAEFIK_INGRESS_CLASS = "traefik";
|
|
26
|
+
/**
|
|
27
|
+
* Controller name Traefik v3 claims for Gateway API `GatewayClass` resources.
|
|
28
|
+
*
|
|
29
|
+
* Passed to the shared `src/factories/gateway-api` factories so a Traefik edge
|
|
30
|
+
* and an Envoy AI Gateway can coexist in one cluster.
|
|
31
|
+
*/
|
|
32
|
+
export declare const TRAEFIK_GATEWAY_CONTROLLER_NAME = "traefik.io/gateway-controller";
|
|
33
|
+
/** Plain-HTTP entrypoint name. */
|
|
34
|
+
export declare const TRAEFIK_WEB_ENTRYPOINT = "web";
|
|
35
|
+
/** TLS entrypoint name. */
|
|
36
|
+
export declare const TRAEFIK_WEBSECURE_ENTRYPOINT = "websecure";
|
|
37
|
+
/** Internal entrypoint serving `/ping`, metrics and (when enabled) the dashboard. */
|
|
38
|
+
export declare const TRAEFIK_INTERNAL_ENTRYPOINT = "traefik";
|
|
39
|
+
/**
|
|
40
|
+
* `app.kubernetes.io/name` the chart stamps on the Traefik pods.
|
|
41
|
+
*
|
|
42
|
+
* The chart derives this label from `nameOverride`, defaulting to the chart
|
|
43
|
+
* name. The values mapper pins `nameOverride` to this constant so the
|
|
44
|
+
* entrypoint Service this factory OWNS can select the chart's pods by an
|
|
45
|
+
* exactly known label rather than by whatever the chart's template computed.
|
|
46
|
+
*/
|
|
47
|
+
export declare const TRAEFIK_POD_NAME_LABEL_VALUE = "traefik";
|
|
48
|
+
/**
|
|
49
|
+
* Flux CRD policy this factory applies to install AND upgrade.
|
|
50
|
+
*
|
|
51
|
+
* Chart 41.5.0 ships the `traefik.io/v1alpha1` CRDs in its own `crds/`
|
|
52
|
+
* directory, and the helm-controller SKIPS `crds/` on upgrade by default — so a
|
|
53
|
+
* chart bump would otherwise keep serving the CRD schemas the release was
|
|
54
|
+
* first installed with.
|
|
55
|
+
*
|
|
56
|
+
* @see https://fluxcd.io/flux/components/helm/api/v2/
|
|
57
|
+
*/
|
|
58
|
+
export declare const DEFAULT_TRAEFIK_CRDS_POLICY = "CreateReplace";
|
|
59
|
+
/** Externally published port of the `web` entrypoint. */
|
|
60
|
+
export declare const DEFAULT_TRAEFIK_WEB_PORT = 80;
|
|
61
|
+
/** Externally published port of the `websecure` entrypoint. */
|
|
62
|
+
export declare const DEFAULT_TRAEFIK_WEBSECURE_PORT = 443;
|
|
63
|
+
/** Container port backing the `web` entrypoint. */
|
|
64
|
+
export declare const DEFAULT_TRAEFIK_WEB_CONTAINER_PORT = 8000;
|
|
65
|
+
/** Container port backing the `websecure` entrypoint. */
|
|
66
|
+
export declare const DEFAULT_TRAEFIK_WEBSECURE_CONTAINER_PORT = 8443;
|
|
67
|
+
/** Name of the cluster-wide default `TLSOption`, per Traefik's convention. */
|
|
68
|
+
export declare const TRAEFIK_DEFAULT_TLS_OPTION_NAME = "default";
|
|
69
|
+
/** Name of the cluster-wide default `TLSStore`, per Traefik's convention. */
|
|
70
|
+
export declare const TRAEFIK_DEFAULT_TLS_STORE_NAME = "default";
|
|
71
|
+
/**
|
|
72
|
+
* Every OSS Traefik middleware key, in CRD order.
|
|
73
|
+
*
|
|
74
|
+
* A `Middleware` must set exactly one of these, which the middleware factory
|
|
75
|
+
* enforces at the type level and re-checks before serialization.
|
|
76
|
+
*/
|
|
77
|
+
export declare const TRAEFIK_MIDDLEWARE_KINDS: readonly ["addPrefix", "basicAuth", "buffering", "chain", "circuitBreaker", "compress", "contentType", "digestAuth", "encodedCharacters", "errors", "forwardAuth", "grpcWeb", "headers", "inFlightReq", "ipAllowList", "passTLSClientCert", "plugin", "rateLimit", "redirectRegex", "redirectScheme", "replacePath", "replacePathRegex", "retry", "stripPrefix", "stripPrefixRegex"];
|
|
78
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/factories/traefik/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,qCAAqC;AACrC,eAAO,MAAM,6BAA6B,WAAW,CAAC;AACtD,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,YAAY,CAAC;AACrD,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,kDAAkD;AAClD,eAAO,MAAM,8BAA8B,qCAAqC,CAAC;AACjF,2EAA2E;AAC3E,eAAO,MAAM,+BAA+B,iBAAiB,CAAC;AAE9D,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AACnD,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,YAAY,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,kCAAkC,CAAC;AAE/E,kCAAkC;AAClC,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAC5C,2BAA2B;AAC3B,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,YAAY,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,YAAY,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,+DAA+D;AAC/D,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,mDAAmD;AACnD,eAAO,MAAM,kCAAkC,OAAO,CAAC;AACvD,yDAAyD;AACzD,eAAO,MAAM,wCAAwC,OAAO,CAAC;AAE7D,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,YAAY,CAAC;AACzD,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B,YAAY,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,sXA0B3B,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traefik factory constants.
|
|
3
|
+
*
|
|
4
|
+
* Compatibility tuple verified against the official Traefik Helm chart
|
|
5
|
+
* `traefik` 41.5.0 (appVersion `v3.7.13`, `kubeVersion >=1.25.0-0`) published on
|
|
6
|
+
* https://traefik.github.io/charts. That chart ships the `traefik.io/v1alpha1`
|
|
7
|
+
* CRDs in its own `crds/` directory, so one HelmRelease installs both the CRDs
|
|
8
|
+
* and the proxy.
|
|
9
|
+
*/
|
|
10
|
+
/** API group/version of every Traefik CRD this factory creates. */
|
|
11
|
+
export const TRAEFIK_API_VERSION = 'traefik.io/v1alpha1';
|
|
12
|
+
/** Pinned official chart version. */
|
|
13
|
+
export const DEFAULT_TRAEFIK_CHART_VERSION = '41.5.0';
|
|
14
|
+
/** Traefik Proxy version bundled with {@link DEFAULT_TRAEFIK_CHART_VERSION}. */
|
|
15
|
+
export const DEFAULT_TRAEFIK_APP_VERSION = 'v3.7.13';
|
|
16
|
+
/** Chart name inside the official repository. */
|
|
17
|
+
export const DEFAULT_TRAEFIK_CHART_NAME = 'traefik';
|
|
18
|
+
/** Official classic (non-OCI) Helm repository. */
|
|
19
|
+
export const DEFAULT_TRAEFIK_REPOSITORY_URL = 'https://traefik.github.io/charts';
|
|
20
|
+
/** `HelmRepository` name the bootstrap composition owns as a singleton. */
|
|
21
|
+
export const DEFAULT_TRAEFIK_REPOSITORY_NAME = 'traefik-repo';
|
|
22
|
+
/** Namespace Traefik is installed into by default. */
|
|
23
|
+
export const DEFAULT_TRAEFIK_NAMESPACE = 'traefik';
|
|
24
|
+
/** `IngressClass` / `providers.kubernetesCRD.ingressClass` value. */
|
|
25
|
+
export const DEFAULT_TRAEFIK_INGRESS_CLASS = 'traefik';
|
|
26
|
+
/**
|
|
27
|
+
* Controller name Traefik v3 claims for Gateway API `GatewayClass` resources.
|
|
28
|
+
*
|
|
29
|
+
* Passed to the shared `src/factories/gateway-api` factories so a Traefik edge
|
|
30
|
+
* and an Envoy AI Gateway can coexist in one cluster.
|
|
31
|
+
*/
|
|
32
|
+
export const TRAEFIK_GATEWAY_CONTROLLER_NAME = 'traefik.io/gateway-controller';
|
|
33
|
+
/** Plain-HTTP entrypoint name. */
|
|
34
|
+
export const TRAEFIK_WEB_ENTRYPOINT = 'web';
|
|
35
|
+
/** TLS entrypoint name. */
|
|
36
|
+
export const TRAEFIK_WEBSECURE_ENTRYPOINT = 'websecure';
|
|
37
|
+
/** Internal entrypoint serving `/ping`, metrics and (when enabled) the dashboard. */
|
|
38
|
+
export const TRAEFIK_INTERNAL_ENTRYPOINT = 'traefik';
|
|
39
|
+
/**
|
|
40
|
+
* `app.kubernetes.io/name` the chart stamps on the Traefik pods.
|
|
41
|
+
*
|
|
42
|
+
* The chart derives this label from `nameOverride`, defaulting to the chart
|
|
43
|
+
* name. The values mapper pins `nameOverride` to this constant so the
|
|
44
|
+
* entrypoint Service this factory OWNS can select the chart's pods by an
|
|
45
|
+
* exactly known label rather than by whatever the chart's template computed.
|
|
46
|
+
*/
|
|
47
|
+
export const TRAEFIK_POD_NAME_LABEL_VALUE = 'traefik';
|
|
48
|
+
/**
|
|
49
|
+
* Flux CRD policy this factory applies to install AND upgrade.
|
|
50
|
+
*
|
|
51
|
+
* Chart 41.5.0 ships the `traefik.io/v1alpha1` CRDs in its own `crds/`
|
|
52
|
+
* directory, and the helm-controller SKIPS `crds/` on upgrade by default — so a
|
|
53
|
+
* chart bump would otherwise keep serving the CRD schemas the release was
|
|
54
|
+
* first installed with.
|
|
55
|
+
*
|
|
56
|
+
* @see https://fluxcd.io/flux/components/helm/api/v2/
|
|
57
|
+
*/
|
|
58
|
+
export const DEFAULT_TRAEFIK_CRDS_POLICY = 'CreateReplace';
|
|
59
|
+
/** Externally published port of the `web` entrypoint. */
|
|
60
|
+
export const DEFAULT_TRAEFIK_WEB_PORT = 80;
|
|
61
|
+
/** Externally published port of the `websecure` entrypoint. */
|
|
62
|
+
export const DEFAULT_TRAEFIK_WEBSECURE_PORT = 443;
|
|
63
|
+
/** Container port backing the `web` entrypoint. */
|
|
64
|
+
export const DEFAULT_TRAEFIK_WEB_CONTAINER_PORT = 8000;
|
|
65
|
+
/** Container port backing the `websecure` entrypoint. */
|
|
66
|
+
export const DEFAULT_TRAEFIK_WEBSECURE_CONTAINER_PORT = 8443;
|
|
67
|
+
/** Name of the cluster-wide default `TLSOption`, per Traefik's convention. */
|
|
68
|
+
export const TRAEFIK_DEFAULT_TLS_OPTION_NAME = 'default';
|
|
69
|
+
/** Name of the cluster-wide default `TLSStore`, per Traefik's convention. */
|
|
70
|
+
export const TRAEFIK_DEFAULT_TLS_STORE_NAME = 'default';
|
|
71
|
+
/**
|
|
72
|
+
* Every OSS Traefik middleware key, in CRD order.
|
|
73
|
+
*
|
|
74
|
+
* A `Middleware` must set exactly one of these, which the middleware factory
|
|
75
|
+
* enforces at the type level and re-checks before serialization.
|
|
76
|
+
*/
|
|
77
|
+
export const TRAEFIK_MIDDLEWARE_KINDS = [
|
|
78
|
+
'addPrefix',
|
|
79
|
+
'basicAuth',
|
|
80
|
+
'buffering',
|
|
81
|
+
'chain',
|
|
82
|
+
'circuitBreaker',
|
|
83
|
+
'compress',
|
|
84
|
+
'contentType',
|
|
85
|
+
'digestAuth',
|
|
86
|
+
'encodedCharacters',
|
|
87
|
+
'errors',
|
|
88
|
+
'forwardAuth',
|
|
89
|
+
'grpcWeb',
|
|
90
|
+
'headers',
|
|
91
|
+
'inFlightReq',
|
|
92
|
+
'ipAllowList',
|
|
93
|
+
'passTLSClientCert',
|
|
94
|
+
'plugin',
|
|
95
|
+
'rateLimit',
|
|
96
|
+
'redirectRegex',
|
|
97
|
+
'redirectScheme',
|
|
98
|
+
'replacePath',
|
|
99
|
+
'replacePathRegex',
|
|
100
|
+
'retry',
|
|
101
|
+
'stripPrefix',
|
|
102
|
+
'stripPrefixRegex',
|
|
103
|
+
];
|
|
104
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/factories/traefik/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAEzD,qCAAqC;AACrC,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAQ,CAAC;AACtD,gFAAgF;AAChF,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC;AACrD,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AACpD,kDAAkD;AAClD,MAAM,CAAC,MAAM,8BAA8B,GAAG,kCAAkC,CAAC;AACjF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,+BAA+B,GAAG,cAAc,CAAC;AAE9D,sDAAsD;AACtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AACnD,qEAAqE;AACrE,MAAM,CAAC,MAAM,6BAA6B,GAAG,SAAS,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,+BAA+B,CAAC;AAE/E,kCAAkC;AAClC,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAC5C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,qFAAqF;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAE3D,yDAAyD;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAClD,mDAAmD;AACnD,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC;AACvD,yDAAyD;AACzD,MAAM,CAAC,MAAM,wCAAwC,GAAG,IAAI,CAAC;AAE7D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAS,CAAC;AACzD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAS,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,WAAW;IACX,WAAW;IACX,WAAW;IACX,OAAO;IACP,gBAAgB;IAChB,UAAU;IACV,aAAa;IACb,YAAY;IACZ,mBAAmB;IACnB,QAAQ;IACR,aAAa;IACb,SAAS;IACT,SAAS;IACT,aAAa;IACb,aAAa;IACb,mBAAmB;IACnB,QAAQ;IACR,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,OAAO;IACP,aAAa;IACb,kBAAkB;CACV,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traefik v3 factory.
|
|
3
|
+
*
|
|
4
|
+
* Stands Traefik up as a cluster edge — the Helm repository, the Helm release
|
|
5
|
+
* and a status contract — and exposes its `traefik.io/v1alpha1` CRDs as typed
|
|
6
|
+
* factories: `IngressRoute`, `IngressRouteTCP`, `Middleware` (the OSS
|
|
7
|
+
* middleware set as a discriminated union), `TLSOption`, `TLSStore`,
|
|
8
|
+
* `ServersTransport` and `TraefikService`.
|
|
9
|
+
*
|
|
10
|
+
* Traefik's Gateway API support comes from the shared
|
|
11
|
+
* `src/factories/gateway-api` module rather than a Traefik-specific copy of the
|
|
12
|
+
* upstream kinds.
|
|
13
|
+
*
|
|
14
|
+
* @security Secure by construction: the dashboard and the insecure API cannot
|
|
15
|
+
* be enabled through this factory, `forwardAuth` defaults to
|
|
16
|
+
* `trustForwardHeader: false` with an explicit `authResponseHeaders`
|
|
17
|
+
* allowlist, `TLSOption` defaults to TLS 1.2 with `sniStrict`, and the proxy
|
|
18
|
+
* runs non-root with a read-only root filesystem.
|
|
19
|
+
*/
|
|
20
|
+
export * from './compositions/index.js';
|
|
21
|
+
export * from './constants.js';
|
|
22
|
+
export * from './resources/index.js';
|
|
23
|
+
export * from './types.js';
|
|
24
|
+
export * from './utils/index.js';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/traefik/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|