@reyemtech/nimbus 0.1.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/LICENSE +21 -0
- package/README.md +399 -0
- package/dist/cjs/aws/cluster.d.ts +32 -0
- package/dist/cjs/aws/cluster.d.ts.map +1 -0
- package/dist/cjs/aws/cluster.js +214 -0
- package/dist/cjs/aws/cluster.js.map +1 -0
- package/dist/cjs/aws/dns.d.ts +22 -0
- package/dist/cjs/aws/dns.d.ts.map +1 -0
- package/dist/cjs/aws/dns.js +95 -0
- package/dist/cjs/aws/dns.js.map +1 -0
- package/dist/cjs/aws/index.d.ts +10 -0
- package/dist/cjs/aws/index.d.ts.map +1 -0
- package/dist/cjs/aws/index.js +17 -0
- package/dist/cjs/aws/index.js.map +1 -0
- package/dist/cjs/aws/network.d.ts +27 -0
- package/dist/cjs/aws/network.d.ts.map +1 -0
- package/dist/cjs/aws/network.js +262 -0
- package/dist/cjs/aws/network.js.map +1 -0
- package/dist/cjs/aws/secrets.d.ts +26 -0
- package/dist/cjs/aws/secrets.d.ts.map +1 -0
- package/dist/cjs/aws/secrets.js +127 -0
- package/dist/cjs/aws/secrets.js.map +1 -0
- package/dist/cjs/azure/cluster.d.ts +44 -0
- package/dist/cjs/azure/cluster.d.ts.map +1 -0
- package/dist/cjs/azure/cluster.js +143 -0
- package/dist/cjs/azure/cluster.js.map +1 -0
- package/dist/cjs/azure/dns.d.ts +28 -0
- package/dist/cjs/azure/dns.d.ts.map +1 -0
- package/dist/cjs/azure/dns.js +169 -0
- package/dist/cjs/azure/dns.js.map +1 -0
- package/dist/cjs/azure/index.d.ts +10 -0
- package/dist/cjs/azure/index.d.ts.map +1 -0
- package/dist/cjs/azure/index.js +17 -0
- package/dist/cjs/azure/index.js.map +1 -0
- package/dist/cjs/azure/network.d.ts +28 -0
- package/dist/cjs/azure/network.d.ts.map +1 -0
- package/dist/cjs/azure/network.js +176 -0
- package/dist/cjs/azure/network.js.map +1 -0
- package/dist/cjs/azure/secrets.d.ts +37 -0
- package/dist/cjs/azure/secrets.d.ts.map +1 -0
- package/dist/cjs/azure/secrets.js +150 -0
- package/dist/cjs/azure/secrets.js.map +1 -0
- package/dist/cjs/cache/index.d.ts +7 -0
- package/dist/cjs/cache/index.d.ts.map +1 -0
- package/dist/cjs/cache/index.js +8 -0
- package/dist/cjs/cache/index.js.map +1 -0
- package/dist/cjs/cache/interfaces.d.ts +60 -0
- package/dist/cjs/cache/interfaces.d.ts.map +1 -0
- package/dist/cjs/cache/interfaces.js +11 -0
- package/dist/cjs/cache/interfaces.js.map +1 -0
- package/dist/cjs/cluster/index.d.ts +7 -0
- package/dist/cjs/cluster/index.d.ts.map +1 -0
- package/dist/cjs/cluster/index.js +8 -0
- package/dist/cjs/cluster/index.js.map +1 -0
- package/dist/cjs/cluster/interfaces.d.ts +120 -0
- package/dist/cjs/cluster/interfaces.d.ts.map +1 -0
- package/dist/cjs/cluster/interfaces.js +12 -0
- package/dist/cjs/cluster/interfaces.js.map +1 -0
- package/dist/cjs/database/index.d.ts +7 -0
- package/dist/cjs/database/index.d.ts.map +1 -0
- package/dist/cjs/database/index.js +8 -0
- package/dist/cjs/database/index.js.map +1 -0
- package/dist/cjs/database/interfaces.d.ts +93 -0
- package/dist/cjs/database/interfaces.d.ts.map +1 -0
- package/dist/cjs/database/interfaces.js +12 -0
- package/dist/cjs/database/interfaces.js.map +1 -0
- package/dist/cjs/dns/index.d.ts +7 -0
- package/dist/cjs/dns/index.d.ts.map +1 -0
- package/dist/cjs/dns/index.js +8 -0
- package/dist/cjs/dns/index.js.map +1 -0
- package/dist/cjs/dns/interfaces.d.ts +55 -0
- package/dist/cjs/dns/interfaces.d.ts.map +1 -0
- package/dist/cjs/dns/interfaces.js +11 -0
- package/dist/cjs/dns/interfaces.js.map +1 -0
- package/dist/cjs/factories/cluster.d.ts +45 -0
- package/dist/cjs/factories/cluster.d.ts.map +1 -0
- package/dist/cjs/factories/cluster.js +90 -0
- package/dist/cjs/factories/cluster.js.map +1 -0
- package/dist/cjs/factories/dns.d.ts +30 -0
- package/dist/cjs/factories/dns.d.ts.map +1 -0
- package/dist/cjs/factories/dns.js +56 -0
- package/dist/cjs/factories/dns.js.map +1 -0
- package/dist/cjs/factories/index.d.ts +15 -0
- package/dist/cjs/factories/index.d.ts.map +1 -0
- package/dist/cjs/factories/index.js +23 -0
- package/dist/cjs/factories/index.js.map +1 -0
- package/dist/cjs/factories/network.d.ts +40 -0
- package/dist/cjs/factories/network.d.ts.map +1 -0
- package/dist/cjs/factories/network.js +85 -0
- package/dist/cjs/factories/network.js.map +1 -0
- package/dist/cjs/factories/secrets.d.ts +38 -0
- package/dist/cjs/factories/secrets.d.ts.map +1 -0
- package/dist/cjs/factories/secrets.js +67 -0
- package/dist/cjs/factories/secrets.js.map +1 -0
- package/dist/cjs/factories/types.d.ts +75 -0
- package/dist/cjs/factories/types.d.ts.map +1 -0
- package/dist/cjs/factories/types.js +28 -0
- package/dist/cjs/factories/types.js.map +1 -0
- package/dist/cjs/global-lb/glb.d.ts +29 -0
- package/dist/cjs/global-lb/glb.d.ts.map +1 -0
- package/dist/cjs/global-lb/glb.js +220 -0
- package/dist/cjs/global-lb/glb.js.map +1 -0
- package/dist/cjs/global-lb/index.d.ts +8 -0
- package/dist/cjs/global-lb/index.d.ts.map +1 -0
- package/dist/cjs/global-lb/index.js +11 -0
- package/dist/cjs/global-lb/index.js.map +1 -0
- package/dist/cjs/global-lb/interfaces.d.ts +62 -0
- package/dist/cjs/global-lb/interfaces.d.ts.map +1 -0
- package/dist/cjs/global-lb/interfaces.js +11 -0
- package/dist/cjs/global-lb/interfaces.js.map +1 -0
- package/dist/cjs/index.d.ts +28 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +72 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/network/cidr.d.ts +92 -0
- package/dist/cjs/network/cidr.d.ts.map +1 -0
- package/dist/cjs/network/cidr.js +189 -0
- package/dist/cjs/network/cidr.js.map +1 -0
- package/dist/cjs/network/index.d.ts +8 -0
- package/dist/cjs/network/index.d.ts.map +1 -0
- package/dist/cjs/network/index.js +17 -0
- package/dist/cjs/network/index.js.map +1 -0
- package/dist/cjs/network/interfaces.d.ts +60 -0
- package/dist/cjs/network/interfaces.d.ts.map +1 -0
- package/dist/cjs/network/interfaces.js +12 -0
- package/dist/cjs/network/interfaces.js.map +1 -0
- package/dist/cjs/platform/index.d.ts +8 -0
- package/dist/cjs/platform/index.d.ts.map +1 -0
- package/dist/cjs/platform/index.js +11 -0
- package/dist/cjs/platform/index.js.map +1 -0
- package/dist/cjs/platform/interfaces.d.ts +86 -0
- package/dist/cjs/platform/interfaces.d.ts.map +1 -0
- package/dist/cjs/platform/interfaces.js +12 -0
- package/dist/cjs/platform/interfaces.js.map +1 -0
- package/dist/cjs/platform/stack.d.ts +32 -0
- package/dist/cjs/platform/stack.d.ts.map +1 -0
- package/dist/cjs/platform/stack.js +258 -0
- package/dist/cjs/platform/stack.js.map +1 -0
- package/dist/cjs/queue/index.d.ts +7 -0
- package/dist/cjs/queue/index.d.ts.map +1 -0
- package/dist/cjs/queue/index.js +8 -0
- package/dist/cjs/queue/index.js.map +1 -0
- package/dist/cjs/queue/interfaces.d.ts +46 -0
- package/dist/cjs/queue/interfaces.d.ts.map +1 -0
- package/dist/cjs/queue/interfaces.js +11 -0
- package/dist/cjs/queue/interfaces.js.map +1 -0
- package/dist/cjs/secrets/index.d.ts +7 -0
- package/dist/cjs/secrets/index.d.ts.map +1 -0
- package/dist/cjs/secrets/index.js +8 -0
- package/dist/cjs/secrets/index.js.map +1 -0
- package/dist/cjs/secrets/interfaces.d.ts +73 -0
- package/dist/cjs/secrets/interfaces.d.ts.map +1 -0
- package/dist/cjs/secrets/interfaces.js +11 -0
- package/dist/cjs/secrets/interfaces.js.map +1 -0
- package/dist/cjs/storage/index.d.ts +7 -0
- package/dist/cjs/storage/index.d.ts.map +1 -0
- package/dist/cjs/storage/index.js +8 -0
- package/dist/cjs/storage/index.js.map +1 -0
- package/dist/cjs/storage/interfaces.d.ts +63 -0
- package/dist/cjs/storage/interfaces.d.ts.map +1 -0
- package/dist/cjs/storage/interfaces.js +11 -0
- package/dist/cjs/storage/interfaces.js.map +1 -0
- package/dist/cjs/types/cloud-target.d.ts +89 -0
- package/dist/cjs/types/cloud-target.d.ts.map +1 -0
- package/dist/cjs/types/cloud-target.js +73 -0
- package/dist/cjs/types/cloud-target.js.map +1 -0
- package/dist/cjs/types/errors.d.ts +96 -0
- package/dist/cjs/types/errors.d.ts.map +1 -0
- package/dist/cjs/types/errors.js +127 -0
- package/dist/cjs/types/errors.js.map +1 -0
- package/dist/cjs/types/index.d.ts +10 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +33 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/tags.d.ts +53 -0
- package/dist/cjs/types/tags.d.ts.map +1 -0
- package/dist/cjs/types/tags.js +110 -0
- package/dist/cjs/types/tags.js.map +1 -0
- package/dist/cjs/types/validation.d.ts +63 -0
- package/dist/cjs/types/validation.d.ts.map +1 -0
- package/dist/cjs/types/validation.js +158 -0
- package/dist/cjs/types/validation.js.map +1 -0
- package/dist/esm/aws/cluster.d.ts +32 -0
- package/dist/esm/aws/cluster.d.ts.map +1 -0
- package/dist/esm/aws/cluster.js +214 -0
- package/dist/esm/aws/cluster.js.map +1 -0
- package/dist/esm/aws/dns.d.ts +22 -0
- package/dist/esm/aws/dns.d.ts.map +1 -0
- package/dist/esm/aws/dns.js +95 -0
- package/dist/esm/aws/dns.js.map +1 -0
- package/dist/esm/aws/index.d.ts +10 -0
- package/dist/esm/aws/index.d.ts.map +1 -0
- package/dist/esm/aws/index.js +17 -0
- package/dist/esm/aws/index.js.map +1 -0
- package/dist/esm/aws/network.d.ts +27 -0
- package/dist/esm/aws/network.d.ts.map +1 -0
- package/dist/esm/aws/network.js +262 -0
- package/dist/esm/aws/network.js.map +1 -0
- package/dist/esm/aws/secrets.d.ts +26 -0
- package/dist/esm/aws/secrets.d.ts.map +1 -0
- package/dist/esm/aws/secrets.js +127 -0
- package/dist/esm/aws/secrets.js.map +1 -0
- package/dist/esm/azure/cluster.d.ts +44 -0
- package/dist/esm/azure/cluster.d.ts.map +1 -0
- package/dist/esm/azure/cluster.js +143 -0
- package/dist/esm/azure/cluster.js.map +1 -0
- package/dist/esm/azure/dns.d.ts +28 -0
- package/dist/esm/azure/dns.d.ts.map +1 -0
- package/dist/esm/azure/dns.js +169 -0
- package/dist/esm/azure/dns.js.map +1 -0
- package/dist/esm/azure/index.d.ts +10 -0
- package/dist/esm/azure/index.d.ts.map +1 -0
- package/dist/esm/azure/index.js +17 -0
- package/dist/esm/azure/index.js.map +1 -0
- package/dist/esm/azure/network.d.ts +28 -0
- package/dist/esm/azure/network.d.ts.map +1 -0
- package/dist/esm/azure/network.js +176 -0
- package/dist/esm/azure/network.js.map +1 -0
- package/dist/esm/azure/secrets.d.ts +37 -0
- package/dist/esm/azure/secrets.d.ts.map +1 -0
- package/dist/esm/azure/secrets.js +150 -0
- package/dist/esm/azure/secrets.js.map +1 -0
- package/dist/esm/cache/index.d.ts +7 -0
- package/dist/esm/cache/index.d.ts.map +1 -0
- package/dist/esm/cache/index.js +8 -0
- package/dist/esm/cache/index.js.map +1 -0
- package/dist/esm/cache/interfaces.d.ts +60 -0
- package/dist/esm/cache/interfaces.d.ts.map +1 -0
- package/dist/esm/cache/interfaces.js +11 -0
- package/dist/esm/cache/interfaces.js.map +1 -0
- package/dist/esm/cluster/index.d.ts +7 -0
- package/dist/esm/cluster/index.d.ts.map +1 -0
- package/dist/esm/cluster/index.js +8 -0
- package/dist/esm/cluster/index.js.map +1 -0
- package/dist/esm/cluster/interfaces.d.ts +120 -0
- package/dist/esm/cluster/interfaces.d.ts.map +1 -0
- package/dist/esm/cluster/interfaces.js +12 -0
- package/dist/esm/cluster/interfaces.js.map +1 -0
- package/dist/esm/database/index.d.ts +7 -0
- package/dist/esm/database/index.d.ts.map +1 -0
- package/dist/esm/database/index.js +8 -0
- package/dist/esm/database/index.js.map +1 -0
- package/dist/esm/database/interfaces.d.ts +93 -0
- package/dist/esm/database/interfaces.d.ts.map +1 -0
- package/dist/esm/database/interfaces.js +12 -0
- package/dist/esm/database/interfaces.js.map +1 -0
- package/dist/esm/dns/index.d.ts +7 -0
- package/dist/esm/dns/index.d.ts.map +1 -0
- package/dist/esm/dns/index.js +8 -0
- package/dist/esm/dns/index.js.map +1 -0
- package/dist/esm/dns/interfaces.d.ts +55 -0
- package/dist/esm/dns/interfaces.d.ts.map +1 -0
- package/dist/esm/dns/interfaces.js +11 -0
- package/dist/esm/dns/interfaces.js.map +1 -0
- package/dist/esm/factories/cluster.d.ts +45 -0
- package/dist/esm/factories/cluster.d.ts.map +1 -0
- package/dist/esm/factories/cluster.js +90 -0
- package/dist/esm/factories/cluster.js.map +1 -0
- package/dist/esm/factories/dns.d.ts +30 -0
- package/dist/esm/factories/dns.d.ts.map +1 -0
- package/dist/esm/factories/dns.js +56 -0
- package/dist/esm/factories/dns.js.map +1 -0
- package/dist/esm/factories/index.d.ts +15 -0
- package/dist/esm/factories/index.d.ts.map +1 -0
- package/dist/esm/factories/index.js +23 -0
- package/dist/esm/factories/index.js.map +1 -0
- package/dist/esm/factories/network.d.ts +40 -0
- package/dist/esm/factories/network.d.ts.map +1 -0
- package/dist/esm/factories/network.js +85 -0
- package/dist/esm/factories/network.js.map +1 -0
- package/dist/esm/factories/secrets.d.ts +38 -0
- package/dist/esm/factories/secrets.d.ts.map +1 -0
- package/dist/esm/factories/secrets.js +67 -0
- package/dist/esm/factories/secrets.js.map +1 -0
- package/dist/esm/factories/types.d.ts +75 -0
- package/dist/esm/factories/types.d.ts.map +1 -0
- package/dist/esm/factories/types.js +28 -0
- package/dist/esm/factories/types.js.map +1 -0
- package/dist/esm/global-lb/glb.d.ts +29 -0
- package/dist/esm/global-lb/glb.d.ts.map +1 -0
- package/dist/esm/global-lb/glb.js +220 -0
- package/dist/esm/global-lb/glb.js.map +1 -0
- package/dist/esm/global-lb/index.d.ts +8 -0
- package/dist/esm/global-lb/index.d.ts.map +1 -0
- package/dist/esm/global-lb/index.js +11 -0
- package/dist/esm/global-lb/index.js.map +1 -0
- package/dist/esm/global-lb/interfaces.d.ts +62 -0
- package/dist/esm/global-lb/interfaces.d.ts.map +1 -0
- package/dist/esm/global-lb/interfaces.js +11 -0
- package/dist/esm/global-lb/interfaces.js.map +1 -0
- package/dist/esm/index.d.ts +28 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/network/cidr.d.ts +92 -0
- package/dist/esm/network/cidr.d.ts.map +1 -0
- package/dist/esm/network/cidr.js +189 -0
- package/dist/esm/network/cidr.js.map +1 -0
- package/dist/esm/network/index.d.ts +8 -0
- package/dist/esm/network/index.d.ts.map +1 -0
- package/dist/esm/network/index.js +17 -0
- package/dist/esm/network/index.js.map +1 -0
- package/dist/esm/network/interfaces.d.ts +60 -0
- package/dist/esm/network/interfaces.d.ts.map +1 -0
- package/dist/esm/network/interfaces.js +12 -0
- package/dist/esm/network/interfaces.js.map +1 -0
- package/dist/esm/platform/index.d.ts +8 -0
- package/dist/esm/platform/index.d.ts.map +1 -0
- package/dist/esm/platform/index.js +11 -0
- package/dist/esm/platform/index.js.map +1 -0
- package/dist/esm/platform/interfaces.d.ts +86 -0
- package/dist/esm/platform/interfaces.d.ts.map +1 -0
- package/dist/esm/platform/interfaces.js +12 -0
- package/dist/esm/platform/interfaces.js.map +1 -0
- package/dist/esm/platform/stack.d.ts +32 -0
- package/dist/esm/platform/stack.d.ts.map +1 -0
- package/dist/esm/platform/stack.js +258 -0
- package/dist/esm/platform/stack.js.map +1 -0
- package/dist/esm/queue/index.d.ts +7 -0
- package/dist/esm/queue/index.d.ts.map +1 -0
- package/dist/esm/queue/index.js +8 -0
- package/dist/esm/queue/index.js.map +1 -0
- package/dist/esm/queue/interfaces.d.ts +46 -0
- package/dist/esm/queue/interfaces.d.ts.map +1 -0
- package/dist/esm/queue/interfaces.js +11 -0
- package/dist/esm/queue/interfaces.js.map +1 -0
- package/dist/esm/secrets/index.d.ts +7 -0
- package/dist/esm/secrets/index.d.ts.map +1 -0
- package/dist/esm/secrets/index.js +8 -0
- package/dist/esm/secrets/index.js.map +1 -0
- package/dist/esm/secrets/interfaces.d.ts +73 -0
- package/dist/esm/secrets/interfaces.d.ts.map +1 -0
- package/dist/esm/secrets/interfaces.js +11 -0
- package/dist/esm/secrets/interfaces.js.map +1 -0
- package/dist/esm/storage/index.d.ts +7 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +8 -0
- package/dist/esm/storage/index.js.map +1 -0
- package/dist/esm/storage/interfaces.d.ts +63 -0
- package/dist/esm/storage/interfaces.d.ts.map +1 -0
- package/dist/esm/storage/interfaces.js +11 -0
- package/dist/esm/storage/interfaces.js.map +1 -0
- package/dist/esm/types/cloud-target.d.ts +89 -0
- package/dist/esm/types/cloud-target.d.ts.map +1 -0
- package/dist/esm/types/cloud-target.js +73 -0
- package/dist/esm/types/cloud-target.js.map +1 -0
- package/dist/esm/types/errors.d.ts +96 -0
- package/dist/esm/types/errors.d.ts.map +1 -0
- package/dist/esm/types/errors.js +127 -0
- package/dist/esm/types/errors.js.map +1 -0
- package/dist/esm/types/index.d.ts +10 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +33 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/tags.d.ts +53 -0
- package/dist/esm/types/tags.d.ts.map +1 -0
- package/dist/esm/types/tags.js +110 -0
- package/dist/esm/types/tags.js.map +1 -0
- package/dist/esm/types/validation.d.ts +63 -0
- package/dist/esm/types/validation.d.ts.map +1 -0
- package/dist/esm/types/validation.js +158 -0
- package/dist/esm/types/validation.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-cloud validation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Validates multi-cloud configurations for compatibility:
|
|
5
|
+
* - Region naming consistency
|
|
6
|
+
* - Resource naming conflicts
|
|
7
|
+
* - Feature availability per provider
|
|
8
|
+
*
|
|
9
|
+
* @module types/validation
|
|
10
|
+
*/
|
|
11
|
+
import type { CloudProvider, ResolvedCloudTarget } from "./cloud-target";
|
|
12
|
+
/** Validation result with warnings and errors. */
|
|
13
|
+
export interface IValidationResult {
|
|
14
|
+
readonly valid: boolean;
|
|
15
|
+
readonly errors: ReadonlyArray<string>;
|
|
16
|
+
readonly warnings: ReadonlyArray<string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Validate that a feature is supported on a given provider.
|
|
20
|
+
*
|
|
21
|
+
* @param feature - Feature name to check
|
|
22
|
+
* @param provider - Cloud provider
|
|
23
|
+
* @throws {UnsupportedFeatureError} If the feature is not available
|
|
24
|
+
*/
|
|
25
|
+
export declare function validateFeature(feature: string, provider: CloudProvider): void;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a feature is available on a provider (non-throwing).
|
|
28
|
+
*
|
|
29
|
+
* @param feature - Feature name
|
|
30
|
+
* @param provider - Cloud provider
|
|
31
|
+
* @returns True if the feature is supported
|
|
32
|
+
*/
|
|
33
|
+
export declare function isFeatureSupported(feature: string, provider: CloudProvider): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Validate a multi-cloud deployment configuration.
|
|
36
|
+
*
|
|
37
|
+
* Checks for:
|
|
38
|
+
* - Duplicate provider+region combinations
|
|
39
|
+
* - Resource name length constraints per provider
|
|
40
|
+
* - Region availability
|
|
41
|
+
*
|
|
42
|
+
* @param targets - Array of resolved cloud targets
|
|
43
|
+
* @param resourceName - Name that will be used for resources
|
|
44
|
+
* @returns Validation result with any errors/warnings
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateMultiCloud(targets: ReadonlyArray<ResolvedCloudTarget>, resourceName: string): IValidationResult;
|
|
47
|
+
/**
|
|
48
|
+
* Validate a resource name against provider-specific constraints.
|
|
49
|
+
*
|
|
50
|
+
* @param name - Resource name to validate
|
|
51
|
+
* @param provider - Target cloud provider
|
|
52
|
+
* @returns Validation result
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateResourceName(name: string, provider: CloudProvider): IValidationResult;
|
|
55
|
+
/**
|
|
56
|
+
* Assert that a multi-cloud configuration is valid, throwing on errors.
|
|
57
|
+
*
|
|
58
|
+
* @param targets - Resolved cloud targets
|
|
59
|
+
* @param resourceName - Resource name
|
|
60
|
+
* @throws {CloudValidationError} If validation fails
|
|
61
|
+
*/
|
|
62
|
+
export declare function assertValidMultiCloud(targets: ReadonlyArray<ResolvedCloudTarget>, resourceName: string): void;
|
|
63
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGzE,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAwBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAK9E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAEpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC3C,YAAY,EAAE,MAAM,GACnB,iBAAiB,CA0BnB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,iBAAiB,CA0C7F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC3C,YAAY,EAAE,MAAM,GACnB,IAAI,CAKN"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-cloud validation utilities.
|
|
4
|
+
*
|
|
5
|
+
* Validates multi-cloud configurations for compatibility:
|
|
6
|
+
* - Region naming consistency
|
|
7
|
+
* - Resource naming conflicts
|
|
8
|
+
* - Feature availability per provider
|
|
9
|
+
*
|
|
10
|
+
* @module types/validation
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.validateFeature = validateFeature;
|
|
14
|
+
exports.isFeatureSupported = isFeatureSupported;
|
|
15
|
+
exports.validateMultiCloud = validateMultiCloud;
|
|
16
|
+
exports.validateResourceName = validateResourceName;
|
|
17
|
+
exports.assertValidMultiCloud = assertValidMultiCloud;
|
|
18
|
+
const errors_1 = require("./errors");
|
|
19
|
+
/** Features that may not be available on all providers. */
|
|
20
|
+
const PROVIDER_FEATURES = {
|
|
21
|
+
aws: new Set([
|
|
22
|
+
"eks-auto-mode",
|
|
23
|
+
"fck-nat",
|
|
24
|
+
"managed-nat",
|
|
25
|
+
"spot-instances",
|
|
26
|
+
"route53",
|
|
27
|
+
"secrets-manager",
|
|
28
|
+
]),
|
|
29
|
+
azure: new Set([
|
|
30
|
+
"virtual-nodes",
|
|
31
|
+
"azure-cni",
|
|
32
|
+
"managed-nat",
|
|
33
|
+
"spot-instances",
|
|
34
|
+
"azure-dns",
|
|
35
|
+
"key-vault",
|
|
36
|
+
]),
|
|
37
|
+
gcp: new Set(["autopilot", "managed-nat", "spot-instances", "cloud-dns", "secret-manager"]),
|
|
38
|
+
rackspace: new Set(["spot-instances"]),
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Validate that a feature is supported on a given provider.
|
|
42
|
+
*
|
|
43
|
+
* @param feature - Feature name to check
|
|
44
|
+
* @param provider - Cloud provider
|
|
45
|
+
* @throws {UnsupportedFeatureError} If the feature is not available
|
|
46
|
+
*/
|
|
47
|
+
function validateFeature(feature, provider) {
|
|
48
|
+
const supported = PROVIDER_FEATURES[provider];
|
|
49
|
+
if (!supported.has(feature)) {
|
|
50
|
+
throw new errors_1.UnsupportedFeatureError(feature, provider);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a feature is available on a provider (non-throwing).
|
|
55
|
+
*
|
|
56
|
+
* @param feature - Feature name
|
|
57
|
+
* @param provider - Cloud provider
|
|
58
|
+
* @returns True if the feature is supported
|
|
59
|
+
*/
|
|
60
|
+
function isFeatureSupported(feature, provider) {
|
|
61
|
+
return PROVIDER_FEATURES[provider].has(feature);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate a multi-cloud deployment configuration.
|
|
65
|
+
*
|
|
66
|
+
* Checks for:
|
|
67
|
+
* - Duplicate provider+region combinations
|
|
68
|
+
* - Resource name length constraints per provider
|
|
69
|
+
* - Region availability
|
|
70
|
+
*
|
|
71
|
+
* @param targets - Array of resolved cloud targets
|
|
72
|
+
* @param resourceName - Name that will be used for resources
|
|
73
|
+
* @returns Validation result with any errors/warnings
|
|
74
|
+
*/
|
|
75
|
+
function validateMultiCloud(targets, resourceName) {
|
|
76
|
+
const errors = [];
|
|
77
|
+
const warnings = [];
|
|
78
|
+
// Check for duplicate targets
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
for (const target of targets) {
|
|
81
|
+
const key = `${target.provider}:${target.region}`;
|
|
82
|
+
if (seen.has(key)) {
|
|
83
|
+
errors.push(`Duplicate target: ${key}. Each provider+region combination must be unique.`);
|
|
84
|
+
}
|
|
85
|
+
seen.add(key);
|
|
86
|
+
}
|
|
87
|
+
// Validate resource naming per provider
|
|
88
|
+
for (const target of targets) {
|
|
89
|
+
const nameIssues = validateResourceName(resourceName, target.provider);
|
|
90
|
+
errors.push(...nameIssues.errors);
|
|
91
|
+
warnings.push(...nameIssues.warnings);
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
valid: errors.length === 0,
|
|
95
|
+
errors,
|
|
96
|
+
warnings,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Validate a resource name against provider-specific constraints.
|
|
101
|
+
*
|
|
102
|
+
* @param name - Resource name to validate
|
|
103
|
+
* @param provider - Target cloud provider
|
|
104
|
+
* @returns Validation result
|
|
105
|
+
*/
|
|
106
|
+
function validateResourceName(name, provider) {
|
|
107
|
+
const errors = [];
|
|
108
|
+
const warnings = [];
|
|
109
|
+
switch (provider) {
|
|
110
|
+
case "aws":
|
|
111
|
+
// AWS names are generally flexible but some have 63-char limits
|
|
112
|
+
if (name.length > 63) {
|
|
113
|
+
errors.push(`Resource name "${name}" exceeds AWS 63-character limit.`);
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
case "azure":
|
|
117
|
+
// Azure resource names: 1-63 chars, alphanumeric + hyphens
|
|
118
|
+
if (name.length > 63) {
|
|
119
|
+
errors.push(`Resource name "${name}" exceeds Azure 63-character limit.`);
|
|
120
|
+
}
|
|
121
|
+
if (/[^a-zA-Z0-9-]/.test(name)) {
|
|
122
|
+
warnings.push(`Resource name "${name}" contains characters not allowed in Azure (only alphanumeric + hyphens).`);
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
case "gcp":
|
|
126
|
+
// GCP: 1-63 chars, lowercase + hyphens, must start with letter
|
|
127
|
+
if (name.length > 63) {
|
|
128
|
+
errors.push(`Resource name "${name}" exceeds GCP 63-character limit.`);
|
|
129
|
+
}
|
|
130
|
+
if (name !== name.toLowerCase()) {
|
|
131
|
+
warnings.push(`Resource name "${name}" will be lowercased for GCP.`);
|
|
132
|
+
}
|
|
133
|
+
if (!/^[a-z]/.test(name.toLowerCase())) {
|
|
134
|
+
errors.push(`Resource name "${name}" must start with a letter for GCP.`);
|
|
135
|
+
}
|
|
136
|
+
break;
|
|
137
|
+
case "rackspace":
|
|
138
|
+
if (name.length > 255) {
|
|
139
|
+
errors.push(`Resource name "${name}" exceeds Rackspace 255-character limit.`);
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Assert that a multi-cloud configuration is valid, throwing on errors.
|
|
147
|
+
*
|
|
148
|
+
* @param targets - Resolved cloud targets
|
|
149
|
+
* @param resourceName - Resource name
|
|
150
|
+
* @throws {CloudValidationError} If validation fails
|
|
151
|
+
*/
|
|
152
|
+
function assertValidMultiCloud(targets, resourceName) {
|
|
153
|
+
const result = validateMultiCloud(targets, resourceName);
|
|
154
|
+
if (!result.valid) {
|
|
155
|
+
throw new errors_1.CloudValidationError(`Multi-cloud validation failed:\n${result.errors.join("\n")}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS EKS cluster implementation with Auto Mode support.
|
|
3
|
+
*
|
|
4
|
+
* @module aws/cluster
|
|
5
|
+
*/
|
|
6
|
+
import type { ICluster, IClusterConfig } from "../cluster";
|
|
7
|
+
import type { INetwork } from "../network";
|
|
8
|
+
/** AWS-specific EKS options beyond the base config. */
|
|
9
|
+
export interface IEksOptions {
|
|
10
|
+
/** Enable EKS Auto Mode (managed node provisioning). Default: false. */
|
|
11
|
+
readonly autoMode?: boolean;
|
|
12
|
+
/** EKS add-ons to install. Default: vpc-cni, coredns, kube-proxy. */
|
|
13
|
+
readonly addons?: ReadonlyArray<string>;
|
|
14
|
+
/** Endpoint access: "public", "private", or "both". Default: "both". */
|
|
15
|
+
readonly endpointAccess?: "public" | "private" | "both";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create an EKS cluster with optional Auto Mode.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const cluster = createEksCluster("prod", {
|
|
23
|
+
* cloud: "aws",
|
|
24
|
+
* nodePools: [
|
|
25
|
+
* { name: "system", instanceType: "t4g.small", minNodes: 2, maxNodes: 3 },
|
|
26
|
+
* { name: "spot", instanceType: "t4g.medium", minNodes: 1, maxNodes: 10, spot: true },
|
|
27
|
+
* ],
|
|
28
|
+
* }, network, { autoMode: true });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function createEksCluster(name: string, config: IClusterConfig, network: INetwork, options?: IEksOptions): ICluster;
|
|
32
|
+
//# sourceMappingURL=cluster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../src/aws/cluster.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;CACzD;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,QAAQ,CA8IV"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS EKS cluster implementation with Auto Mode support.
|
|
4
|
+
*
|
|
5
|
+
* @module aws/cluster
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.createEksCluster = createEksCluster;
|
|
42
|
+
const aws = __importStar(require("@pulumi/aws"));
|
|
43
|
+
const k8s = __importStar(require("@pulumi/kubernetes"));
|
|
44
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
45
|
+
const types_1 = require("../types");
|
|
46
|
+
const DEFAULT_ADDONS = ["vpc-cni", "coredns", "kube-proxy"];
|
|
47
|
+
/**
|
|
48
|
+
* Create an EKS cluster with optional Auto Mode.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const cluster = createEksCluster("prod", {
|
|
53
|
+
* cloud: "aws",
|
|
54
|
+
* nodePools: [
|
|
55
|
+
* { name: "system", instanceType: "t4g.small", minNodes: 2, maxNodes: 3 },
|
|
56
|
+
* { name: "spot", instanceType: "t4g.medium", minNodes: 1, maxNodes: 10, spot: true },
|
|
57
|
+
* ],
|
|
58
|
+
* }, network, { autoMode: true });
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
function createEksCluster(name, config, network, options) {
|
|
62
|
+
const cloud = Array.isArray(config.cloud) ? (config.cloud[0] ?? "aws") : config.cloud;
|
|
63
|
+
const target = (0, types_1.resolveCloudTarget)(cloud);
|
|
64
|
+
const tags = config.tags ?? {};
|
|
65
|
+
const autoMode = options?.autoMode ?? config.autoMode ?? false;
|
|
66
|
+
const addons = options?.addons ?? DEFAULT_ADDONS;
|
|
67
|
+
const endpointAccess = options?.endpointAccess ?? "both";
|
|
68
|
+
// EKS cluster IAM role
|
|
69
|
+
const clusterRole = new aws.iam.Role(`${name}-cluster-role`, {
|
|
70
|
+
namePrefix: `${name}-eks`,
|
|
71
|
+
assumeRolePolicy: JSON.stringify({
|
|
72
|
+
Version: "2012-10-17",
|
|
73
|
+
Statement: [
|
|
74
|
+
{
|
|
75
|
+
Action: "sts:AssumeRole",
|
|
76
|
+
Effect: "Allow",
|
|
77
|
+
Principal: { Service: "eks.amazonaws.com" },
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
}),
|
|
81
|
+
tags,
|
|
82
|
+
});
|
|
83
|
+
new aws.iam.RolePolicyAttachment(`${name}-cluster-policy`, {
|
|
84
|
+
policyArn: "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy",
|
|
85
|
+
role: clusterRole.name,
|
|
86
|
+
});
|
|
87
|
+
// EKS Cluster
|
|
88
|
+
const cluster = new aws.eks.Cluster(`${name}-cluster`, {
|
|
89
|
+
name,
|
|
90
|
+
roleArn: clusterRole.arn,
|
|
91
|
+
version: config.version,
|
|
92
|
+
vpcConfig: {
|
|
93
|
+
subnetIds: pulumi
|
|
94
|
+
.all([network.publicSubnetIds, network.privateSubnetIds])
|
|
95
|
+
.apply(([pub, priv]) => [...pub, ...priv]),
|
|
96
|
+
endpointPrivateAccess: endpointAccess === "private" || endpointAccess === "both",
|
|
97
|
+
endpointPublicAccess: endpointAccess === "public" || endpointAccess === "both",
|
|
98
|
+
},
|
|
99
|
+
computeConfig: autoMode ? { enabled: true } : undefined,
|
|
100
|
+
accessConfig: { authenticationMode: "API_AND_CONFIG_MAP" },
|
|
101
|
+
tags: { ...tags, [`kubernetes.io/cluster/${name}`]: "owned" },
|
|
102
|
+
});
|
|
103
|
+
// Node pools — Auto Mode delegates to EKS, standard uses managed node groups
|
|
104
|
+
const nodeGroups = [];
|
|
105
|
+
if (!autoMode) {
|
|
106
|
+
for (const np of config.nodePools) {
|
|
107
|
+
const nodeRole = createNodeRole(`${name}-${np.name}`, tags);
|
|
108
|
+
nodeGroups.push(new aws.eks.NodeGroup(`${name}-ng-${np.name}`, {
|
|
109
|
+
clusterName: cluster.name,
|
|
110
|
+
nodeGroupName: `${name}-${np.name}`,
|
|
111
|
+
nodeRoleArn: nodeRole.arn,
|
|
112
|
+
instanceTypes: [np.instanceType],
|
|
113
|
+
capacityType: np.spot ? "SPOT" : "ON_DEMAND",
|
|
114
|
+
scalingConfig: {
|
|
115
|
+
desiredSize: np.desiredNodes ?? np.minNodes,
|
|
116
|
+
minSize: np.minNodes,
|
|
117
|
+
maxSize: np.maxNodes,
|
|
118
|
+
},
|
|
119
|
+
subnetIds: network.privateSubnetIds,
|
|
120
|
+
labels: np.labels,
|
|
121
|
+
tags: { ...tags, Name: `${name}-${np.name}` },
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const firstNodeGroup = nodeGroups[0];
|
|
126
|
+
// EKS Add-ons
|
|
127
|
+
for (const addon of addons) {
|
|
128
|
+
new aws.eks.Addon(`${name}-addon-${addon}`, {
|
|
129
|
+
clusterName: cluster.name,
|
|
130
|
+
addonName: addon,
|
|
131
|
+
resolveConflictsOnCreate: "OVERWRITE",
|
|
132
|
+
resolveConflictsOnUpdate: "OVERWRITE",
|
|
133
|
+
tags,
|
|
134
|
+
}, firstNodeGroup ? { dependsOn: [firstNodeGroup] } : undefined);
|
|
135
|
+
}
|
|
136
|
+
// K8s provider for this cluster
|
|
137
|
+
const kubeconfig = pulumi
|
|
138
|
+
.all([cluster.endpoint, cluster.certificateAuthority, cluster.name])
|
|
139
|
+
.apply(([endpoint, ca, clusterName]) => JSON.stringify({
|
|
140
|
+
apiVersion: "v1",
|
|
141
|
+
kind: "Config",
|
|
142
|
+
clusters: [
|
|
143
|
+
{
|
|
144
|
+
cluster: {
|
|
145
|
+
server: endpoint,
|
|
146
|
+
"certificate-authority-data": ca.data,
|
|
147
|
+
},
|
|
148
|
+
name: clusterName,
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
contexts: [
|
|
152
|
+
{
|
|
153
|
+
context: { cluster: clusterName, user: clusterName },
|
|
154
|
+
name: clusterName,
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
"current-context": clusterName,
|
|
158
|
+
users: [
|
|
159
|
+
{
|
|
160
|
+
name: clusterName,
|
|
161
|
+
user: {
|
|
162
|
+
exec: {
|
|
163
|
+
apiVersion: "client.authentication.k8s.io/v1beta1",
|
|
164
|
+
command: "aws",
|
|
165
|
+
args: ["eks", "get-token", "--cluster-name", clusterName],
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
}));
|
|
171
|
+
const provider = new k8s.Provider(`${name}-k8s`, {
|
|
172
|
+
kubeconfig,
|
|
173
|
+
});
|
|
174
|
+
return {
|
|
175
|
+
name,
|
|
176
|
+
cloud: target,
|
|
177
|
+
endpoint: cluster.endpoint,
|
|
178
|
+
kubeconfig,
|
|
179
|
+
version: cluster.version,
|
|
180
|
+
nodePools: config.nodePools,
|
|
181
|
+
nativeResource: cluster,
|
|
182
|
+
provider,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function createNodeRole(name, tags) {
|
|
186
|
+
const role = new aws.iam.Role(`${name}-node-role`, {
|
|
187
|
+
namePrefix: `${name}-node`,
|
|
188
|
+
assumeRolePolicy: JSON.stringify({
|
|
189
|
+
Version: "2012-10-17",
|
|
190
|
+
Statement: [
|
|
191
|
+
{
|
|
192
|
+
Action: "sts:AssumeRole",
|
|
193
|
+
Effect: "Allow",
|
|
194
|
+
Principal: { Service: "ec2.amazonaws.com" },
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
}),
|
|
198
|
+
tags,
|
|
199
|
+
});
|
|
200
|
+
const policies = [
|
|
201
|
+
"arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
|
|
202
|
+
"arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
|
|
203
|
+
"arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
|
|
204
|
+
];
|
|
205
|
+
for (const policyArn of policies) {
|
|
206
|
+
const shortName = policyArn.split("/").pop() ?? policyArn;
|
|
207
|
+
new aws.iam.RolePolicyAttachment(`${name}-${shortName}`, {
|
|
208
|
+
policyArn,
|
|
209
|
+
role: role.name,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return role;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=cluster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../src/aws/cluster.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Route 53 DNS implementation.
|
|
3
|
+
*
|
|
4
|
+
* @module aws/dns
|
|
5
|
+
*/
|
|
6
|
+
import type { IDns, IDnsConfig } from "../dns";
|
|
7
|
+
/**
|
|
8
|
+
* Create a Route 53 hosted zone with optional initial records.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const dns = createRoute53Dns("prod", {
|
|
13
|
+
* cloud: "aws",
|
|
14
|
+
* zoneName: "example.com",
|
|
15
|
+
* records: [
|
|
16
|
+
* { name: "app", type: "A", values: ["1.2.3.4"], ttl: 300 },
|
|
17
|
+
* ],
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function createRoute53Dns(name: string, config: IDnsConfig): IDns;
|
|
22
|
+
//# sourceMappingURL=dns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.d.ts","sourceRoot":"","sources":["../../../src/aws/dns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAc,MAAM,QAAQ,CAAC;AAG3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6BvE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS Route 53 DNS implementation.
|
|
4
|
+
*
|
|
5
|
+
* @module aws/dns
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.createRoute53Dns = createRoute53Dns;
|
|
42
|
+
const aws = __importStar(require("@pulumi/aws"));
|
|
43
|
+
const types_1 = require("../types");
|
|
44
|
+
/**
|
|
45
|
+
* Create a Route 53 hosted zone with optional initial records.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const dns = createRoute53Dns("prod", {
|
|
50
|
+
* cloud: "aws",
|
|
51
|
+
* zoneName: "example.com",
|
|
52
|
+
* records: [
|
|
53
|
+
* { name: "app", type: "A", values: ["1.2.3.4"], ttl: 300 },
|
|
54
|
+
* ],
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
function createRoute53Dns(name, config) {
|
|
59
|
+
const cloud = Array.isArray(config.cloud) ? (config.cloud[0] ?? "aws") : config.cloud;
|
|
60
|
+
const target = (0, types_1.resolveCloudTarget)(cloud);
|
|
61
|
+
const tags = config.tags ?? {};
|
|
62
|
+
const zone = new aws.route53.Zone(`${name}-zone`, {
|
|
63
|
+
name: config.zoneName,
|
|
64
|
+
tags: { ...tags, Name: `${name}-zone` },
|
|
65
|
+
});
|
|
66
|
+
// Create initial records
|
|
67
|
+
if (config.records) {
|
|
68
|
+
for (const rec of config.records) {
|
|
69
|
+
createRecord(name, zone, rec);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
name,
|
|
74
|
+
cloud: target,
|
|
75
|
+
zoneId: zone.zoneId,
|
|
76
|
+
zoneName: config.zoneName,
|
|
77
|
+
nameServers: zone.nameServers,
|
|
78
|
+
nativeResource: zone,
|
|
79
|
+
addRecord(record) {
|
|
80
|
+
createRecord(name, zone, record);
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function createRecord(name, zone, record) {
|
|
85
|
+
const fqdn = record.name === "@" ? "" : record.name ? `${record.name}.` : "";
|
|
86
|
+
const resourceName = `${name}-${record.name || "root"}-${record.type.toLowerCase()}`;
|
|
87
|
+
return new aws.route53.Record(resourceName, {
|
|
88
|
+
zoneId: zone.zoneId,
|
|
89
|
+
name: zone.name.apply((zoneName) => `${fqdn}${zoneName}`),
|
|
90
|
+
type: record.type,
|
|
91
|
+
ttl: record.ttl ?? 300,
|
|
92
|
+
records: [...record.values],
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=dns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/aws/dns.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBH,4CA6BC;AAhDD,iDAAmC;AAGnC,oCAA8C;AAE9C;;;;;;;;;;;;;GAaG;AACH,SAAgB,gBAAgB,CAAC,IAAY,EAAE,MAAkB;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACtF,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE;QAChD,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE;KACxC,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,IAAI,CAAC,WAAmD;QACrE,cAAc,EAAE,IAAI;QACpB,SAAS,CAAC,MAAkB;YAC1B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,IAAsB,EACtB,MAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IAErF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE;QAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC;QACzD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG;QACtB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS provider implementations for @reyemtech/nimbus.
|
|
3
|
+
*
|
|
4
|
+
* @module aws
|
|
5
|
+
*/
|
|
6
|
+
export { createAwsNetwork, type IAwsNetworkOptions } from "./network";
|
|
7
|
+
export { createEksCluster, type IEksOptions } from "./cluster";
|
|
8
|
+
export { createRoute53Dns } from "./dns";
|
|
9
|
+
export { createAwsSecrets } from "./secrets";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/aws/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS provider implementations for @reyemtech/nimbus.
|
|
4
|
+
*
|
|
5
|
+
* @module aws
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.createAwsSecrets = exports.createRoute53Dns = exports.createEksCluster = exports.createAwsNetwork = void 0;
|
|
9
|
+
var network_1 = require("./network");
|
|
10
|
+
Object.defineProperty(exports, "createAwsNetwork", { enumerable: true, get: function () { return network_1.createAwsNetwork; } });
|
|
11
|
+
var cluster_1 = require("./cluster");
|
|
12
|
+
Object.defineProperty(exports, "createEksCluster", { enumerable: true, get: function () { return cluster_1.createEksCluster; } });
|
|
13
|
+
var dns_1 = require("./dns");
|
|
14
|
+
Object.defineProperty(exports, "createRoute53Dns", { enumerable: true, get: function () { return dns_1.createRoute53Dns; } });
|
|
15
|
+
var secrets_1 = require("./secrets");
|
|
16
|
+
Object.defineProperty(exports, "createAwsSecrets", { enumerable: true, get: function () { return secrets_1.createAwsSecrets; } });
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/aws/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qCAAsE;AAA7D,2GAAA,gBAAgB,OAAA;AACzB,qCAA+D;AAAtD,2GAAA,gBAAgB,OAAA;AACzB,6BAAyC;AAAhC,uGAAA,gBAAgB,OAAA;AACzB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA"}
|