typekro 0.3.0 → 0.4.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 +142 -1054
- package/dist/.tsbuildinfo +1 -1
- package/dist/alchemy/deployers.d.ts +0 -5
- package/dist/alchemy/deployers.d.ts.map +1 -1
- package/dist/alchemy/deployers.js +25 -72
- package/dist/alchemy/deployers.js.map +1 -1
- package/dist/core/composition/imperative.d.ts +2 -2
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +394 -10
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts +1 -9
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.js +76 -10
- package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/core/composition/typekro-runtime/types.d.ts +8 -5
- package/dist/core/composition/typekro-runtime/types.d.ts.map +1 -1
- package/dist/core/composition/typekro-runtime/types.js.map +1 -1
- package/dist/core/constants/brands.d.ts +20 -0
- package/dist/core/constants/brands.d.ts.map +1 -1
- package/dist/core/constants/brands.js +20 -0
- package/dist/core/constants/brands.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +36 -1
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +289 -4
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +57 -2
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +677 -49
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/event-filter.d.ts.map +1 -1
- package/dist/core/deployment/event-filter.js +6 -7
- package/dist/core/deployment/event-filter.js.map +1 -1
- package/dist/core/deployment/event-monitor.d.ts +36 -2
- package/dist/core/deployment/event-monitor.d.ts.map +1 -1
- package/dist/core/deployment/event-monitor.js +183 -33
- package/dist/core/deployment/event-monitor.js.map +1 -1
- package/dist/core/deployment/kro-factory.d.ts +22 -0
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +291 -27
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/readiness.d.ts.map +1 -1
- package/dist/core/deployment/readiness.js +4 -2
- package/dist/core/deployment/readiness.js.map +1 -1
- package/dist/core/deployment/rollback-manager.d.ts +2 -1
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
- package/dist/core/deployment/rollback-manager.js +5 -2
- package/dist/core/deployment/rollback-manager.js.map +1 -1
- package/dist/core/deployment/shared-utilities.js.map +1 -1
- package/dist/core/deployment/status-hydrator.d.ts +1 -1
- package/dist/core/deployment/status-hydrator.d.ts.map +1 -1
- package/dist/core/deployment/status-hydrator.js +8 -5
- package/dist/core/deployment/status-hydrator.js.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/base-strategy.js +60 -21
- package/dist/core/deployment/strategies/base-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.d.ts +7 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.js +50 -0
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.d.ts +5 -0
- package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/kro-strategy.js +53 -4
- package/dist/core/deployment/strategies/kro-strategy.js.map +1 -1
- package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -1
- package/dist/core/evaluation/cel-optimizer.js +7 -13
- package/dist/core/evaluation/cel-optimizer.js.map +1 -1
- package/dist/core/expressions/analyzer.d.ts +6 -6
- package/dist/core/expressions/analyzer.d.ts.map +1 -1
- package/dist/core/expressions/analyzer.js +40 -75
- package/dist/core/expressions/analyzer.js.map +1 -1
- package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -1
- package/dist/core/expressions/cel-conversion-engine.js +10 -11
- package/dist/core/expressions/cel-conversion-engine.js.map +1 -1
- package/dist/core/expressions/composition-integration.d.ts +2 -2
- package/dist/core/expressions/composition-integration.d.ts.map +1 -1
- package/dist/core/expressions/composition-integration.js +20 -12
- package/dist/core/expressions/composition-integration.js.map +1 -1
- package/dist/core/expressions/field-hydration-processor.d.ts +4 -1
- package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -1
- package/dist/core/expressions/field-hydration-processor.js +12 -13
- package/dist/core/expressions/field-hydration-processor.js.map +1 -1
- package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/imperative-analyzer.js +193 -49
- package/dist/core/expressions/imperative-analyzer.js.map +1 -1
- package/dist/core/expressions/index.d.ts +2 -0
- package/dist/core/expressions/index.d.ts.map +1 -1
- package/dist/core/expressions/index.js +2 -0
- package/dist/core/expressions/index.js.map +1 -1
- package/dist/core/expressions/magic-proxy-analyzer.d.ts +1 -1
- package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/magic-proxy-analyzer.js +8 -7
- package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -1
- package/dist/core/expressions/parser.d.ts +163 -0
- package/dist/core/expressions/parser.d.ts.map +1 -0
- package/dist/core/expressions/parser.js +272 -0
- package/dist/core/expressions/parser.js.map +1 -0
- package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/status-builder-analyzer.js +15 -5
- package/dist/core/expressions/status-builder-analyzer.js.map +1 -1
- package/dist/core/kubernetes/api.d.ts.map +1 -1
- package/dist/core/kubernetes/api.js +5 -6
- package/dist/core/kubernetes/api.js.map +1 -1
- package/dist/core/kubernetes/bun-api-client.d.ts +95 -0
- package/dist/core/kubernetes/bun-api-client.d.ts.map +1 -0
- package/dist/core/kubernetes/bun-api-client.js +160 -0
- package/dist/core/kubernetes/bun-api-client.js.map +1 -0
- package/dist/core/kubernetes/bun-http-library.d.ts +38 -0
- package/dist/core/kubernetes/bun-http-library.d.ts.map +1 -0
- package/dist/core/kubernetes/bun-http-library.js +133 -0
- package/dist/core/kubernetes/bun-http-library.js.map +1 -0
- package/dist/core/kubernetes/client-provider.d.ts +3 -0
- package/dist/core/kubernetes/client-provider.d.ts.map +1 -1
- package/dist/core/kubernetes/client-provider.js +32 -23
- package/dist/core/kubernetes/client-provider.js.map +1 -1
- package/dist/core/kubernetes/errors.d.ts +189 -0
- package/dist/core/kubernetes/errors.d.ts.map +1 -0
- package/dist/core/kubernetes/errors.js +298 -0
- package/dist/core/kubernetes/errors.js.map +1 -0
- package/dist/core/kubernetes/index.d.ts +19 -0
- package/dist/core/kubernetes/index.d.ts.map +1 -0
- package/dist/core/kubernetes/index.js +23 -0
- package/dist/core/kubernetes/index.js.map +1 -0
- package/dist/core/kubernetes/type-guards.d.ts +142 -0
- package/dist/core/kubernetes/type-guards.d.ts.map +1 -0
- package/dist/core/kubernetes/type-guards.js +151 -0
- package/dist/core/kubernetes/type-guards.js.map +1 -0
- package/dist/core/logging/logger.d.ts.map +1 -1
- package/dist/core/logging/logger.js +8 -0
- package/dist/core/logging/logger.js.map +1 -1
- package/dist/core/readiness/cluster-state.d.ts.map +1 -1
- package/dist/core/readiness/cluster-state.js +6 -4
- package/dist/core/readiness/cluster-state.js.map +1 -1
- package/dist/core/references/cel-evaluator.d.ts.map +1 -1
- package/dist/core/references/cel-evaluator.js +12 -2
- package/dist/core/references/cel-evaluator.js.map +1 -1
- package/dist/core/references/cel.d.ts +13 -1
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +50 -0
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/references/resolver.d.ts +28 -1
- package/dist/core/references/resolver.d.ts.map +1 -1
- package/dist/core/references/resolver.js +325 -11
- package/dist/core/references/resolver.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +27 -13
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/core/scope/resolver.d.ts +16 -0
- package/dist/core/scope/resolver.d.ts.map +1 -0
- package/dist/core/scope/resolver.js +45 -0
- package/dist/core/scope/resolver.js.map +1 -0
- package/dist/core/serialization/core.d.ts +1 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +78 -54
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/types/common.d.ts +23 -1
- package/dist/core/types/common.d.ts.map +1 -1
- package/dist/core/types/deployment.d.ts +71 -1
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/deployment.js +24 -0
- package/dist/core/types/deployment.js.map +1 -1
- package/dist/core/types/factory-scope.d.ts +42 -0
- package/dist/core/types/factory-scope.d.ts.map +1 -0
- package/dist/core/types/factory-scope.js +14 -0
- package/dist/core/types/factory-scope.js.map +1 -0
- package/dist/core/types/kubernetes.d.ts +146 -4
- package/dist/core/types/kubernetes.d.ts.map +1 -1
- package/dist/core/types/references.d.ts +47 -3
- package/dist/core/types/references.d.ts.map +1 -1
- package/dist/core/types/references.js.map +1 -1
- package/dist/core/types/serialization.d.ts +17 -6
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/utils/crd-patcher.d.ts +30 -0
- package/dist/core/utils/crd-patcher.d.ts.map +1 -0
- package/dist/core/utils/crd-patcher.js +198 -0
- package/dist/core/utils/crd-patcher.js.map +1 -0
- package/dist/core/utils/crd-schema-fix.d.ts +108 -0
- package/dist/core/utils/crd-schema-fix.d.ts.map +1 -0
- package/dist/core/utils/crd-schema-fix.js +245 -0
- package/dist/core/utils/crd-schema-fix.js.map +1 -0
- package/dist/core/utils/index.d.ts +12 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +12 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/minimal-connection-reset-suppression.d.ts +16 -0
- package/dist/core/utils/minimal-connection-reset-suppression.d.ts.map +1 -0
- package/dist/core/utils/minimal-connection-reset-suppression.js +72 -0
- package/dist/core/utils/minimal-connection-reset-suppression.js.map +1 -0
- package/dist/core/utils/output-filter.d.ts +16 -0
- package/dist/core/utils/output-filter.d.ts.map +1 -0
- package/dist/core/utils/output-filter.js +90 -0
- package/dist/core/utils/output-filter.js.map +1 -0
- package/dist/core/utils/scoped-error-suppression.d.ts +25 -0
- package/dist/core/utils/scoped-error-suppression.d.ts.map +1 -0
- package/dist/core/utils/scoped-error-suppression.js +226 -0
- package/dist/core/utils/scoped-error-suppression.js.map +1 -0
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +51 -15
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts +38 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.js +280 -0
- package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -0
- package/dist/factories/apisix/compositions/index.d.ts +5 -0
- package/dist/factories/apisix/compositions/index.d.ts.map +1 -0
- package/dist/factories/apisix/compositions/index.js +5 -0
- package/dist/factories/apisix/compositions/index.js.map +1 -0
- package/dist/factories/apisix/index.d.ts +11 -0
- package/dist/factories/apisix/index.d.ts.map +1 -0
- package/dist/factories/apisix/index.js +11 -0
- package/dist/factories/apisix/index.js.map +1 -0
- package/dist/factories/apisix/resources/helm.d.ts +59 -0
- package/dist/factories/apisix/resources/helm.d.ts.map +1 -0
- package/dist/factories/apisix/resources/helm.js +175 -0
- package/dist/factories/apisix/resources/helm.js.map +1 -0
- package/dist/factories/apisix/resources/index.d.ts +5 -0
- package/dist/factories/apisix/resources/index.d.ts.map +1 -0
- package/dist/factories/apisix/resources/index.js +5 -0
- package/dist/factories/apisix/resources/index.js.map +1 -0
- package/dist/factories/apisix/types.d.ts +339 -0
- package/dist/factories/apisix/types.d.ts.map +1 -0
- package/dist/factories/apisix/types.js +88 -0
- package/dist/factories/apisix/types.js.map +1 -0
- package/dist/factories/apisix/utils/helm-values-mapper.d.ts +19 -0
- package/dist/factories/apisix/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/apisix/utils/helm-values-mapper.js +108 -0
- package/dist/factories/apisix/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/apisix/utils/index.d.ts +5 -0
- package/dist/factories/apisix/utils/index.d.ts.map +1 -0
- package/dist/factories/apisix/utils/index.js +5 -0
- package/dist/factories/apisix/utils/index.js.map +1 -0
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts +45 -0
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts.map +1 -0
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js +323 -0
- package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js.map +1 -0
- package/dist/factories/cert-manager/compositions/index.d.ts +2 -0
- package/dist/factories/cert-manager/compositions/index.d.ts.map +1 -0
- package/dist/factories/cert-manager/compositions/index.js +2 -0
- package/dist/factories/cert-manager/compositions/index.js.map +1 -0
- package/dist/factories/cert-manager/index.d.ts +10 -0
- package/dist/factories/cert-manager/index.d.ts.map +1 -0
- package/dist/factories/cert-manager/index.js +19 -0
- package/dist/factories/cert-manager/index.js.map +1 -0
- package/dist/factories/cert-manager/resources/certificates.d.ts +39 -0
- package/dist/factories/cert-manager/resources/certificates.d.ts.map +1 -0
- package/dist/factories/cert-manager/resources/certificates.js +132 -0
- package/dist/factories/cert-manager/resources/certificates.js.map +1 -0
- package/dist/factories/cert-manager/resources/challenges.d.ts +113 -0
- package/dist/factories/cert-manager/resources/challenges.d.ts.map +1 -0
- package/dist/factories/cert-manager/resources/challenges.js +281 -0
- package/dist/factories/cert-manager/resources/challenges.js.map +1 -0
- package/dist/factories/cert-manager/resources/helm.d.ts +57 -0
- package/dist/factories/cert-manager/resources/helm.d.ts.map +1 -0
- package/dist/factories/cert-manager/resources/helm.js +390 -0
- package/dist/factories/cert-manager/resources/helm.js.map +1 -0
- package/dist/factories/cert-manager/resources/index.d.ts +5 -0
- package/dist/factories/cert-manager/resources/index.d.ts.map +1 -0
- package/dist/factories/cert-manager/resources/index.js +6 -0
- package/dist/factories/cert-manager/resources/index.js.map +1 -0
- package/dist/factories/cert-manager/resources/issuers.d.ts +79 -0
- package/dist/factories/cert-manager/resources/issuers.d.ts.map +1 -0
- package/dist/factories/cert-manager/resources/issuers.js +204 -0
- package/dist/factories/cert-manager/resources/issuers.js.map +1 -0
- package/dist/factories/cert-manager/types.d.ts +1015 -0
- package/dist/factories/cert-manager/types.d.ts.map +1 -0
- package/dist/factories/cert-manager/types.js +198 -0
- package/dist/factories/cert-manager/types.js.map +1 -0
- package/dist/factories/cert-manager/utils/helm-values-mapper.d.ts +19 -0
- package/dist/factories/cert-manager/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/cert-manager/utils/helm-values-mapper.js +117 -0
- package/dist/factories/cert-manager/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/cert-manager/utils/index.d.ts +2 -0
- package/dist/factories/cert-manager/utils/index.d.ts.map +1 -0
- package/dist/factories/cert-manager/utils/index.js +2 -0
- package/dist/factories/cert-manager/utils/index.js.map +1 -0
- package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts +220 -0
- package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts.map +1 -0
- package/dist/factories/cilium/compositions/cilium-bootstrap.js +293 -0
- package/dist/factories/cilium/compositions/cilium-bootstrap.js.map +1 -0
- package/dist/factories/cilium/compositions/index.d.ts +8 -0
- package/dist/factories/cilium/compositions/index.d.ts.map +1 -0
- package/dist/factories/cilium/compositions/index.js +11 -0
- package/dist/factories/cilium/compositions/index.js.map +1 -0
- package/dist/factories/cilium/index.d.ts +10 -0
- package/dist/factories/cilium/index.d.ts.map +1 -0
- package/dist/factories/cilium/index.js +19 -0
- package/dist/factories/cilium/index.js.map +1 -0
- package/dist/factories/cilium/resources/bgp.d.ts +10 -0
- package/dist/factories/cilium/resources/bgp.d.ts.map +1 -0
- package/dist/factories/cilium/resources/bgp.js +14 -0
- package/dist/factories/cilium/resources/bgp.js.map +1 -0
- package/dist/factories/cilium/resources/gateway.d.ts +72 -0
- package/dist/factories/cilium/resources/gateway.d.ts.map +1 -0
- package/dist/factories/cilium/resources/gateway.js +118 -0
- package/dist/factories/cilium/resources/gateway.js.map +1 -0
- package/dist/factories/cilium/resources/helm.d.ts +93 -0
- package/dist/factories/cilium/resources/helm.d.ts.map +1 -0
- package/dist/factories/cilium/resources/helm.js +377 -0
- package/dist/factories/cilium/resources/helm.js.map +1 -0
- package/dist/factories/cilium/resources/index.d.ts +14 -0
- package/dist/factories/cilium/resources/index.d.ts.map +1 -0
- package/dist/factories/cilium/resources/index.js +35 -0
- package/dist/factories/cilium/resources/index.js.map +1 -0
- package/dist/factories/cilium/resources/load-balancer.d.ts +9 -0
- package/dist/factories/cilium/resources/load-balancer.d.ts.map +1 -0
- package/dist/factories/cilium/resources/load-balancer.js +12 -0
- package/dist/factories/cilium/resources/load-balancer.js.map +1 -0
- package/dist/factories/cilium/resources/networking.d.ts +202 -0
- package/dist/factories/cilium/resources/networking.d.ts.map +1 -0
- package/dist/factories/cilium/resources/networking.js +581 -0
- package/dist/factories/cilium/resources/networking.js.map +1 -0
- package/dist/factories/cilium/resources/observability.d.ts +9 -0
- package/dist/factories/cilium/resources/observability.d.ts.map +1 -0
- package/dist/factories/cilium/resources/observability.js +11 -0
- package/dist/factories/cilium/resources/observability.js.map +1 -0
- package/dist/factories/cilium/resources/security.d.ts +10 -0
- package/dist/factories/cilium/resources/security.d.ts.map +1 -0
- package/dist/factories/cilium/resources/security.js +14 -0
- package/dist/factories/cilium/resources/security.js.map +1 -0
- package/dist/factories/cilium/types.d.ts +1001 -0
- package/dist/factories/cilium/types.d.ts.map +1 -0
- package/dist/factories/cilium/types.js +79 -0
- package/dist/factories/cilium/types.js.map +1 -0
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts +32 -0
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts.map +1 -0
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.js +152 -0
- package/dist/factories/external-dns/compositions/external-dns-bootstrap.js.map +1 -0
- package/dist/factories/external-dns/compositions/index.d.ts +2 -0
- package/dist/factories/external-dns/compositions/index.d.ts.map +1 -0
- package/dist/factories/external-dns/compositions/index.js +3 -0
- package/dist/factories/external-dns/compositions/index.js.map +1 -0
- package/dist/factories/external-dns/index.d.ts +10 -0
- package/dist/factories/external-dns/index.d.ts.map +1 -0
- package/dist/factories/external-dns/index.js +19 -0
- package/dist/factories/external-dns/index.js.map +1 -0
- package/dist/factories/external-dns/resources/dns-endpoint.d.ts +54 -0
- package/dist/factories/external-dns/resources/dns-endpoint.d.ts.map +1 -0
- package/dist/factories/external-dns/resources/dns-endpoint.js +53 -0
- package/dist/factories/external-dns/resources/dns-endpoint.js.map +1 -0
- package/dist/factories/external-dns/resources/helm.d.ts +57 -0
- package/dist/factories/external-dns/resources/helm.d.ts.map +1 -0
- package/dist/factories/external-dns/resources/helm.js +435 -0
- package/dist/factories/external-dns/resources/helm.js.map +1 -0
- package/dist/factories/external-dns/resources/index.d.ts +3 -0
- package/dist/factories/external-dns/resources/index.d.ts.map +1 -0
- package/dist/factories/external-dns/resources/index.js +4 -0
- package/dist/factories/external-dns/resources/index.js.map +1 -0
- package/dist/factories/external-dns/types.d.ts +180 -0
- package/dist/factories/external-dns/types.d.ts.map +1 -0
- package/dist/factories/external-dns/types.js +39 -0
- package/dist/factories/external-dns/types.js.map +1 -0
- package/dist/factories/flux/git-repository.d.ts +2 -2
- package/dist/factories/flux/git-repository.d.ts.map +1 -1
- package/dist/factories/helm/types.d.ts +24 -3
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/index.d.ts +7 -1
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +21 -1
- package/dist/factories/index.js.map +1 -1
- package/dist/factories/kubernetes/config/config-map.d.ts +4 -1
- package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -1
- package/dist/factories/kubernetes/config/config-map.js +4 -0
- package/dist/factories/kubernetes/config/config-map.js.map +1 -1
- package/dist/factories/kubernetes/config/secret.d.ts +6 -1
- package/dist/factories/kubernetes/config/secret.d.ts.map +1 -1
- package/dist/factories/kubernetes/config/secret.js +4 -0
- package/dist/factories/kubernetes/config/secret.js.map +1 -1
- package/dist/factories/kubernetes/networking/service.d.ts.map +1 -1
- package/dist/factories/kubernetes/networking/service.js +6 -1
- package/dist/factories/kubernetes/networking/service.js.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role-binding.js.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role.d.ts.map +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role.js +1 -1
- package/dist/factories/kubernetes/rbac/cluster-role.js.map +1 -1
- package/dist/factories/kubernetes/scheduling/priority-class.d.ts.map +1 -1
- package/dist/factories/kubernetes/scheduling/priority-class.js +1 -1
- package/dist/factories/kubernetes/scheduling/priority-class.js.map +1 -1
- package/dist/factories/kubernetes/storage/storage-class.d.ts.map +1 -1
- package/dist/factories/kubernetes/storage/storage-class.js +1 -1
- package/dist/factories/kubernetes/storage/storage-class.js.map +1 -1
- package/dist/factories/kubernetes/workloads/deployment.d.ts.map +1 -1
- package/dist/factories/kubernetes/workloads/deployment.js +9 -4
- package/dist/factories/kubernetes/workloads/deployment.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.js +2 -2
- package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts +31 -1
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.js +80 -7
- package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -1
- package/dist/factories/pebble/compositions/index.d.ts +2 -0
- package/dist/factories/pebble/compositions/index.d.ts.map +1 -0
- package/dist/factories/pebble/compositions/index.js +3 -0
- package/dist/factories/pebble/compositions/index.js.map +1 -0
- package/dist/factories/pebble/compositions/pebble-bootstrap.d.ts +56 -0
- package/dist/factories/pebble/compositions/pebble-bootstrap.d.ts.map +1 -0
- package/dist/factories/pebble/compositions/pebble-bootstrap.js +97 -0
- package/dist/factories/pebble/compositions/pebble-bootstrap.js.map +1 -0
- package/dist/factories/pebble/index.d.ts +10 -0
- package/dist/factories/pebble/index.d.ts.map +1 -0
- package/dist/factories/pebble/index.js +19 -0
- package/dist/factories/pebble/index.js.map +1 -0
- package/dist/factories/pebble/resources/helm.d.ts +99 -0
- package/dist/factories/pebble/resources/helm.d.ts.map +1 -0
- package/dist/factories/pebble/resources/helm.js +167 -0
- package/dist/factories/pebble/resources/helm.js.map +1 -0
- package/dist/factories/pebble/resources/index.d.ts +2 -0
- package/dist/factories/pebble/resources/index.d.ts.map +1 -0
- package/dist/factories/pebble/resources/index.js +3 -0
- package/dist/factories/pebble/resources/index.js.map +1 -0
- package/dist/factories/pebble/types.d.ts +184 -0
- package/dist/factories/pebble/types.d.ts.map +1 -0
- package/dist/factories/pebble/types.js +23 -0
- package/dist/factories/pebble/types.js.map +1 -0
- package/dist/factories/pebble/utils/helm-values-mapper.d.ts +21 -0
- package/dist/factories/pebble/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/pebble/utils/helm-values-mapper.js +96 -0
- package/dist/factories/pebble/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/shared.d.ts +18 -1
- package/dist/factories/shared.d.ts.map +1 -1
- package/dist/factories/shared.js +89 -8
- package/dist/factories/shared.js.map +1 -1
- package/dist/factories/simple/config/config-map.d.ts +7 -2
- package/dist/factories/simple/config/config-map.d.ts.map +1 -1
- package/dist/factories/simple/config/config-map.js +3 -0
- package/dist/factories/simple/config/config-map.js.map +1 -1
- package/dist/factories/simple/config/secret.d.ts +11 -2
- package/dist/factories/simple/config/secret.d.ts.map +1 -1
- package/dist/factories/simple/config/secret.js +23 -1
- package/dist/factories/simple/config/secret.js.map +1 -1
- package/dist/factories/simple/storage/persistent-volume-claim.d.ts.map +1 -1
- package/dist/factories/simple/storage/persistent-volume-claim.js +1 -0
- package/dist/factories/simple/storage/persistent-volume-claim.js.map +1 -1
- package/dist/factories/simple/types.d.ts +5 -1
- package/dist/factories/simple/types.d.ts.map +1 -1
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +67 -0
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/type-guards.d.ts +5 -0
- package/dist/utils/type-guards.d.ts.map +1 -1
- package/dist/utils/type-guards.js +9 -3
- package/dist/utils/type-guards.js.map +1 -1
- package/package.json +49 -5
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import * as yaml from 'js-yaml';
|
|
2
2
|
import { isKubernetesRef } from '../../../core/dependencies/type-guards.js';
|
|
3
|
+
import { getComponentLogger } from '../../../core/logging/index.js';
|
|
4
|
+
import { PatchStrategy } from '@kubernetes/client-node';
|
|
3
5
|
import { PathResolver } from '../../../core/yaml/path-resolver.js';
|
|
4
6
|
import { registerDeploymentClosure } from '../../shared.js';
|
|
7
|
+
const logger = getComponentLogger('yaml-file');
|
|
5
8
|
/**
|
|
6
9
|
* Parse YAML content into Kubernetes manifests
|
|
7
10
|
*/
|
|
@@ -15,6 +18,53 @@ function parseYamlManifests(yamlContent) {
|
|
|
15
18
|
}
|
|
16
19
|
return manifests;
|
|
17
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Apply a manifest using server-side apply (PATCH with application/apply-patch+yaml)
|
|
23
|
+
*
|
|
24
|
+
* Server-side apply is safer than replace because it:
|
|
25
|
+
* 1. Merges changes instead of replacing the entire resource
|
|
26
|
+
* 2. Tracks field ownership to prevent conflicts
|
|
27
|
+
* 3. Preserves fields managed by other controllers
|
|
28
|
+
*
|
|
29
|
+
* @param kubernetesApi - The Kubernetes API client
|
|
30
|
+
* @param manifest - The manifest to apply
|
|
31
|
+
* @param fieldManager - The field manager name (identifies who owns the fields)
|
|
32
|
+
* @param forceConflicts - Whether to force ownership of conflicting fields
|
|
33
|
+
*/
|
|
34
|
+
async function applyWithServerSideApply(kubernetesApi, manifest, fieldManager, forceConflicts) {
|
|
35
|
+
const resourceName = `${manifest.kind}/${manifest.metadata?.name}`;
|
|
36
|
+
try {
|
|
37
|
+
// Server-side apply uses PATCH with specific content type
|
|
38
|
+
// The kubernetes client's patch method supports this via options
|
|
39
|
+
// IMPORTANT: force parameter is ONLY valid with ServerSideApply strategy
|
|
40
|
+
await kubernetesApi.patch(manifest, undefined, // pretty
|
|
41
|
+
undefined, // dryRun
|
|
42
|
+
fieldManager, // fieldManager
|
|
43
|
+
forceConflicts, // force - only valid with ServerSideApply
|
|
44
|
+
PatchStrategy.ServerSideApply // patchStrategy - required for force to work
|
|
45
|
+
);
|
|
46
|
+
logger.debug('Applied resource using server-side apply', {
|
|
47
|
+
resource: resourceName,
|
|
48
|
+
fieldManager,
|
|
49
|
+
forceConflicts,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// If the resource doesn't exist, create it
|
|
54
|
+
const statusCode = error?.response?.statusCode ||
|
|
55
|
+
error?.statusCode ||
|
|
56
|
+
error?.body?.code;
|
|
57
|
+
if (statusCode === 404) {
|
|
58
|
+
logger.debug('Resource not found, creating with server-side apply', {
|
|
59
|
+
resource: resourceName,
|
|
60
|
+
});
|
|
61
|
+
await kubernetesApi.create(manifest);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
18
68
|
/**
|
|
19
69
|
* Deploy a YAML file during deployment phase
|
|
20
70
|
*
|
|
@@ -61,7 +111,11 @@ export function yamlFile(config) {
|
|
|
61
111
|
? await deploymentContext.resolveReference(config.namespace)
|
|
62
112
|
: config.namespace;
|
|
63
113
|
const resolvedContent = await pathResolver.resolveContent(config.path, config.name);
|
|
64
|
-
const
|
|
114
|
+
const rawManifests = parseYamlManifests(resolvedContent.content);
|
|
115
|
+
// Apply optional manifest transform (e.g., CRD schema fixes)
|
|
116
|
+
const manifests = config.manifestTransform
|
|
117
|
+
? rawManifests.map(config.manifestTransform)
|
|
118
|
+
: rawManifests;
|
|
65
119
|
const results = [];
|
|
66
120
|
const strategy = config.deploymentStrategy || 'replace';
|
|
67
121
|
for (const manifest of manifests) {
|
|
@@ -74,14 +128,24 @@ export function yamlFile(config) {
|
|
|
74
128
|
// For now, use the Kubernetes API even when alchemy scope is available
|
|
75
129
|
// TODO: Implement proper alchemy integration for YAML resources
|
|
76
130
|
if (deploymentContext.kubernetesApi) {
|
|
77
|
-
|
|
131
|
+
if (strategy === 'serverSideApply') {
|
|
132
|
+
await applyWithServerSideApply(deploymentContext.kubernetesApi, manifest, config.fieldManager || 'typekro', config.forceConflicts || false);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
await deploymentContext.kubernetesApi.create(manifest);
|
|
136
|
+
}
|
|
78
137
|
}
|
|
79
138
|
else {
|
|
80
139
|
throw new Error('No Kubernetes API available for YAML deployment');
|
|
81
140
|
}
|
|
82
141
|
}
|
|
83
142
|
else if (deploymentContext.kubernetesApi) {
|
|
84
|
-
|
|
143
|
+
if (strategy === 'serverSideApply') {
|
|
144
|
+
await applyWithServerSideApply(deploymentContext.kubernetesApi, manifest, config.fieldManager || 'typekro', config.forceConflicts || false);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
await deploymentContext.kubernetesApi.create(manifest);
|
|
148
|
+
}
|
|
85
149
|
}
|
|
86
150
|
else {
|
|
87
151
|
throw new Error('No deployment method available: neither alchemyScope nor kubernetesApi provided');
|
|
@@ -94,8 +158,17 @@ export function yamlFile(config) {
|
|
|
94
158
|
});
|
|
95
159
|
}
|
|
96
160
|
catch (error) {
|
|
97
|
-
//
|
|
98
|
-
|
|
161
|
+
// Extract status code from various error formats
|
|
162
|
+
const statusCode = error?.response?.statusCode ||
|
|
163
|
+
error?.statusCode ||
|
|
164
|
+
error?.body?.code ||
|
|
165
|
+
(typeof error?.message === 'string' && error.message.includes('HTTP-Code: 409')
|
|
166
|
+
? 409
|
|
167
|
+
: undefined);
|
|
168
|
+
// Handle conflicts (409) based on deployment strategy
|
|
169
|
+
// Note: 422 validation errors are NOT handled here - they should fail hard
|
|
170
|
+
// as they indicate a real problem with the manifest
|
|
171
|
+
if (statusCode === 409) {
|
|
99
172
|
const resourceName = `${manifest.kind}/${manifest.metadata?.name}`;
|
|
100
173
|
if (strategy === 'skipIfExists') {
|
|
101
174
|
console.log(`⚠️ Skipping existing resource: ${resourceName}`);
|
|
@@ -114,7 +187,8 @@ export function yamlFile(config) {
|
|
|
114
187
|
// Check if resource exists first
|
|
115
188
|
let existing;
|
|
116
189
|
try {
|
|
117
|
-
|
|
190
|
+
// In the new API, methods return objects directly (no .body wrapper)
|
|
191
|
+
existing = await deploymentContext.kubernetesApi.read({
|
|
118
192
|
apiVersion: manifest.apiVersion,
|
|
119
193
|
kind: manifest.kind,
|
|
120
194
|
metadata: {
|
|
@@ -122,7 +196,6 @@ export function yamlFile(config) {
|
|
|
122
196
|
namespace: manifest.metadata?.namespace || 'default',
|
|
123
197
|
},
|
|
124
198
|
});
|
|
125
|
-
existing = readResult.body;
|
|
126
199
|
}
|
|
127
200
|
catch (error) {
|
|
128
201
|
// If it's a 404, the resource doesn't exist
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-file.js","sourceRoot":"","sources":["../../../../src/factories/kubernetes/yaml/yaml-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"yaml-file.js","sourceRoot":"","sources":["../../../../src/factories/kubernetes/yaml/yaml-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/pebble/compositions/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/pebble/compositions/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pebble ACME Test Server Bootstrap Composition
|
|
3
|
+
*
|
|
4
|
+
* Creates a complete Pebble ACME test server deployment using HelmRepository and HelmRelease resources.
|
|
5
|
+
* Provides comprehensive configuration options and status expressions derived from actual resource status.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Complete Pebble ACME test server deployment (Pebble server + CoreDNS)
|
|
9
|
+
* - Comprehensive configuration schema with ArkType validation
|
|
10
|
+
* - Status expressions using actual resource status fields
|
|
11
|
+
* - ACME and management endpoints derived from service status
|
|
12
|
+
* - Support for both kro and direct deployment strategies
|
|
13
|
+
* - Optimized for fast testing with sensible defaults
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const pebbleFactory = pebbleBootstrap.factory('direct', {
|
|
18
|
+
* namespace: 'pebble-system',
|
|
19
|
+
* waitForReady: true
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const instance = await pebbleFactory.deploy({
|
|
23
|
+
* name: 'pebble-acme',
|
|
24
|
+
* namespace: 'pebble-system',
|
|
25
|
+
* pebble: {
|
|
26
|
+
* env: [
|
|
27
|
+
* { name: 'PEBBLE_VA_NOSLEEP', value: '1' },
|
|
28
|
+
* { name: 'PEBBLE_WFE_NONCEREJECT', value: '0' }
|
|
29
|
+
* ]
|
|
30
|
+
* },
|
|
31
|
+
* coredns: {
|
|
32
|
+
* corefileSegment: `
|
|
33
|
+
* template ANY ANY test {
|
|
34
|
+
* answer "{{ .Name }} 60 IN CNAME mysvc.{$PEBBLE_NAMESPACE}.svc.cluster.local"
|
|
35
|
+
* }
|
|
36
|
+
* `
|
|
37
|
+
* }
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const pebbleBootstrap: import("../../../core.js").CallableComposition<{
|
|
42
|
+
name: string;
|
|
43
|
+
namespace?: string;
|
|
44
|
+
version?: string;
|
|
45
|
+
email?: string;
|
|
46
|
+
}, {
|
|
47
|
+
ready: boolean;
|
|
48
|
+
phase: string;
|
|
49
|
+
version: string;
|
|
50
|
+
pebbleReady: boolean;
|
|
51
|
+
corednsReady: boolean;
|
|
52
|
+
acmeEndpoint: string;
|
|
53
|
+
managementEndpoint: string;
|
|
54
|
+
dnsServer: string;
|
|
55
|
+
}>;
|
|
56
|
+
//# sourceMappingURL=pebble-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pebble-bootstrap.d.ts","sourceRoot":"","sources":["../../../../src/factories/pebble/compositions/pebble-bootstrap.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;EAmD3B,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { kubernetesComposition } from '../../../index.js';
|
|
2
|
+
import { PebbleBootstrapConfigSchema, PebbleBootstrapStatusSchema, } from '../types.js';
|
|
3
|
+
import { pebbleHelmRepository, pebbleHelmRelease } from '../resources/helm.js';
|
|
4
|
+
import { createDefaultPebbleTestingValues } from '../utils/helm-values-mapper.js';
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to ensure version has 'v' prefix for image tags if needed
|
|
7
|
+
*/
|
|
8
|
+
function _ensureVersionPrefix(version) {
|
|
9
|
+
return version.startsWith('v') ? version : `v${version}`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Pebble ACME Test Server Bootstrap Composition
|
|
13
|
+
*
|
|
14
|
+
* Creates a complete Pebble ACME test server deployment using HelmRepository and HelmRelease resources.
|
|
15
|
+
* Provides comprehensive configuration options and status expressions derived from actual resource status.
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Complete Pebble ACME test server deployment (Pebble server + CoreDNS)
|
|
19
|
+
* - Comprehensive configuration schema with ArkType validation
|
|
20
|
+
* - Status expressions using actual resource status fields
|
|
21
|
+
* - ACME and management endpoints derived from service status
|
|
22
|
+
* - Support for both kro and direct deployment strategies
|
|
23
|
+
* - Optimized for fast testing with sensible defaults
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const pebbleFactory = pebbleBootstrap.factory('direct', {
|
|
28
|
+
* namespace: 'pebble-system',
|
|
29
|
+
* waitForReady: true
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* const instance = await pebbleFactory.deploy({
|
|
33
|
+
* name: 'pebble-acme',
|
|
34
|
+
* namespace: 'pebble-system',
|
|
35
|
+
* pebble: {
|
|
36
|
+
* env: [
|
|
37
|
+
* { name: 'PEBBLE_VA_NOSLEEP', value: '1' },
|
|
38
|
+
* { name: 'PEBBLE_WFE_NONCEREJECT', value: '0' }
|
|
39
|
+
* ]
|
|
40
|
+
* },
|
|
41
|
+
* coredns: {
|
|
42
|
+
* corefileSegment: `
|
|
43
|
+
* template ANY ANY test {
|
|
44
|
+
* answer "{{ .Name }} 60 IN CNAME mysvc.{$PEBBLE_NAMESPACE}.svc.cluster.local"
|
|
45
|
+
* }
|
|
46
|
+
* `
|
|
47
|
+
* }
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export const pebbleBootstrap = kubernetesComposition({
|
|
52
|
+
name: 'pebble-bootstrap',
|
|
53
|
+
apiVersion: 'pebble.typekro.dev/v1alpha1',
|
|
54
|
+
kind: 'PebbleBootstrap',
|
|
55
|
+
spec: PebbleBootstrapConfigSchema,
|
|
56
|
+
status: PebbleBootstrapStatusSchema,
|
|
57
|
+
}, (spec) => {
|
|
58
|
+
// Create HelmRepository for Pebble chart
|
|
59
|
+
const helmRepository = pebbleHelmRepository({
|
|
60
|
+
name: `${spec.name}-repo`,
|
|
61
|
+
namespace: 'flux-system',
|
|
62
|
+
url: 'https://jupyterhub.github.io/helm-chart/',
|
|
63
|
+
interval: '5m',
|
|
64
|
+
id: 'pebbleHelmRepository'
|
|
65
|
+
});
|
|
66
|
+
// Use default testing values optimized for fast testing
|
|
67
|
+
const mergedValues = createDefaultPebbleTestingValues();
|
|
68
|
+
// Create HelmRelease for Pebble deployment
|
|
69
|
+
const helmRelease = pebbleHelmRelease({
|
|
70
|
+
name: spec.name,
|
|
71
|
+
namespace: spec.namespace || 'default',
|
|
72
|
+
chart: {
|
|
73
|
+
name: 'pebble',
|
|
74
|
+
version: spec.version || '*',
|
|
75
|
+
},
|
|
76
|
+
repositoryRef: {
|
|
77
|
+
name: `${spec.name}-repo`,
|
|
78
|
+
namespace: 'flux-system',
|
|
79
|
+
},
|
|
80
|
+
values: mergedValues,
|
|
81
|
+
interval: '5m',
|
|
82
|
+
id: 'pebbleHelmRelease'
|
|
83
|
+
});
|
|
84
|
+
// Return status expressions based on actual resource status
|
|
85
|
+
return {
|
|
86
|
+
ready: helmRepository.status.conditions?.some((c) => c.type === 'Ready' && c.status === 'True') &&
|
|
87
|
+
helmRelease.status.conditions?.some((c) => c.type === 'Ready' && c.status === 'True') || false,
|
|
88
|
+
phase: helmRelease.status.conditions?.find((c) => c.type === 'Ready')?.status === 'True' ? 'Ready' : 'Pending',
|
|
89
|
+
version: spec.version || 'latest',
|
|
90
|
+
pebbleReady: helmRelease.status.conditions?.some((c) => c.type === 'Ready' && c.status === 'True') || false,
|
|
91
|
+
corednsReady: helmRelease.status.conditions?.some((c) => c.type === 'Ready' && c.status === 'True') || false,
|
|
92
|
+
acmeEndpoint: `https://${spec.name}.${spec.namespace || 'default'}.svc.cluster.local/dir`,
|
|
93
|
+
managementEndpoint: `https://${spec.name}.${spec.namespace || 'default'}.svc.cluster.local:15000`,
|
|
94
|
+
dnsServer: `${spec.name}-coredns.${spec.namespace || 'default'}.svc.cluster.local`
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=pebble-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pebble-bootstrap.js","sourceRoot":"","sources":["../../../../src/factories/pebble/compositions/pebble-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pebble ACME Test Server Ecosystem Factory Functions
|
|
3
|
+
*
|
|
4
|
+
* This module provides organized access to Pebble ACME test server ecosystem factory functions.
|
|
5
|
+
* Functions are organized by functional area for better maintainability.
|
|
6
|
+
*/
|
|
7
|
+
export * from './compositions/index.js';
|
|
8
|
+
export * from './resources/index.js';
|
|
9
|
+
export * from './types.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/pebble/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,cAAc,yBAAyB,CAAC;AAKxC,cAAc,sBAAsB,CAAC;AAKrC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pebble ACME Test Server Ecosystem Factory Functions
|
|
3
|
+
*
|
|
4
|
+
* This module provides organized access to Pebble ACME test server ecosystem factory functions.
|
|
5
|
+
* Functions are organized by functional area for better maintainability.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// BOOTSTRAP COMPOSITIONS
|
|
9
|
+
// =============================================================================
|
|
10
|
+
export * from './compositions/index.js';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// HELM FACTORY FUNCTIONS
|
|
13
|
+
// =============================================================================
|
|
14
|
+
export * from './resources/index.js';
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// TYPE DEFINITIONS
|
|
17
|
+
// =============================================================================
|
|
18
|
+
export * from './types.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/pebble/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAChF,cAAc,yBAAyB,CAAC;AAExC,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAChF,cAAc,sBAAsB,CAAC;AAErC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAChF,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pebble ACME Test Server Helm Integration Resources
|
|
3
|
+
*
|
|
4
|
+
* This module provides wrapper functions for creating Helm resources specifically
|
|
5
|
+
* configured for Pebble ACME test server deployments. These functions wrap the generic Helm factories
|
|
6
|
+
* and provide Pebble-specific configuration interfaces while reusing existing readiness evaluators.
|
|
7
|
+
*/
|
|
8
|
+
import type { Enhanced } from '../../../core/types/index.js';
|
|
9
|
+
import type { PebbleHelmRepositoryConfig, PebbleHelmReleaseConfig } from '../types.js';
|
|
10
|
+
import type { HelmReleaseSpec, HelmReleaseStatus } from '../../helm/types.js';
|
|
11
|
+
import type { HelmRepositorySpec, HelmRepositoryStatus } from '../../helm/helm-repository.js';
|
|
12
|
+
/**
|
|
13
|
+
* Wrapper function for creating Pebble HelmRepository resources
|
|
14
|
+
*
|
|
15
|
+
* This function wraps the generic `helmRepository` factory and provides
|
|
16
|
+
* Pebble-specific default configuration (JupyterHub Pebble Helm chart repository).
|
|
17
|
+
* It reuses the existing Helm readiness evaluator.
|
|
18
|
+
*
|
|
19
|
+
* @param config - Pebble HelmRepository configuration
|
|
20
|
+
* @returns Enhanced HelmRepository resource with Pebble-specific settings
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* Basic Pebble repository:
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const repo = pebbleHelmRepository({
|
|
26
|
+
* name: 'pebble',
|
|
27
|
+
* namespace: 'flux-system'
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* Repository with custom settings:
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const repo = pebbleHelmRepository({
|
|
35
|
+
* name: 'pebble-repo',
|
|
36
|
+
* namespace: 'flux-system',
|
|
37
|
+
* url: 'https://jupyterhub.github.io/helm-chart/',
|
|
38
|
+
* interval: '10m'
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function pebbleHelmRepository(config: PebbleHelmRepositoryConfig): Enhanced<HelmRepositorySpec, HelmRepositoryStatus>;
|
|
43
|
+
/**
|
|
44
|
+
* Wrapper function for creating Pebble HelmRelease resources
|
|
45
|
+
*
|
|
46
|
+
* This function wraps the generic `helmRelease` factory and provides
|
|
47
|
+
* Pebble-specific default configuration (chart name, repository reference).
|
|
48
|
+
* It reuses the existing Helm readiness evaluator.
|
|
49
|
+
*
|
|
50
|
+
* @param config - Pebble HelmRelease configuration
|
|
51
|
+
* @returns Enhanced HelmRelease resource with Pebble-specific settings
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* Basic Pebble release:
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const release = pebbleHelmRelease({
|
|
57
|
+
* name: 'pebble',
|
|
58
|
+
* namespace: 'pebble-system',
|
|
59
|
+
* repositoryRef: { name: 'pebble' },
|
|
60
|
+
* values: {
|
|
61
|
+
* pebble: {
|
|
62
|
+
* env: [
|
|
63
|
+
* { name: 'PEBBLE_VA_NOSLEEP', value: '1' },
|
|
64
|
+
* { name: 'PEBBLE_WFE_NONCEREJECT', value: '0' }
|
|
65
|
+
* ]
|
|
66
|
+
* }
|
|
67
|
+
* }
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* Pebble release with custom DNS configuration:
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const release = pebbleHelmRelease({
|
|
75
|
+
* name: 'pebble-acme',
|
|
76
|
+
* namespace: 'testing',
|
|
77
|
+
* repositoryRef: { name: 'pebble-repo' },
|
|
78
|
+
* values: {
|
|
79
|
+
* pebble: {
|
|
80
|
+
* config: {
|
|
81
|
+
* pebble: {
|
|
82
|
+
* httpPort: 5002,
|
|
83
|
+
* tlsPort: 5001
|
|
84
|
+
* }
|
|
85
|
+
* }
|
|
86
|
+
* },
|
|
87
|
+
* coredns: {
|
|
88
|
+
* corefileSegment: `
|
|
89
|
+
* template ANY ANY test {
|
|
90
|
+
* answer "{{ .Name }} 60 IN CNAME mysvc.{$PEBBLE_NAMESPACE}.svc.cluster.local"
|
|
91
|
+
* }
|
|
92
|
+
* `
|
|
93
|
+
* }
|
|
94
|
+
* }
|
|
95
|
+
* });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function pebbleHelmRelease(config: PebbleHelmReleaseConfig): Enhanced<HelmReleaseSpec, HelmReleaseStatus>;
|
|
99
|
+
//# sourceMappingURL=helm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helm.d.ts","sourceRoot":"","sources":["../../../../src/factories/pebble/resources/helm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAqB9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAc3H;AAqBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAyB/G"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pebble ACME Test Server Helm Integration Resources
|
|
3
|
+
*
|
|
4
|
+
* This module provides wrapper functions for creating Helm resources specifically
|
|
5
|
+
* configured for Pebble ACME test server deployments. These functions wrap the generic Helm factories
|
|
6
|
+
* and provide Pebble-specific configuration interfaces while reusing existing readiness evaluators.
|
|
7
|
+
*/
|
|
8
|
+
import { createResource } from '../../shared.js';
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// PEBBLE HELM REPOSITORY WRAPPER
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Readiness evaluator for Pebble HelmRepository resources
|
|
14
|
+
* HelmRepository is ready when it has a Ready condition with status True
|
|
15
|
+
*/
|
|
16
|
+
function pebbleHelmRepositoryReadinessEvaluator(resource) {
|
|
17
|
+
const conditions = resource.status?.conditions || [];
|
|
18
|
+
const readyCondition = conditions.find((c) => c.type === 'Ready');
|
|
19
|
+
const isReady = readyCondition?.status === 'True';
|
|
20
|
+
return {
|
|
21
|
+
ready: isReady,
|
|
22
|
+
message: isReady ? 'Pebble HelmRepository is ready' : 'Pebble HelmRepository is not ready',
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Wrapper function for creating Pebble HelmRepository resources
|
|
27
|
+
*
|
|
28
|
+
* This function wraps the generic `helmRepository` factory and provides
|
|
29
|
+
* Pebble-specific default configuration (JupyterHub Pebble Helm chart repository).
|
|
30
|
+
* It reuses the existing Helm readiness evaluator.
|
|
31
|
+
*
|
|
32
|
+
* @param config - Pebble HelmRepository configuration
|
|
33
|
+
* @returns Enhanced HelmRepository resource with Pebble-specific settings
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* Basic Pebble repository:
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const repo = pebbleHelmRepository({
|
|
39
|
+
* name: 'pebble',
|
|
40
|
+
* namespace: 'flux-system'
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* Repository with custom settings:
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const repo = pebbleHelmRepository({
|
|
48
|
+
* name: 'pebble-repo',
|
|
49
|
+
* namespace: 'flux-system',
|
|
50
|
+
* url: 'https://jupyterhub.github.io/helm-chart/',
|
|
51
|
+
* interval: '10m'
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function pebbleHelmRepository(config) {
|
|
56
|
+
return createResource({
|
|
57
|
+
...(config.id && { id: config.id }),
|
|
58
|
+
apiVersion: 'source.toolkit.fluxcd.io/v1',
|
|
59
|
+
kind: 'HelmRepository',
|
|
60
|
+
metadata: {
|
|
61
|
+
name: config.name,
|
|
62
|
+
namespace: config.namespace || 'flux-system',
|
|
63
|
+
},
|
|
64
|
+
spec: {
|
|
65
|
+
url: config.url || 'https://jupyterhub.github.io/helm-chart/',
|
|
66
|
+
interval: config.interval || '5m',
|
|
67
|
+
},
|
|
68
|
+
}).withReadinessEvaluator(pebbleHelmRepositoryReadinessEvaluator);
|
|
69
|
+
}
|
|
70
|
+
// =============================================================================
|
|
71
|
+
// PEBBLE HELM RELEASE WRAPPER
|
|
72
|
+
// =============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* Readiness evaluator for Pebble HelmRelease resources
|
|
75
|
+
* HelmRelease is ready when it has a Ready condition with status True
|
|
76
|
+
*/
|
|
77
|
+
function pebbleHelmReleaseReadinessEvaluator(resource) {
|
|
78
|
+
const conditions = resource.status?.conditions || [];
|
|
79
|
+
const readyCondition = conditions.find((c) => c.type === 'Ready');
|
|
80
|
+
const isReady = readyCondition?.status === 'True';
|
|
81
|
+
return {
|
|
82
|
+
ready: isReady,
|
|
83
|
+
message: isReady ? 'Pebble HelmRelease is ready' : 'Pebble HelmRelease is not ready',
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Wrapper function for creating Pebble HelmRelease resources
|
|
88
|
+
*
|
|
89
|
+
* This function wraps the generic `helmRelease` factory and provides
|
|
90
|
+
* Pebble-specific default configuration (chart name, repository reference).
|
|
91
|
+
* It reuses the existing Helm readiness evaluator.
|
|
92
|
+
*
|
|
93
|
+
* @param config - Pebble HelmRelease configuration
|
|
94
|
+
* @returns Enhanced HelmRelease resource with Pebble-specific settings
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* Basic Pebble release:
|
|
98
|
+
* ```typescript
|
|
99
|
+
* const release = pebbleHelmRelease({
|
|
100
|
+
* name: 'pebble',
|
|
101
|
+
* namespace: 'pebble-system',
|
|
102
|
+
* repositoryRef: { name: 'pebble' },
|
|
103
|
+
* values: {
|
|
104
|
+
* pebble: {
|
|
105
|
+
* env: [
|
|
106
|
+
* { name: 'PEBBLE_VA_NOSLEEP', value: '1' },
|
|
107
|
+
* { name: 'PEBBLE_WFE_NONCEREJECT', value: '0' }
|
|
108
|
+
* ]
|
|
109
|
+
* }
|
|
110
|
+
* }
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* Pebble release with custom DNS configuration:
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const release = pebbleHelmRelease({
|
|
118
|
+
* name: 'pebble-acme',
|
|
119
|
+
* namespace: 'testing',
|
|
120
|
+
* repositoryRef: { name: 'pebble-repo' },
|
|
121
|
+
* values: {
|
|
122
|
+
* pebble: {
|
|
123
|
+
* config: {
|
|
124
|
+
* pebble: {
|
|
125
|
+
* httpPort: 5002,
|
|
126
|
+
* tlsPort: 5001
|
|
127
|
+
* }
|
|
128
|
+
* }
|
|
129
|
+
* },
|
|
130
|
+
* coredns: {
|
|
131
|
+
* corefileSegment: `
|
|
132
|
+
* template ANY ANY test {
|
|
133
|
+
* answer "{{ .Name }} 60 IN CNAME mysvc.{$PEBBLE_NAMESPACE}.svc.cluster.local"
|
|
134
|
+
* }
|
|
135
|
+
* `
|
|
136
|
+
* }
|
|
137
|
+
* }
|
|
138
|
+
* });
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export function pebbleHelmRelease(config) {
|
|
142
|
+
return createResource({
|
|
143
|
+
...(config.id && { id: config.id }),
|
|
144
|
+
apiVersion: 'helm.toolkit.fluxcd.io/v2',
|
|
145
|
+
kind: 'HelmRelease',
|
|
146
|
+
metadata: {
|
|
147
|
+
name: config.name,
|
|
148
|
+
namespace: config.namespace || 'default',
|
|
149
|
+
},
|
|
150
|
+
spec: {
|
|
151
|
+
chart: {
|
|
152
|
+
spec: {
|
|
153
|
+
chart: config.chart?.name || 'pebble',
|
|
154
|
+
version: config.chart?.version || '*',
|
|
155
|
+
sourceRef: {
|
|
156
|
+
kind: 'HelmRepository',
|
|
157
|
+
name: config.repositoryRef?.name || 'pebble-repo',
|
|
158
|
+
namespace: config.repositoryRef?.namespace || 'flux-system',
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
interval: config.interval || '5m',
|
|
163
|
+
...(config.values && { values: config.values }),
|
|
164
|
+
},
|
|
165
|
+
}).withReadinessEvaluator(pebbleHelmReleaseReadinessEvaluator);
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=helm.js.map
|