@reyemtech/nimbus 1.3.0 → 2.0.1
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 +32 -28
- package/dist/cjs/access/dns.d.ts +26 -0
- package/dist/cjs/access/dns.d.ts.map +1 -0
- package/dist/cjs/access/dns.js +136 -0
- package/dist/cjs/access/dns.js.map +1 -0
- package/dist/cjs/access/index.d.ts +30 -0
- package/dist/cjs/access/index.d.ts.map +1 -0
- package/dist/cjs/access/index.js +45 -0
- package/dist/cjs/access/index.js.map +1 -0
- package/dist/cjs/access/interfaces.d.ts +97 -0
- package/dist/cjs/access/interfaces.d.ts.map +1 -0
- package/dist/cjs/access/interfaces.js +17 -0
- package/dist/cjs/access/interfaces.js.map +1 -0
- package/dist/cjs/access/proxy.d.ts +21 -0
- package/dist/cjs/access/proxy.d.ts.map +1 -0
- package/dist/cjs/access/proxy.js +155 -0
- package/dist/cjs/access/proxy.js.map +1 -0
- package/dist/cjs/access/tailscale-dns.d.ts +28 -0
- package/dist/cjs/access/tailscale-dns.d.ts.map +1 -0
- package/dist/cjs/access/tailscale-dns.js +131 -0
- package/dist/cjs/access/tailscale-dns.js.map +1 -0
- package/dist/cjs/access/tailscale.d.ts +14 -0
- package/dist/cjs/access/tailscale.d.ts.map +1 -0
- package/dist/cjs/access/tailscale.js +135 -0
- package/dist/cjs/access/tailscale.js.map +1 -0
- package/dist/cjs/access/wireguard.d.ts +14 -0
- package/dist/cjs/access/wireguard.d.ts.map +1 -0
- package/dist/cjs/access/wireguard.js +140 -0
- package/dist/cjs/access/wireguard.js.map +1 -0
- package/dist/cjs/argocd/app.d.ts +31 -0
- package/dist/cjs/argocd/app.d.ts.map +1 -0
- package/dist/cjs/argocd/app.js +194 -0
- package/dist/cjs/argocd/app.js.map +1 -0
- package/dist/cjs/argocd/argocd.d.ts +33 -0
- package/dist/cjs/argocd/argocd.d.ts.map +1 -0
- package/dist/cjs/argocd/argocd.js +182 -0
- package/dist/cjs/argocd/argocd.js.map +1 -0
- package/dist/cjs/argocd/external-secrets.d.ts +23 -0
- package/dist/cjs/argocd/external-secrets.d.ts.map +1 -0
- package/dist/cjs/argocd/external-secrets.js +121 -0
- package/dist/cjs/argocd/external-secrets.js.map +1 -0
- package/dist/cjs/argocd/index.d.ts +18 -0
- package/dist/cjs/argocd/index.d.ts.map +1 -0
- package/dist/cjs/argocd/index.js +27 -0
- package/dist/cjs/argocd/index.js.map +1 -0
- package/dist/cjs/argocd/interfaces.d.ts +144 -0
- package/dist/cjs/argocd/interfaces.d.ts.map +1 -0
- package/dist/cjs/argocd/interfaces.js +8 -0
- package/dist/cjs/argocd/interfaces.js.map +1 -0
- package/dist/cjs/argocd/project.d.ts +23 -0
- package/dist/cjs/argocd/project.d.ts.map +1 -0
- package/dist/cjs/argocd/project.js +93 -0
- package/dist/cjs/argocd/project.js.map +1 -0
- package/dist/cjs/argocd/repo.d.ts +15 -0
- package/dist/cjs/argocd/repo.d.ts.map +1 -0
- package/dist/cjs/argocd/repo.js +83 -0
- package/dist/cjs/argocd/repo.js.map +1 -0
- package/dist/cjs/argocd/secrets.d.ts +23 -0
- package/dist/cjs/argocd/secrets.d.ts.map +1 -0
- package/dist/cjs/argocd/secrets.js +87 -0
- package/dist/cjs/argocd/secrets.js.map +1 -0
- package/dist/cjs/backup/index.d.ts +20 -0
- package/dist/cjs/backup/index.d.ts.map +1 -0
- package/dist/cjs/backup/index.js +206 -0
- package/dist/cjs/backup/index.js.map +1 -0
- package/dist/cjs/backup/interfaces.d.ts +29 -0
- package/dist/cjs/backup/interfaces.d.ts.map +1 -0
- package/dist/cjs/backup/interfaces.js +3 -0
- package/dist/cjs/backup/interfaces.js.map +1 -0
- package/dist/cjs/cache/cache.d.ts +38 -0
- package/dist/cjs/cache/cache.d.ts.map +1 -0
- package/dist/cjs/cache/cache.js +189 -0
- package/dist/cjs/cache/cache.js.map +1 -0
- package/dist/cjs/cache/index.d.ts +2 -0
- package/dist/cjs/cache/index.d.ts.map +1 -1
- package/dist/cjs/cache/index.js +7 -0
- package/dist/cjs/cache/index.js.map +1 -1
- package/dist/cjs/cache/interfaces.d.ts +20 -0
- package/dist/cjs/cache/interfaces.d.ts.map +1 -1
- package/dist/cjs/cache/interfaces.js +18 -0
- package/dist/cjs/cache/interfaces.js.map +1 -1
- package/dist/cjs/cluster/index.d.ts +1 -1
- package/dist/cjs/cluster/index.d.ts.map +1 -1
- package/dist/cjs/cluster/interfaces.d.ts +18 -1
- package/dist/cjs/cluster/interfaces.d.ts.map +1 -1
- package/dist/cjs/database/index.d.ts +1 -0
- package/dist/cjs/database/index.d.ts.map +1 -1
- package/dist/cjs/database/index.js +5 -0
- package/dist/cjs/database/index.js.map +1 -1
- package/dist/cjs/database/interfaces.d.ts +19 -0
- package/dist/cjs/database/interfaces.d.ts.map +1 -1
- package/dist/cjs/database/interfaces.js +20 -0
- package/dist/cjs/database/interfaces.js.map +1 -1
- package/dist/cjs/dns/index.d.ts +1 -0
- package/dist/cjs/dns/index.d.ts.map +1 -1
- package/dist/cjs/dns/index.js +3 -0
- package/dist/cjs/dns/index.js.map +1 -1
- package/dist/cjs/dns/interfaces.d.ts +11 -0
- package/dist/cjs/dns/interfaces.d.ts.map +1 -1
- package/dist/cjs/dns/interfaces.js +12 -0
- package/dist/cjs/dns/interfaces.js.map +1 -1
- package/dist/cjs/email/index.d.ts +41 -0
- package/dist/cjs/email/index.d.ts.map +1 -0
- package/dist/cjs/email/index.js +318 -0
- package/dist/cjs/email/index.js.map +1 -0
- package/dist/cjs/email/interfaces.d.ts +119 -0
- package/dist/cjs/email/interfaces.d.ts.map +1 -0
- package/dist/cjs/email/interfaces.js +19 -0
- package/dist/cjs/email/interfaces.js.map +1 -0
- package/dist/cjs/factories/cluster.d.ts +1 -1
- package/dist/cjs/factories/cluster.d.ts.map +1 -1
- package/dist/cjs/factories/cluster.js +16 -0
- package/dist/cjs/factories/cluster.js.map +1 -1
- package/dist/cjs/factories/index.d.ts +1 -1
- package/dist/cjs/factories/index.d.ts.map +1 -1
- package/dist/cjs/factories/index.js.map +1 -1
- package/dist/cjs/factories/types.d.ts +26 -0
- package/dist/cjs/factories/types.d.ts.map +1 -1
- package/dist/cjs/factories/types.js.map +1 -1
- package/dist/cjs/index.d.ts +26 -5
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +72 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/network/index.d.ts +1 -0
- package/dist/cjs/network/index.d.ts.map +1 -1
- package/dist/cjs/network/index.js +3 -1
- package/dist/cjs/network/index.js.map +1 -1
- package/dist/cjs/network/interfaces.d.ts +6 -0
- package/dist/cjs/network/interfaces.d.ts.map +1 -1
- package/dist/cjs/network/interfaces.js +7 -0
- package/dist/cjs/network/interfaces.js.map +1 -1
- package/dist/cjs/nimbus/index.d.ts +28 -0
- package/dist/cjs/nimbus/index.d.ts.map +1 -0
- package/dist/cjs/nimbus/index.js +44 -0
- package/dist/cjs/nimbus/index.js.map +1 -0
- package/dist/cjs/nimbus/interfaces.d.ts +64 -0
- package/dist/cjs/nimbus/interfaces.d.ts.map +1 -0
- package/dist/cjs/nimbus/interfaces.js +10 -0
- package/dist/cjs/nimbus/interfaces.js.map +1 -0
- package/dist/cjs/nimbus/registry.d.ts +19 -0
- package/dist/cjs/nimbus/registry.d.ts.map +1 -0
- package/dist/cjs/nimbus/registry.js +123 -0
- package/dist/cjs/nimbus/registry.js.map +1 -0
- package/dist/cjs/observability/alerts.d.ts +51 -0
- package/dist/cjs/observability/alerts.d.ts.map +1 -0
- package/dist/cjs/observability/alerts.js +281 -0
- package/dist/cjs/observability/alerts.js.map +1 -0
- package/dist/cjs/observability/dashboards/_helpers.d.ts +38 -0
- package/dist/cjs/observability/dashboards/_helpers.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/_helpers.js +141 -0
- package/dist/cjs/observability/dashboards/_helpers.js.map +1 -0
- package/dist/cjs/observability/dashboards/alerts.d.ts +12 -0
- package/dist/cjs/observability/dashboards/alerts.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/alerts.js +261 -0
- package/dist/cjs/observability/dashboards/alerts.js.map +1 -0
- package/dist/cjs/observability/dashboards/argocd-app.d.ts +18 -0
- package/dist/cjs/observability/dashboards/argocd-app.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/argocd-app.js +212 -0
- package/dist/cjs/observability/dashboards/argocd-app.js.map +1 -0
- package/dist/cjs/observability/dashboards/argocd.d.ts +9 -0
- package/dist/cjs/observability/dashboards/argocd.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/argocd.js +141 -0
- package/dist/cjs/observability/dashboards/argocd.js.map +1 -0
- package/dist/cjs/observability/dashboards/cert-manager.d.ts +9 -0
- package/dist/cjs/observability/dashboards/cert-manager.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/cert-manager.js +167 -0
- package/dist/cjs/observability/dashboards/cert-manager.js.map +1 -0
- package/dist/cjs/observability/dashboards/cnpg-cluster.d.ts +15 -0
- package/dist/cjs/observability/dashboards/cnpg-cluster.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/cnpg-cluster.js +376 -0
- package/dist/cjs/observability/dashboards/cnpg-cluster.js.map +1 -0
- package/dist/cjs/observability/dashboards/cnpg.d.ts +10 -0
- package/dist/cjs/observability/dashboards/cnpg.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/cnpg.js +181 -0
- package/dist/cjs/observability/dashboards/cnpg.js.map +1 -0
- package/dist/cjs/observability/dashboards/index.d.ts +28 -0
- package/dist/cjs/observability/dashboards/index.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/index.js +159 -0
- package/dist/cjs/observability/dashboards/index.js.map +1 -0
- package/dist/cjs/observability/dashboards/loki.d.ts +9 -0
- package/dist/cjs/observability/dashboards/loki.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/loki.js +113 -0
- package/dist/cjs/observability/dashboards/loki.js.map +1 -0
- package/dist/cjs/observability/dashboards/mariadb-cluster.d.ts +15 -0
- package/dist/cjs/observability/dashboards/mariadb-cluster.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/mariadb-cluster.js +424 -0
- package/dist/cjs/observability/dashboards/mariadb-cluster.js.map +1 -0
- package/dist/cjs/observability/dashboards/mariadb.d.ts +10 -0
- package/dist/cjs/observability/dashboards/mariadb.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/mariadb.js +181 -0
- package/dist/cjs/observability/dashboards/mariadb.js.map +1 -0
- package/dist/cjs/observability/dashboards/minio.d.ts +9 -0
- package/dist/cjs/observability/dashboards/minio.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/minio.js +267 -0
- package/dist/cjs/observability/dashboards/minio.js.map +1 -0
- package/dist/cjs/observability/dashboards/neo4j-cluster.d.ts +16 -0
- package/dist/cjs/observability/dashboards/neo4j-cluster.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/neo4j-cluster.js +223 -0
- package/dist/cjs/observability/dashboards/neo4j-cluster.js.map +1 -0
- package/dist/cjs/observability/dashboards/neo4j.d.ts +9 -0
- package/dist/cjs/observability/dashboards/neo4j.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/neo4j.js +156 -0
- package/dist/cjs/observability/dashboards/neo4j.js.map +1 -0
- package/dist/cjs/observability/dashboards/redis.d.ts +9 -0
- package/dist/cjs/observability/dashboards/redis.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/redis.js +221 -0
- package/dist/cjs/observability/dashboards/redis.js.map +1 -0
- package/dist/cjs/observability/dashboards/traefik.d.ts +9 -0
- package/dist/cjs/observability/dashboards/traefik.d.ts.map +1 -0
- package/dist/cjs/observability/dashboards/traefik.js +387 -0
- package/dist/cjs/observability/dashboards/traefik.js.map +1 -0
- package/dist/cjs/observability/index.d.ts +10 -0
- package/dist/cjs/observability/index.d.ts.map +1 -0
- package/dist/cjs/observability/index.js +14 -0
- package/dist/cjs/observability/index.js.map +1 -0
- package/dist/cjs/observability/interfaces.d.ts +173 -0
- package/dist/cjs/observability/interfaces.d.ts.map +1 -0
- package/dist/cjs/observability/interfaces.js +11 -0
- package/dist/cjs/observability/interfaces.js.map +1 -0
- package/dist/cjs/observability/stack.d.ts +31 -0
- package/dist/cjs/observability/stack.d.ts.map +1 -0
- package/dist/cjs/observability/stack.js +523 -0
- package/dist/cjs/observability/stack.js.map +1 -0
- package/dist/cjs/operator/cnpg.d.ts +22 -0
- package/dist/cjs/operator/cnpg.d.ts.map +1 -0
- package/dist/cjs/operator/cnpg.js +412 -0
- package/dist/cjs/operator/cnpg.js.map +1 -0
- package/dist/cjs/operator/index.d.ts +48 -0
- package/dist/cjs/operator/index.d.ts.map +1 -0
- package/dist/cjs/operator/index.js +155 -0
- package/dist/cjs/operator/index.js.map +1 -0
- package/dist/cjs/operator/interfaces.d.ts +192 -0
- package/dist/cjs/operator/interfaces.d.ts.map +1 -0
- package/dist/cjs/operator/interfaces.js +20 -0
- package/dist/cjs/operator/interfaces.js.map +1 -0
- package/dist/cjs/operator/mariadb.d.ts +22 -0
- package/dist/cjs/operator/mariadb.d.ts.map +1 -0
- package/dist/cjs/operator/mariadb.js +389 -0
- package/dist/cjs/operator/mariadb.js.map +1 -0
- package/dist/cjs/operator/minio.d.ts +37 -0
- package/dist/cjs/operator/minio.d.ts.map +1 -0
- package/dist/cjs/operator/minio.js +364 -0
- package/dist/cjs/operator/minio.js.map +1 -0
- package/dist/cjs/operator/neo4j.d.ts +48 -0
- package/dist/cjs/operator/neo4j.d.ts.map +1 -0
- package/dist/cjs/operator/neo4j.js +431 -0
- package/dist/cjs/operator/neo4j.js.map +1 -0
- package/dist/cjs/platform/components/argocd.d.ts +9 -0
- package/dist/cjs/platform/components/argocd.d.ts.map +1 -0
- package/dist/cjs/platform/components/argocd.js +82 -0
- package/dist/cjs/platform/components/argocd.js.map +1 -0
- package/dist/cjs/platform/components/cert-manager.d.ts +9 -0
- package/dist/cjs/platform/components/cert-manager.d.ts.map +1 -0
- package/dist/cjs/platform/components/cert-manager.js +56 -0
- package/dist/cjs/platform/components/cert-manager.js.map +1 -0
- package/dist/cjs/platform/components/descheduler.d.ts +9 -0
- package/dist/cjs/platform/components/descheduler.d.ts.map +1 -0
- package/dist/cjs/platform/components/descheduler.js +67 -0
- package/dist/cjs/platform/components/descheduler.js.map +1 -0
- package/dist/cjs/platform/components/external-dns.d.ts +9 -0
- package/dist/cjs/platform/components/external-dns.d.ts.map +1 -0
- package/dist/cjs/platform/components/external-dns.js +83 -0
- package/dist/cjs/platform/components/external-dns.js.map +1 -0
- package/dist/cjs/platform/components/external-secrets.d.ts +9 -0
- package/dist/cjs/platform/components/external-secrets.d.ts.map +1 -0
- package/dist/cjs/platform/components/external-secrets.js +62 -0
- package/dist/cjs/platform/components/external-secrets.js.map +1 -0
- package/dist/cjs/platform/components/index.d.ts +17 -0
- package/dist/cjs/platform/components/index.d.ts.map +1 -0
- package/dist/cjs/platform/components/index.js +28 -0
- package/dist/cjs/platform/components/index.js.map +1 -0
- package/dist/cjs/platform/components/oauth2-proxy.d.ts +14 -0
- package/dist/cjs/platform/components/oauth2-proxy.d.ts.map +1 -0
- package/dist/cjs/platform/components/oauth2-proxy.js +80 -0
- package/dist/cjs/platform/components/oauth2-proxy.js.map +1 -0
- package/dist/cjs/platform/components/traefik.d.ts +9 -0
- package/dist/cjs/platform/components/traefik.d.ts.map +1 -0
- package/dist/cjs/platform/components/traefik.js +74 -0
- package/dist/cjs/platform/components/traefik.js.map +1 -0
- package/dist/cjs/platform/components/vault.d.ts +12 -0
- package/dist/cjs/platform/components/vault.d.ts.map +1 -0
- package/dist/cjs/platform/components/vault.js +474 -0
- package/dist/cjs/platform/components/vault.js.map +1 -0
- package/dist/cjs/platform/index.d.ts +2 -1
- package/dist/cjs/platform/index.d.ts.map +1 -1
- package/dist/cjs/platform/index.js +3 -1
- package/dist/cjs/platform/index.js.map +1 -1
- package/dist/cjs/platform/interfaces.d.ts +73 -1
- package/dist/cjs/platform/interfaces.d.ts.map +1 -1
- package/dist/cjs/platform/interfaces.js +8 -0
- package/dist/cjs/platform/interfaces.js.map +1 -1
- package/dist/cjs/platform/stack.d.ts +1 -1
- package/dist/cjs/platform/stack.d.ts.map +1 -1
- package/dist/cjs/platform/stack.js +363 -153
- package/dist/cjs/platform/stack.js.map +1 -1
- package/dist/cjs/queue/index.d.ts +1 -0
- package/dist/cjs/queue/index.d.ts.map +1 -1
- package/dist/cjs/queue/index.js +5 -0
- package/dist/cjs/queue/index.js.map +1 -1
- package/dist/cjs/queue/interfaces.d.ts +20 -0
- package/dist/cjs/queue/interfaces.d.ts.map +1 -1
- package/dist/cjs/queue/interfaces.js +21 -0
- package/dist/cjs/queue/interfaces.js.map +1 -1
- package/dist/cjs/rackspace/cluster.d.ts +30 -0
- package/dist/cjs/rackspace/cluster.d.ts.map +1 -0
- package/dist/cjs/rackspace/cluster.js +116 -0
- package/dist/cjs/rackspace/cluster.js.map +1 -0
- package/dist/cjs/rackspace/index.d.ts +7 -0
- package/dist/cjs/rackspace/index.d.ts.map +1 -0
- package/dist/cjs/rackspace/index.js +11 -0
- package/dist/cjs/rackspace/index.js.map +1 -0
- package/dist/cjs/secrets/index.d.ts +1 -0
- package/dist/cjs/secrets/index.d.ts.map +1 -1
- package/dist/cjs/secrets/index.js +3 -0
- package/dist/cjs/secrets/index.js.map +1 -1
- package/dist/cjs/secrets/interfaces.d.ts +7 -0
- package/dist/cjs/secrets/interfaces.d.ts.map +1 -1
- package/dist/cjs/secrets/interfaces.js +8 -0
- package/dist/cjs/secrets/interfaces.js.map +1 -1
- package/dist/cjs/state/index.d.ts +1 -0
- package/dist/cjs/state/index.d.ts.map +1 -1
- package/dist/cjs/state/index.js +3 -0
- package/dist/cjs/state/index.js.map +1 -1
- package/dist/cjs/state/interfaces.d.ts +6 -0
- package/dist/cjs/state/interfaces.d.ts.map +1 -1
- package/dist/cjs/state/interfaces.js +7 -0
- package/dist/cjs/state/interfaces.js.map +1 -1
- package/dist/cjs/types/cloud-target.d.ts +7 -0
- package/dist/cjs/types/cloud-target.d.ts.map +1 -1
- package/dist/cjs/types/cloud-target.js +9 -2
- package/dist/cjs/types/cloud-target.js.map +1 -1
- package/dist/cjs/types/exposed-service.d.ts +20 -0
- package/dist/cjs/types/exposed-service.d.ts.map +1 -0
- package/dist/cjs/types/exposed-service.js +8 -0
- package/dist/cjs/types/exposed-service.js.map +1 -0
- package/dist/cjs/types/index.d.ts +3 -1
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +5 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/storage-tiers.d.ts +26 -0
- package/dist/cjs/types/storage-tiers.d.ts.map +1 -0
- package/dist/cjs/types/storage-tiers.js +30 -0
- package/dist/cjs/types/storage-tiers.js.map +1 -0
- package/dist/cjs/utils/ensure-namespace.d.ts +7 -0
- package/dist/cjs/utils/ensure-namespace.d.ts.map +1 -0
- package/dist/cjs/utils/ensure-namespace.js +53 -0
- package/dist/cjs/utils/ensure-namespace.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +3 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/access/dns.d.ts +26 -0
- package/dist/esm/access/dns.d.ts.map +1 -0
- package/dist/esm/access/dns.js +136 -0
- package/dist/esm/access/dns.js.map +1 -0
- package/dist/esm/access/index.d.ts +30 -0
- package/dist/esm/access/index.d.ts.map +1 -0
- package/dist/esm/access/index.js +45 -0
- package/dist/esm/access/index.js.map +1 -0
- package/dist/esm/access/interfaces.d.ts +97 -0
- package/dist/esm/access/interfaces.d.ts.map +1 -0
- package/dist/esm/access/interfaces.js +17 -0
- package/dist/esm/access/interfaces.js.map +1 -0
- package/dist/esm/access/proxy.d.ts +21 -0
- package/dist/esm/access/proxy.d.ts.map +1 -0
- package/dist/esm/access/proxy.js +155 -0
- package/dist/esm/access/proxy.js.map +1 -0
- package/dist/esm/access/tailscale-dns.d.ts +28 -0
- package/dist/esm/access/tailscale-dns.d.ts.map +1 -0
- package/dist/esm/access/tailscale-dns.js +131 -0
- package/dist/esm/access/tailscale-dns.js.map +1 -0
- package/dist/esm/access/tailscale.d.ts +14 -0
- package/dist/esm/access/tailscale.d.ts.map +1 -0
- package/dist/esm/access/tailscale.js +135 -0
- package/dist/esm/access/tailscale.js.map +1 -0
- package/dist/esm/access/wireguard.d.ts +14 -0
- package/dist/esm/access/wireguard.d.ts.map +1 -0
- package/dist/esm/access/wireguard.js +140 -0
- package/dist/esm/access/wireguard.js.map +1 -0
- package/dist/esm/argocd/app.d.ts +31 -0
- package/dist/esm/argocd/app.d.ts.map +1 -0
- package/dist/esm/argocd/app.js +194 -0
- package/dist/esm/argocd/app.js.map +1 -0
- package/dist/esm/argocd/argocd.d.ts +33 -0
- package/dist/esm/argocd/argocd.d.ts.map +1 -0
- package/dist/esm/argocd/argocd.js +182 -0
- package/dist/esm/argocd/argocd.js.map +1 -0
- package/dist/esm/argocd/external-secrets.d.ts +23 -0
- package/dist/esm/argocd/external-secrets.d.ts.map +1 -0
- package/dist/esm/argocd/external-secrets.js +121 -0
- package/dist/esm/argocd/external-secrets.js.map +1 -0
- package/dist/esm/argocd/index.d.ts +18 -0
- package/dist/esm/argocd/index.d.ts.map +1 -0
- package/dist/esm/argocd/index.js +27 -0
- package/dist/esm/argocd/index.js.map +1 -0
- package/dist/esm/argocd/interfaces.d.ts +144 -0
- package/dist/esm/argocd/interfaces.d.ts.map +1 -0
- package/dist/esm/argocd/interfaces.js +8 -0
- package/dist/esm/argocd/interfaces.js.map +1 -0
- package/dist/esm/argocd/project.d.ts +23 -0
- package/dist/esm/argocd/project.d.ts.map +1 -0
- package/dist/esm/argocd/project.js +93 -0
- package/dist/esm/argocd/project.js.map +1 -0
- package/dist/esm/argocd/repo.d.ts +15 -0
- package/dist/esm/argocd/repo.d.ts.map +1 -0
- package/dist/esm/argocd/repo.js +83 -0
- package/dist/esm/argocd/repo.js.map +1 -0
- package/dist/esm/argocd/secrets.d.ts +23 -0
- package/dist/esm/argocd/secrets.d.ts.map +1 -0
- package/dist/esm/argocd/secrets.js +87 -0
- package/dist/esm/argocd/secrets.js.map +1 -0
- package/dist/esm/backup/index.d.ts +20 -0
- package/dist/esm/backup/index.d.ts.map +1 -0
- package/dist/esm/backup/index.js +206 -0
- package/dist/esm/backup/index.js.map +1 -0
- package/dist/esm/backup/interfaces.d.ts +29 -0
- package/dist/esm/backup/interfaces.d.ts.map +1 -0
- package/dist/esm/backup/interfaces.js +3 -0
- package/dist/esm/backup/interfaces.js.map +1 -0
- package/dist/esm/cache/cache.d.ts +38 -0
- package/dist/esm/cache/cache.d.ts.map +1 -0
- package/dist/esm/cache/cache.js +189 -0
- package/dist/esm/cache/cache.js.map +1 -0
- package/dist/esm/cache/index.d.ts +2 -0
- package/dist/esm/cache/index.d.ts.map +1 -1
- package/dist/esm/cache/index.js +7 -0
- package/dist/esm/cache/index.js.map +1 -1
- package/dist/esm/cache/interfaces.d.ts +20 -0
- package/dist/esm/cache/interfaces.d.ts.map +1 -1
- package/dist/esm/cache/interfaces.js +18 -0
- package/dist/esm/cache/interfaces.js.map +1 -1
- package/dist/esm/cluster/index.d.ts +1 -1
- package/dist/esm/cluster/index.d.ts.map +1 -1
- package/dist/esm/cluster/interfaces.d.ts +18 -1
- package/dist/esm/cluster/interfaces.d.ts.map +1 -1
- package/dist/esm/database/index.d.ts +1 -0
- package/dist/esm/database/index.d.ts.map +1 -1
- package/dist/esm/database/index.js +5 -0
- package/dist/esm/database/index.js.map +1 -1
- package/dist/esm/database/interfaces.d.ts +19 -0
- package/dist/esm/database/interfaces.d.ts.map +1 -1
- package/dist/esm/database/interfaces.js +20 -0
- package/dist/esm/database/interfaces.js.map +1 -1
- package/dist/esm/dns/index.d.ts +1 -0
- package/dist/esm/dns/index.d.ts.map +1 -1
- package/dist/esm/dns/index.js +3 -0
- package/dist/esm/dns/index.js.map +1 -1
- package/dist/esm/dns/interfaces.d.ts +11 -0
- package/dist/esm/dns/interfaces.d.ts.map +1 -1
- package/dist/esm/dns/interfaces.js +12 -0
- package/dist/esm/dns/interfaces.js.map +1 -1
- package/dist/esm/email/index.d.ts +41 -0
- package/dist/esm/email/index.d.ts.map +1 -0
- package/dist/esm/email/index.js +318 -0
- package/dist/esm/email/index.js.map +1 -0
- package/dist/esm/email/interfaces.d.ts +119 -0
- package/dist/esm/email/interfaces.d.ts.map +1 -0
- package/dist/esm/email/interfaces.js +19 -0
- package/dist/esm/email/interfaces.js.map +1 -0
- package/dist/esm/factories/cluster.d.ts +1 -1
- package/dist/esm/factories/cluster.d.ts.map +1 -1
- package/dist/esm/factories/cluster.js +16 -0
- package/dist/esm/factories/cluster.js.map +1 -1
- package/dist/esm/factories/index.d.ts +1 -1
- package/dist/esm/factories/index.d.ts.map +1 -1
- package/dist/esm/factories/index.js.map +1 -1
- package/dist/esm/factories/types.d.ts +26 -0
- package/dist/esm/factories/types.d.ts.map +1 -1
- package/dist/esm/factories/types.js.map +1 -1
- package/dist/esm/index.d.ts +26 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +72 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/network/index.d.ts +1 -0
- package/dist/esm/network/index.d.ts.map +1 -1
- package/dist/esm/network/index.js +3 -1
- package/dist/esm/network/index.js.map +1 -1
- package/dist/esm/network/interfaces.d.ts +6 -0
- package/dist/esm/network/interfaces.d.ts.map +1 -1
- package/dist/esm/network/interfaces.js +7 -0
- package/dist/esm/network/interfaces.js.map +1 -1
- package/dist/esm/nimbus/index.d.ts +28 -0
- package/dist/esm/nimbus/index.d.ts.map +1 -0
- package/dist/esm/nimbus/index.js +44 -0
- package/dist/esm/nimbus/index.js.map +1 -0
- package/dist/esm/nimbus/interfaces.d.ts +64 -0
- package/dist/esm/nimbus/interfaces.d.ts.map +1 -0
- package/dist/esm/nimbus/interfaces.js +10 -0
- package/dist/esm/nimbus/interfaces.js.map +1 -0
- package/dist/esm/nimbus/registry.d.ts +19 -0
- package/dist/esm/nimbus/registry.d.ts.map +1 -0
- package/dist/esm/nimbus/registry.js +123 -0
- package/dist/esm/nimbus/registry.js.map +1 -0
- package/dist/esm/observability/alerts.d.ts +51 -0
- package/dist/esm/observability/alerts.d.ts.map +1 -0
- package/dist/esm/observability/alerts.js +281 -0
- package/dist/esm/observability/alerts.js.map +1 -0
- package/dist/esm/observability/dashboards/_helpers.d.ts +38 -0
- package/dist/esm/observability/dashboards/_helpers.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/_helpers.js +141 -0
- package/dist/esm/observability/dashboards/_helpers.js.map +1 -0
- package/dist/esm/observability/dashboards/alerts.d.ts +12 -0
- package/dist/esm/observability/dashboards/alerts.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/alerts.js +261 -0
- package/dist/esm/observability/dashboards/alerts.js.map +1 -0
- package/dist/esm/observability/dashboards/argocd-app.d.ts +18 -0
- package/dist/esm/observability/dashboards/argocd-app.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/argocd-app.js +212 -0
- package/dist/esm/observability/dashboards/argocd-app.js.map +1 -0
- package/dist/esm/observability/dashboards/argocd.d.ts +9 -0
- package/dist/esm/observability/dashboards/argocd.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/argocd.js +141 -0
- package/dist/esm/observability/dashboards/argocd.js.map +1 -0
- package/dist/esm/observability/dashboards/cert-manager.d.ts +9 -0
- package/dist/esm/observability/dashboards/cert-manager.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/cert-manager.js +167 -0
- package/dist/esm/observability/dashboards/cert-manager.js.map +1 -0
- package/dist/esm/observability/dashboards/cnpg-cluster.d.ts +15 -0
- package/dist/esm/observability/dashboards/cnpg-cluster.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/cnpg-cluster.js +376 -0
- package/dist/esm/observability/dashboards/cnpg-cluster.js.map +1 -0
- package/dist/esm/observability/dashboards/cnpg.d.ts +10 -0
- package/dist/esm/observability/dashboards/cnpg.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/cnpg.js +181 -0
- package/dist/esm/observability/dashboards/cnpg.js.map +1 -0
- package/dist/esm/observability/dashboards/index.d.ts +28 -0
- package/dist/esm/observability/dashboards/index.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/index.js +159 -0
- package/dist/esm/observability/dashboards/index.js.map +1 -0
- package/dist/esm/observability/dashboards/loki.d.ts +9 -0
- package/dist/esm/observability/dashboards/loki.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/loki.js +113 -0
- package/dist/esm/observability/dashboards/loki.js.map +1 -0
- package/dist/esm/observability/dashboards/mariadb-cluster.d.ts +15 -0
- package/dist/esm/observability/dashboards/mariadb-cluster.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/mariadb-cluster.js +424 -0
- package/dist/esm/observability/dashboards/mariadb-cluster.js.map +1 -0
- package/dist/esm/observability/dashboards/mariadb.d.ts +10 -0
- package/dist/esm/observability/dashboards/mariadb.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/mariadb.js +181 -0
- package/dist/esm/observability/dashboards/mariadb.js.map +1 -0
- package/dist/esm/observability/dashboards/minio.d.ts +9 -0
- package/dist/esm/observability/dashboards/minio.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/minio.js +267 -0
- package/dist/esm/observability/dashboards/minio.js.map +1 -0
- package/dist/esm/observability/dashboards/neo4j-cluster.d.ts +16 -0
- package/dist/esm/observability/dashboards/neo4j-cluster.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/neo4j-cluster.js +223 -0
- package/dist/esm/observability/dashboards/neo4j-cluster.js.map +1 -0
- package/dist/esm/observability/dashboards/neo4j.d.ts +9 -0
- package/dist/esm/observability/dashboards/neo4j.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/neo4j.js +156 -0
- package/dist/esm/observability/dashboards/neo4j.js.map +1 -0
- package/dist/esm/observability/dashboards/redis.d.ts +9 -0
- package/dist/esm/observability/dashboards/redis.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/redis.js +221 -0
- package/dist/esm/observability/dashboards/redis.js.map +1 -0
- package/dist/esm/observability/dashboards/traefik.d.ts +9 -0
- package/dist/esm/observability/dashboards/traefik.d.ts.map +1 -0
- package/dist/esm/observability/dashboards/traefik.js +387 -0
- package/dist/esm/observability/dashboards/traefik.js.map +1 -0
- package/dist/esm/observability/index.d.ts +10 -0
- package/dist/esm/observability/index.d.ts.map +1 -0
- package/dist/esm/observability/index.js +14 -0
- package/dist/esm/observability/index.js.map +1 -0
- package/dist/esm/observability/interfaces.d.ts +173 -0
- package/dist/esm/observability/interfaces.d.ts.map +1 -0
- package/dist/esm/observability/interfaces.js +11 -0
- package/dist/esm/observability/interfaces.js.map +1 -0
- package/dist/esm/observability/stack.d.ts +31 -0
- package/dist/esm/observability/stack.d.ts.map +1 -0
- package/dist/esm/observability/stack.js +523 -0
- package/dist/esm/observability/stack.js.map +1 -0
- package/dist/esm/operator/cnpg.d.ts +22 -0
- package/dist/esm/operator/cnpg.d.ts.map +1 -0
- package/dist/esm/operator/cnpg.js +412 -0
- package/dist/esm/operator/cnpg.js.map +1 -0
- package/dist/esm/operator/index.d.ts +48 -0
- package/dist/esm/operator/index.d.ts.map +1 -0
- package/dist/esm/operator/index.js +155 -0
- package/dist/esm/operator/index.js.map +1 -0
- package/dist/esm/operator/interfaces.d.ts +192 -0
- package/dist/esm/operator/interfaces.d.ts.map +1 -0
- package/dist/esm/operator/interfaces.js +20 -0
- package/dist/esm/operator/interfaces.js.map +1 -0
- package/dist/esm/operator/mariadb.d.ts +22 -0
- package/dist/esm/operator/mariadb.d.ts.map +1 -0
- package/dist/esm/operator/mariadb.js +389 -0
- package/dist/esm/operator/mariadb.js.map +1 -0
- package/dist/esm/operator/minio.d.ts +37 -0
- package/dist/esm/operator/minio.d.ts.map +1 -0
- package/dist/esm/operator/minio.js +364 -0
- package/dist/esm/operator/minio.js.map +1 -0
- package/dist/esm/operator/neo4j.d.ts +48 -0
- package/dist/esm/operator/neo4j.d.ts.map +1 -0
- package/dist/esm/operator/neo4j.js +431 -0
- package/dist/esm/operator/neo4j.js.map +1 -0
- package/dist/esm/platform/components/argocd.d.ts +9 -0
- package/dist/esm/platform/components/argocd.d.ts.map +1 -0
- package/dist/esm/platform/components/argocd.js +82 -0
- package/dist/esm/platform/components/argocd.js.map +1 -0
- package/dist/esm/platform/components/cert-manager.d.ts +9 -0
- package/dist/esm/platform/components/cert-manager.d.ts.map +1 -0
- package/dist/esm/platform/components/cert-manager.js +56 -0
- package/dist/esm/platform/components/cert-manager.js.map +1 -0
- package/dist/esm/platform/components/descheduler.d.ts +9 -0
- package/dist/esm/platform/components/descheduler.d.ts.map +1 -0
- package/dist/esm/platform/components/descheduler.js +67 -0
- package/dist/esm/platform/components/descheduler.js.map +1 -0
- package/dist/esm/platform/components/external-dns.d.ts +9 -0
- package/dist/esm/platform/components/external-dns.d.ts.map +1 -0
- package/dist/esm/platform/components/external-dns.js +83 -0
- package/dist/esm/platform/components/external-dns.js.map +1 -0
- package/dist/esm/platform/components/external-secrets.d.ts +9 -0
- package/dist/esm/platform/components/external-secrets.d.ts.map +1 -0
- package/dist/esm/platform/components/external-secrets.js +62 -0
- package/dist/esm/platform/components/external-secrets.js.map +1 -0
- package/dist/esm/platform/components/index.d.ts +17 -0
- package/dist/esm/platform/components/index.d.ts.map +1 -0
- package/dist/esm/platform/components/index.js +28 -0
- package/dist/esm/platform/components/index.js.map +1 -0
- package/dist/esm/platform/components/oauth2-proxy.d.ts +14 -0
- package/dist/esm/platform/components/oauth2-proxy.d.ts.map +1 -0
- package/dist/esm/platform/components/oauth2-proxy.js +80 -0
- package/dist/esm/platform/components/oauth2-proxy.js.map +1 -0
- package/dist/esm/platform/components/traefik.d.ts +9 -0
- package/dist/esm/platform/components/traefik.d.ts.map +1 -0
- package/dist/esm/platform/components/traefik.js +74 -0
- package/dist/esm/platform/components/traefik.js.map +1 -0
- package/dist/esm/platform/components/vault.d.ts +12 -0
- package/dist/esm/platform/components/vault.d.ts.map +1 -0
- package/dist/esm/platform/components/vault.js +474 -0
- package/dist/esm/platform/components/vault.js.map +1 -0
- package/dist/esm/platform/index.d.ts +2 -1
- package/dist/esm/platform/index.d.ts.map +1 -1
- package/dist/esm/platform/index.js +3 -1
- package/dist/esm/platform/index.js.map +1 -1
- package/dist/esm/platform/interfaces.d.ts +73 -1
- package/dist/esm/platform/interfaces.d.ts.map +1 -1
- package/dist/esm/platform/interfaces.js +8 -0
- package/dist/esm/platform/interfaces.js.map +1 -1
- package/dist/esm/platform/stack.d.ts +1 -1
- package/dist/esm/platform/stack.d.ts.map +1 -1
- package/dist/esm/platform/stack.js +363 -153
- package/dist/esm/platform/stack.js.map +1 -1
- package/dist/esm/queue/index.d.ts +1 -0
- package/dist/esm/queue/index.d.ts.map +1 -1
- package/dist/esm/queue/index.js +5 -0
- package/dist/esm/queue/index.js.map +1 -1
- package/dist/esm/queue/interfaces.d.ts +20 -0
- package/dist/esm/queue/interfaces.d.ts.map +1 -1
- package/dist/esm/queue/interfaces.js +21 -0
- package/dist/esm/queue/interfaces.js.map +1 -1
- package/dist/esm/rackspace/cluster.d.ts +30 -0
- package/dist/esm/rackspace/cluster.d.ts.map +1 -0
- package/dist/esm/rackspace/cluster.js +116 -0
- package/dist/esm/rackspace/cluster.js.map +1 -0
- package/dist/esm/rackspace/index.d.ts +7 -0
- package/dist/esm/rackspace/index.d.ts.map +1 -0
- package/dist/esm/rackspace/index.js +11 -0
- package/dist/esm/rackspace/index.js.map +1 -0
- package/dist/esm/secrets/index.d.ts +1 -0
- package/dist/esm/secrets/index.d.ts.map +1 -1
- package/dist/esm/secrets/index.js +3 -0
- package/dist/esm/secrets/index.js.map +1 -1
- package/dist/esm/secrets/interfaces.d.ts +7 -0
- package/dist/esm/secrets/interfaces.d.ts.map +1 -1
- package/dist/esm/secrets/interfaces.js +8 -0
- package/dist/esm/secrets/interfaces.js.map +1 -1
- package/dist/esm/state/index.d.ts +1 -0
- package/dist/esm/state/index.d.ts.map +1 -1
- package/dist/esm/state/index.js +3 -0
- package/dist/esm/state/index.js.map +1 -1
- package/dist/esm/state/interfaces.d.ts +6 -0
- package/dist/esm/state/interfaces.d.ts.map +1 -1
- package/dist/esm/state/interfaces.js +7 -0
- package/dist/esm/state/interfaces.js.map +1 -1
- package/dist/esm/types/cloud-target.d.ts +7 -0
- package/dist/esm/types/cloud-target.d.ts.map +1 -1
- package/dist/esm/types/cloud-target.js +9 -2
- package/dist/esm/types/cloud-target.js.map +1 -1
- package/dist/esm/types/exposed-service.d.ts +20 -0
- package/dist/esm/types/exposed-service.d.ts.map +1 -0
- package/dist/esm/types/exposed-service.js +8 -0
- package/dist/esm/types/exposed-service.js.map +1 -0
- package/dist/esm/types/index.d.ts +3 -1
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/types/index.js +5 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/storage-tiers.d.ts +26 -0
- package/dist/esm/types/storage-tiers.d.ts.map +1 -0
- package/dist/esm/types/storage-tiers.js +30 -0
- package/dist/esm/types/storage-tiers.js.map +1 -0
- package/dist/esm/utils/ensure-namespace.d.ts +7 -0
- package/dist/esm/utils/ensure-namespace.d.ts.map +1 -0
- package/dist/esm/utils/ensure-namespace.js +53 -0
- package/dist/esm/utils/ensure-namespace.js.map +1 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +3 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/package.json +8 -4
package/README.md
CHANGED
|
@@ -50,20 +50,24 @@ Or start from scratch:
|
|
|
50
50
|
import { createNetwork, createCluster, createPlatformStack } from "@reyemtech/nimbus";
|
|
51
51
|
import type { INetwork, ICluster } from "@reyemtech/nimbus";
|
|
52
52
|
|
|
53
|
-
const network = await createNetwork("prod", {
|
|
53
|
+
const network = (await createNetwork("prod", {
|
|
54
54
|
cloud: "aws",
|
|
55
55
|
cidr: "10.0.0.0/16",
|
|
56
56
|
natStrategy: "fck-nat",
|
|
57
|
-
}) as INetwork;
|
|
58
|
-
|
|
59
|
-
const cluster = await createCluster(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
})) as INetwork;
|
|
58
|
+
|
|
59
|
+
const cluster = (await createCluster(
|
|
60
|
+
"prod",
|
|
61
|
+
{
|
|
62
|
+
cloud: "aws",
|
|
63
|
+
nodePools: [
|
|
64
|
+
{ name: "system", instanceType: "t4g.small", minNodes: 2, maxNodes: 3 },
|
|
65
|
+
{ name: "workers", instanceType: "c6a.large", minNodes: 1, maxNodes: 10, spot: true },
|
|
66
|
+
],
|
|
67
|
+
providerOptions: { aws: { autoMode: true } },
|
|
68
|
+
},
|
|
69
|
+
network
|
|
70
|
+
)) as ICluster;
|
|
67
71
|
|
|
68
72
|
createPlatformStack("prod", { cluster, domain: "example.com" });
|
|
69
73
|
```
|
|
@@ -80,14 +84,14 @@ nimbus check # Show which providers are installed
|
|
|
80
84
|
|
|
81
85
|
### Templates
|
|
82
86
|
|
|
83
|
-
| Template
|
|
84
|
-
|
|
85
|
-
| `empty`
|
|
86
|
-
| `minimal-aws`
|
|
87
|
-
| `minimal-azure` | State backend + Key Vault (no cluster)
|
|
88
|
-
| `aws`
|
|
89
|
-
| `azure`
|
|
90
|
-
| `multi-cloud`
|
|
87
|
+
| Template | Description |
|
|
88
|
+
| --------------- | --------------------------------------------------------- |
|
|
89
|
+
| `empty` | Blank scaffold with TODO placeholders |
|
|
90
|
+
| `minimal-aws` | State backend + Secrets Manager (no cluster) |
|
|
91
|
+
| `minimal-azure` | State backend + Key Vault (no cluster) |
|
|
92
|
+
| `aws` | Full stack: VPC + EKS + Route 53 + Secrets + Platform |
|
|
93
|
+
| `azure` | Full stack: VNet + AKS + Azure DNS + Key Vault + Platform |
|
|
94
|
+
| `multi-cloud` | AWS + Azure active-active with Global Load Balancer |
|
|
91
95
|
|
|
92
96
|
### Day-to-Day Operations
|
|
93
97
|
|
|
@@ -125,15 +129,15 @@ pulumi stack output # View stack outputs
|
|
|
125
129
|
|
|
126
130
|
### Module Status
|
|
127
131
|
|
|
128
|
-
| Module
|
|
129
|
-
|
|
130
|
-
| **Network**
|
|
131
|
-
| **Cluster**
|
|
132
|
-
| **DNS**
|
|
133
|
-
| **Secrets**
|
|
134
|
-
| **State**
|
|
135
|
-
| **Platform**
|
|
136
|
-
| **Global LB** | Route 53 health-checked routing
|
|
132
|
+
| Module | AWS | Azure | GCP |
|
|
133
|
+
| ------------- | ----------------------------------- | ------------------------ | ------------------------ |
|
|
134
|
+
| **Network** | VPC + fck-nat/managed NAT | VNet + NAT Gateway | Planned |
|
|
135
|
+
| **Cluster** | EKS + Auto Mode | AKS + virtual nodes | Planned |
|
|
136
|
+
| **DNS** | Route 53 | Azure DNS | Planned |
|
|
137
|
+
| **Secrets** | Secrets Manager | Key Vault | Planned |
|
|
138
|
+
| **State** | S3 + DynamoDB locking + replication | Blob + GRS | Planned |
|
|
139
|
+
| **Platform** | Helm (provider-agnostic) | Helm (provider-agnostic) | Helm (provider-agnostic) |
|
|
140
|
+
| **Global LB** | Route 53 health-checked routing | Planned | — |
|
|
137
141
|
|
|
138
142
|
## Documentation
|
|
139
143
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared split DNS for access gateway providers.
|
|
3
|
+
*
|
|
4
|
+
* Two resolution paths:
|
|
5
|
+
* - Web services (proxied): grafana.iad-1.internal → Nginx proxy (port 80)
|
|
6
|
+
* - Data services (direct): mariadb-main.data.iad-1.internal → ClusterIP (native port)
|
|
7
|
+
*
|
|
8
|
+
* @module access/dns
|
|
9
|
+
*/
|
|
10
|
+
import * as k8s from "@pulumi/kubernetes";
|
|
11
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
12
|
+
import type { IAccessDnsConfig } from "./interfaces";
|
|
13
|
+
import type { IExposedService } from "../types";
|
|
14
|
+
/** CoreDNS deployment output. */
|
|
15
|
+
export interface IAccessDns {
|
|
16
|
+
readonly service: k8s.core.v1.Service;
|
|
17
|
+
readonly clusterIp: pulumi.Output<string>;
|
|
18
|
+
readonly zone: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Deploy CoreDNS for access gateway split DNS.
|
|
22
|
+
*
|
|
23
|
+
* @param proxiedServices - Services routed through the Nginx proxy (web UIs)
|
|
24
|
+
*/
|
|
25
|
+
export declare function deployAccessDns(name: string, prefix: string, dnsConfig: IAccessDnsConfig, namespace: string, provider: k8s.Provider, proxiedServices: ReadonlyArray<IExposedService>, dependsOn?: pulumi.Resource[]): IAccessDns;
|
|
26
|
+
//# sourceMappingURL=dns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.d.ts","sourceRoot":"","sources":["../../../src/access/dns.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA6CD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC,EAC/C,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,GAC5B,UAAU,CAqEZ"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared split DNS for access gateway providers.
|
|
4
|
+
*
|
|
5
|
+
* Two resolution paths:
|
|
6
|
+
* - Web services (proxied): grafana.iad-1.internal → Nginx proxy (port 80)
|
|
7
|
+
* - Data services (direct): mariadb-main.data.iad-1.internal → ClusterIP (native port)
|
|
8
|
+
*
|
|
9
|
+
* @module access/dns
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.deployAccessDns = deployAccessDns;
|
|
46
|
+
const k8s = __importStar(require("@pulumi/kubernetes"));
|
|
47
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
48
|
+
/**
|
|
49
|
+
* Build CoreDNS Corefile with two resolution paths:
|
|
50
|
+
*
|
|
51
|
+
* 1. Per-service rewrites for proxied web services:
|
|
52
|
+
* grafana.iad-1.internal → access-proxy.access.svc.cluster.local
|
|
53
|
+
*
|
|
54
|
+
* 2. Catch-all regex for direct access (with namespace):
|
|
55
|
+
* mariadb-main.data.iad-1.internal → mariadb-main.data.svc.cluster.local
|
|
56
|
+
*/
|
|
57
|
+
function buildCorefile(prefix, tld, proxiedServices) {
|
|
58
|
+
const zone = `${prefix}.${tld}`;
|
|
59
|
+
const prefixEsc = prefix.replace(/\./g, "\\.");
|
|
60
|
+
const tldEsc = tld.replace(/\./g, "\\.");
|
|
61
|
+
// Build per-service rewrite rules for proxied services
|
|
62
|
+
// CoreDNS exact name rewrite: rewrite name exact <from> <to>
|
|
63
|
+
const proxyRewrites = proxiedServices.map((svc) => ` rewrite name exact ${svc.label}.${prefix}.${tld} access-proxy.access.svc.cluster.local`);
|
|
64
|
+
return pulumi.output(proxyRewrites).apply((rewrites) => `${zone}:53 {
|
|
65
|
+
# Proxied web services → Nginx reverse proxy (port 80)
|
|
66
|
+
${rewrites.join("\n")}
|
|
67
|
+
|
|
68
|
+
# Direct access: <service>.<namespace>.iad-1.internal → <service>.<namespace>.svc.cluster.local
|
|
69
|
+
rewrite name regex ([a-z0-9-]+)\\.([a-z0-9-]+)\\.${prefixEsc}\\.${tldEsc} {1}.{2}.svc.cluster.local answer auto
|
|
70
|
+
|
|
71
|
+
forward . /etc/resolv.conf
|
|
72
|
+
cache 60
|
|
73
|
+
errors
|
|
74
|
+
log
|
|
75
|
+
}
|
|
76
|
+
`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Deploy CoreDNS for access gateway split DNS.
|
|
80
|
+
*
|
|
81
|
+
* @param proxiedServices - Services routed through the Nginx proxy (web UIs)
|
|
82
|
+
*/
|
|
83
|
+
function deployAccessDns(name, prefix, dnsConfig, namespace, provider, proxiedServices, dependsOn) {
|
|
84
|
+
const tld = dnsConfig.tld ?? "internal";
|
|
85
|
+
const zone = `${prefix}.${tld}`;
|
|
86
|
+
const corefile = new k8s.core.v1.ConfigMap(`${name}-access-dns-corefile`, {
|
|
87
|
+
metadata: { name: "access-dns-corefile", namespace },
|
|
88
|
+
data: { Corefile: buildCorefile(prefix, tld, proxiedServices) },
|
|
89
|
+
}, { provider, dependsOn });
|
|
90
|
+
const labels = { app: "access-dns", "app.kubernetes.io/managed-by": "nimbus" };
|
|
91
|
+
new k8s.apps.v1.Deployment(`${name}-access-dns`, {
|
|
92
|
+
metadata: { name: "access-dns", namespace },
|
|
93
|
+
spec: {
|
|
94
|
+
replicas: 1,
|
|
95
|
+
selector: { matchLabels: labels },
|
|
96
|
+
template: {
|
|
97
|
+
metadata: { labels },
|
|
98
|
+
spec: {
|
|
99
|
+
containers: [
|
|
100
|
+
{
|
|
101
|
+
name: "coredns",
|
|
102
|
+
image: "coredns/coredns:1.12.0",
|
|
103
|
+
args: ["-conf", "/etc/coredns/Corefile"],
|
|
104
|
+
ports: [
|
|
105
|
+
{ name: "dns", containerPort: 53, protocol: "UDP" },
|
|
106
|
+
{ name: "dns-tcp", containerPort: 53, protocol: "TCP" },
|
|
107
|
+
],
|
|
108
|
+
volumeMounts: [{ name: "corefile", mountPath: "/etc/coredns", readOnly: true }],
|
|
109
|
+
resources: {
|
|
110
|
+
requests: { cpu: "10m", memory: "16Mi" },
|
|
111
|
+
limits: { cpu: "50m", memory: "64Mi" },
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
volumes: [{ name: "corefile", configMap: { name: "access-dns-corefile" } }],
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
}, { provider, dependsOn: [corefile] });
|
|
120
|
+
const service = new k8s.core.v1.Service(`${name}-access-dns-svc`, {
|
|
121
|
+
metadata: { name: "access-dns", namespace },
|
|
122
|
+
spec: {
|
|
123
|
+
selector: labels,
|
|
124
|
+
ports: [
|
|
125
|
+
{ name: "dns", port: 53, targetPort: 53, protocol: "UDP" },
|
|
126
|
+
{ name: "dns-tcp", port: 53, targetPort: 53, protocol: "TCP" },
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
}, { provider });
|
|
130
|
+
return {
|
|
131
|
+
service,
|
|
132
|
+
clusterIp: service.spec.clusterIP,
|
|
133
|
+
zone,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=dns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/access/dns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Access gateway module — provider-agnostic remote cluster access.
|
|
3
|
+
*
|
|
4
|
+
* Supports Tailscale (always-on mesh) and WireGuard (self-hosted VPN).
|
|
5
|
+
* Optional split DNS for multi-cluster service discovery.
|
|
6
|
+
*
|
|
7
|
+
* @module access
|
|
8
|
+
*/
|
|
9
|
+
import type { IAccessGatewayConfig, IAccessGateway } from "./interfaces";
|
|
10
|
+
export type { AccessGatewayProvider, IAccessDnsConfig, ITailscaleConfig, IWireGuardPeer, IWireGuardConfig, ITailscaleGatewayConfig, IWireGuardGatewayConfig, IAccessGatewayConfig, IAccessGateway, } from "./interfaces";
|
|
11
|
+
export { ACCESS_GATEWAY_PROVIDERS } from "./interfaces";
|
|
12
|
+
/**
|
|
13
|
+
* Create an access gateway for secure remote access to cluster services.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const gateway = createAccessGateway("vpn", {
|
|
18
|
+
* cluster,
|
|
19
|
+
* hostnamePrefix: "iad-1",
|
|
20
|
+
* dns: { enabled: true, tld: "internal" },
|
|
21
|
+
* provider: "tailscale",
|
|
22
|
+
* tailscale: {
|
|
23
|
+
* authKey: config.requireSecret("tailscaleAuthKey"),
|
|
24
|
+
* routes: ["10.0.0.0/8"],
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function createAccessGateway(name: string, config: IAccessGatewayConfig): IAccessGateway;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/access/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAKzE,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAS9F"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Access gateway module — provider-agnostic remote cluster access.
|
|
4
|
+
*
|
|
5
|
+
* Supports Tailscale (always-on mesh) and WireGuard (self-hosted VPN).
|
|
6
|
+
* Optional split DNS for multi-cluster service discovery.
|
|
7
|
+
*
|
|
8
|
+
* @module access
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ACCESS_GATEWAY_PROVIDERS = void 0;
|
|
12
|
+
exports.createAccessGateway = createAccessGateway;
|
|
13
|
+
const tailscale_1 = require("./tailscale");
|
|
14
|
+
const wireguard_1 = require("./wireguard");
|
|
15
|
+
const types_1 = require("../types");
|
|
16
|
+
var interfaces_1 = require("./interfaces");
|
|
17
|
+
Object.defineProperty(exports, "ACCESS_GATEWAY_PROVIDERS", { enumerable: true, get: function () { return interfaces_1.ACCESS_GATEWAY_PROVIDERS; } });
|
|
18
|
+
/**
|
|
19
|
+
* Create an access gateway for secure remote access to cluster services.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const gateway = createAccessGateway("vpn", {
|
|
24
|
+
* cluster,
|
|
25
|
+
* hostnamePrefix: "iad-1",
|
|
26
|
+
* dns: { enabled: true, tld: "internal" },
|
|
27
|
+
* provider: "tailscale",
|
|
28
|
+
* tailscale: {
|
|
29
|
+
* authKey: config.requireSecret("tailscaleAuthKey"),
|
|
30
|
+
* routes: ["10.0.0.0/8"],
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
function createAccessGateway(name, config) {
|
|
36
|
+
switch (config.provider) {
|
|
37
|
+
case "tailscale":
|
|
38
|
+
return (0, tailscale_1.deployTailscale)(name, config);
|
|
39
|
+
case "wireguard":
|
|
40
|
+
return (0, wireguard_1.deployWireGuard)(name, config);
|
|
41
|
+
default:
|
|
42
|
+
return (0, types_1.assertNever)(config);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/access/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAqCH,kDASC;AA3CD,2CAA8C;AAC9C,2CAA8C;AAC9C,oCAAuC;AAavC,2CAAwD;AAA/C,sHAAA,wBAAwB,OAAA;AAEjC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,mBAAmB,CAAC,IAAY,EAAE,MAA4B;IAC5E,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,WAAW;YACd,OAAO,IAAA,2BAAe,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,WAAW;YACd,OAAO,IAAA,2BAAe,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC;YACE,OAAO,IAAA,mBAAW,EAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Access gateway interfaces for @reyemtech/nimbus.
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic remote access to Kubernetes cluster services
|
|
5
|
+
* via Tailscale, WireGuard, or future providers.
|
|
6
|
+
*
|
|
7
|
+
* @module access/interfaces
|
|
8
|
+
*/
|
|
9
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
10
|
+
import type * as k8s from "@pulumi/kubernetes";
|
|
11
|
+
import type { ICluster } from "../cluster";
|
|
12
|
+
import type { IExposedService } from "../types";
|
|
13
|
+
/** Access gateway provider type. */
|
|
14
|
+
export type AccessGatewayProvider = "tailscale" | "wireguard";
|
|
15
|
+
/** Typed constant map for AccessGatewayProvider string literals. */
|
|
16
|
+
export declare const ACCESS_GATEWAY_PROVIDERS: {
|
|
17
|
+
TAILSCALE: "tailscale";
|
|
18
|
+
WIREGUARD: "wireguard";
|
|
19
|
+
};
|
|
20
|
+
/** Split DNS configuration for service discovery. */
|
|
21
|
+
export interface IAccessDnsConfig {
|
|
22
|
+
/** Enable split DNS for service discovery. Default: false. */
|
|
23
|
+
readonly enabled: boolean;
|
|
24
|
+
/** Top-level domain for service names. Default: "internal". */
|
|
25
|
+
readonly tld?: string;
|
|
26
|
+
}
|
|
27
|
+
/** Tailscale-specific configuration. */
|
|
28
|
+
export interface ITailscaleConfig {
|
|
29
|
+
/** OAuth client ID (generate at Tailscale admin → Settings → OAuth). */
|
|
30
|
+
readonly oauthClientId: pulumi.Input<string>;
|
|
31
|
+
/** OAuth client secret. */
|
|
32
|
+
readonly oauthClientSecret: pulumi.Input<string>;
|
|
33
|
+
/** Subnet routes to advertise to the tailnet (e.g., ["10.0.0.0/8"]). */
|
|
34
|
+
readonly routes: ReadonlyArray<string>;
|
|
35
|
+
/** Tags for the operator node (e.g., ["tag:k8s-operator"]). Default: ["tag:k8s-operator"]. */
|
|
36
|
+
readonly tags?: ReadonlyArray<string>;
|
|
37
|
+
/** Services to expose as Tailscale devices. Collect from module .exposedServices outputs. */
|
|
38
|
+
readonly services?: ReadonlyArray<IExposedService>;
|
|
39
|
+
/** Tailscale Operator Helm chart version override. */
|
|
40
|
+
readonly version?: string;
|
|
41
|
+
/** Additional Helm values. */
|
|
42
|
+
readonly values?: Readonly<Record<string, unknown>>;
|
|
43
|
+
}
|
|
44
|
+
/** WireGuard peer (client) configuration. */
|
|
45
|
+
export interface IWireGuardPeer {
|
|
46
|
+
/** Peer display name (used for config file naming). */
|
|
47
|
+
readonly name: string;
|
|
48
|
+
/** Peer's WireGuard public key. */
|
|
49
|
+
readonly publicKey: string;
|
|
50
|
+
/** IP addresses assigned to this peer within the VPN CIDR. */
|
|
51
|
+
readonly allowedIps: ReadonlyArray<string>;
|
|
52
|
+
}
|
|
53
|
+
/** WireGuard-specific configuration. */
|
|
54
|
+
export interface IWireGuardConfig {
|
|
55
|
+
/** Public DNS name or IP for the WireGuard endpoint. */
|
|
56
|
+
readonly endpoint: string;
|
|
57
|
+
/** UDP listen port. Default: 51820. */
|
|
58
|
+
readonly listenPort?: number;
|
|
59
|
+
/** VPN tunnel CIDR (e.g., "10.100.0.0/24"). */
|
|
60
|
+
readonly serverCidr: string;
|
|
61
|
+
/** Subnet routes to push to clients (e.g., ["10.0.0.0/8"]). */
|
|
62
|
+
readonly routes: ReadonlyArray<string>;
|
|
63
|
+
/** Client peers. */
|
|
64
|
+
readonly peers: ReadonlyArray<IWireGuardPeer>;
|
|
65
|
+
/** WireGuard Helm chart version override. */
|
|
66
|
+
readonly version?: string;
|
|
67
|
+
/** Additional Helm values. */
|
|
68
|
+
readonly values?: Readonly<Record<string, unknown>>;
|
|
69
|
+
}
|
|
70
|
+
/** Tailscale access gateway config. */
|
|
71
|
+
export interface ITailscaleGatewayConfig {
|
|
72
|
+
readonly cluster: ICluster;
|
|
73
|
+
readonly hostnamePrefix?: string;
|
|
74
|
+
readonly dns?: IAccessDnsConfig;
|
|
75
|
+
readonly provider: "tailscale";
|
|
76
|
+
readonly tailscale: ITailscaleConfig;
|
|
77
|
+
}
|
|
78
|
+
/** WireGuard access gateway config. */
|
|
79
|
+
export interface IWireGuardGatewayConfig {
|
|
80
|
+
readonly cluster: ICluster;
|
|
81
|
+
readonly hostnamePrefix?: string;
|
|
82
|
+
readonly dns?: IAccessDnsConfig;
|
|
83
|
+
readonly provider: "wireguard";
|
|
84
|
+
readonly wireguard: IWireGuardConfig;
|
|
85
|
+
}
|
|
86
|
+
/** Access gateway config — discriminated union on provider. */
|
|
87
|
+
export type IAccessGatewayConfig = ITailscaleGatewayConfig | IWireGuardGatewayConfig;
|
|
88
|
+
/** Access gateway output. */
|
|
89
|
+
export interface IAccessGateway {
|
|
90
|
+
readonly name: string;
|
|
91
|
+
readonly provider: AccessGatewayProvider;
|
|
92
|
+
readonly namespace: string;
|
|
93
|
+
readonly helmRelease: k8s.helm.v3.Release;
|
|
94
|
+
readonly serverPublicKey?: pulumi.Output<string>;
|
|
95
|
+
readonly clientConfigs?: pulumi.Output<Record<string, string>>;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/access/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Access gateway interfaces for @reyemtech/nimbus.
|
|
4
|
+
*
|
|
5
|
+
* Provider-agnostic remote access to Kubernetes cluster services
|
|
6
|
+
* via Tailscale, WireGuard, or future providers.
|
|
7
|
+
*
|
|
8
|
+
* @module access/interfaces
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ACCESS_GATEWAY_PROVIDERS = void 0;
|
|
12
|
+
/** Typed constant map for AccessGatewayProvider string literals. */
|
|
13
|
+
exports.ACCESS_GATEWAY_PROVIDERS = {
|
|
14
|
+
TAILSCALE: "tailscale",
|
|
15
|
+
WIREGUARD: "wireguard",
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/access/interfaces.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAUH,oEAAoE;AACvD,QAAA,wBAAwB,GAAG;IACtC,SAAS,EAAE,WAAoB;IAC/B,SAAS,EAAE,WAAoB;CACgB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reverse proxy for access gateway service exposure.
|
|
3
|
+
*
|
|
4
|
+
* Deploys a lightweight Nginx pod that routes by Host header
|
|
5
|
+
* to backend services, providing port 80 access to services
|
|
6
|
+
* running on non-standard ports (Prometheus :9090, Vault :8200, etc.).
|
|
7
|
+
*
|
|
8
|
+
* All services are accessed via: <label>.iad-1.internal:80
|
|
9
|
+
*
|
|
10
|
+
* @module access/proxy
|
|
11
|
+
*/
|
|
12
|
+
import * as k8s from "@pulumi/kubernetes";
|
|
13
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
14
|
+
import type { IExposedService } from "../types";
|
|
15
|
+
/**
|
|
16
|
+
* Deploy the access proxy — Nginx reverse proxy for exposed services.
|
|
17
|
+
*
|
|
18
|
+
* Returns the proxy ClusterIP service name for CoreDNS to resolve to.
|
|
19
|
+
*/
|
|
20
|
+
export declare function deployAccessProxy(name: string, services: ReadonlyArray<IExposedService>, dnsSuffix: string, namespace: string, provider: k8s.Provider, dependsOn?: pulumi.Resource[]): k8s.core.v1.Service;
|
|
21
|
+
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/access/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAwDhD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,GAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAsErB"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Reverse proxy for access gateway service exposure.
|
|
4
|
+
*
|
|
5
|
+
* Deploys a lightweight Nginx pod that routes by Host header
|
|
6
|
+
* to backend services, providing port 80 access to services
|
|
7
|
+
* running on non-standard ports (Prometheus :9090, Vault :8200, etc.).
|
|
8
|
+
*
|
|
9
|
+
* All services are accessed via: <label>.iad-1.internal:80
|
|
10
|
+
*
|
|
11
|
+
* @module access/proxy
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.deployAccessProxy = deployAccessProxy;
|
|
48
|
+
const k8s = __importStar(require("@pulumi/kubernetes"));
|
|
49
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
50
|
+
/**
|
|
51
|
+
* Build Nginx config from exposed services.
|
|
52
|
+
*
|
|
53
|
+
* Each service gets a server block matching its label as the hostname.
|
|
54
|
+
* All listen on port 80, proxy to the real service's port.
|
|
55
|
+
*/
|
|
56
|
+
function buildNginxConfig(services, dnsSuffix) {
|
|
57
|
+
const serviceConfigs = services.map((svc) => {
|
|
58
|
+
const upstream = pulumi
|
|
59
|
+
.output(svc.originalName ?? svc.name)
|
|
60
|
+
.apply((name) => `${name}.${svc.namespace}.svc.cluster.local:${svc.port}`);
|
|
61
|
+
return upstream.apply((u) => ` server {
|
|
62
|
+
listen 80;
|
|
63
|
+
server_name ${svc.label}.${dnsSuffix};
|
|
64
|
+
|
|
65
|
+
location / {
|
|
66
|
+
proxy_pass http://${u};
|
|
67
|
+
proxy_set_header Host $host;
|
|
68
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
69
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
70
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
71
|
+
proxy_http_version 1.1;
|
|
72
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
73
|
+
proxy_set_header Connection "upgrade";
|
|
74
|
+
}
|
|
75
|
+
}`);
|
|
76
|
+
});
|
|
77
|
+
return pulumi.all(serviceConfigs).apply((blocks) => `events {
|
|
78
|
+
worker_connections 256;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
http {
|
|
82
|
+
resolver kube-dns.kube-system.svc.cluster.local valid=10s;
|
|
83
|
+
|
|
84
|
+
${blocks.join("\n\n")}
|
|
85
|
+
|
|
86
|
+
# Default — return 404 for unknown hosts
|
|
87
|
+
server {
|
|
88
|
+
listen 80 default_server;
|
|
89
|
+
return 404;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
`);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Deploy the access proxy — Nginx reverse proxy for exposed services.
|
|
96
|
+
*
|
|
97
|
+
* Returns the proxy ClusterIP service name for CoreDNS to resolve to.
|
|
98
|
+
*/
|
|
99
|
+
function deployAccessProxy(name, services, dnsSuffix, namespace, provider, dependsOn) {
|
|
100
|
+
const labels = {
|
|
101
|
+
app: "access-proxy",
|
|
102
|
+
"app.kubernetes.io/managed-by": "nimbus",
|
|
103
|
+
};
|
|
104
|
+
const configMap = new k8s.core.v1.ConfigMap(`${name}-access-proxy-config`, {
|
|
105
|
+
metadata: { name: "access-proxy-config", namespace },
|
|
106
|
+
data: {
|
|
107
|
+
"nginx.conf": buildNginxConfig(services, dnsSuffix),
|
|
108
|
+
},
|
|
109
|
+
}, { provider, dependsOn });
|
|
110
|
+
new k8s.apps.v1.Deployment(`${name}-access-proxy`, {
|
|
111
|
+
metadata: { name: "access-proxy", namespace },
|
|
112
|
+
spec: {
|
|
113
|
+
replicas: 1,
|
|
114
|
+
selector: { matchLabels: labels },
|
|
115
|
+
template: {
|
|
116
|
+
metadata: { labels },
|
|
117
|
+
spec: {
|
|
118
|
+
containers: [
|
|
119
|
+
{
|
|
120
|
+
name: "nginx",
|
|
121
|
+
image: "nginx:alpine",
|
|
122
|
+
ports: [{ name: "http", containerPort: 80 }],
|
|
123
|
+
volumeMounts: [
|
|
124
|
+
{
|
|
125
|
+
name: "config",
|
|
126
|
+
mountPath: "/etc/nginx/nginx.conf",
|
|
127
|
+
subPath: "nginx.conf",
|
|
128
|
+
readOnly: true,
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
resources: {
|
|
132
|
+
requests: { cpu: "5m", memory: "8Mi" },
|
|
133
|
+
limits: { cpu: "50m", memory: "32Mi" },
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
volumes: [
|
|
138
|
+
{
|
|
139
|
+
name: "config",
|
|
140
|
+
configMap: { name: "access-proxy-config" },
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
}, { provider, dependsOn: [configMap] });
|
|
147
|
+
return new k8s.core.v1.Service(`${name}-access-proxy-svc`, {
|
|
148
|
+
metadata: { name: "access-proxy", namespace },
|
|
149
|
+
spec: {
|
|
150
|
+
selector: labels,
|
|
151
|
+
ports: [{ name: "http", port: 80, targetPort: 80 }],
|
|
152
|
+
},
|
|
153
|
+
}, { provider });
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/access/proxy.ts"],"names":[],"mappings":"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"}
|