@drunk-pulumi/azure-components 0.0.6

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.
Files changed (181) hide show
  1. package/PulumiPlugin.yaml +1 -0
  2. package/README.md +1 -0
  3. package/ResourceBuilder.d.ts +54 -0
  4. package/ResourceBuilder.js +71 -0
  5. package/aks/AzKubernetes.d.ts +55 -0
  6. package/aks/AzKubernetes.js +288 -0
  7. package/aks/ContainerRegistry.d.ts +19 -0
  8. package/aks/ContainerRegistry.js +119 -0
  9. package/aks/helpers.d.ts +6 -0
  10. package/aks/helpers.js +52 -0
  11. package/aks/index.d.ts +3 -0
  12. package/aks/index.js +43 -0
  13. package/app/AppCert.d.ts +15 -0
  14. package/app/AppCert.js +74 -0
  15. package/app/AppConfig.d.ts +18 -0
  16. package/app/AppConfig.js +124 -0
  17. package/app/AppService.d.ts +69 -0
  18. package/app/AppService.js +122 -0
  19. package/app/IoTHub.d.ts +15 -0
  20. package/app/IoTHub.js +80 -0
  21. package/app/LogicApp.d.ts +19 -0
  22. package/app/LogicApp.js +77 -0
  23. package/app/SignalR.d.ts +45 -0
  24. package/app/SignalR.js +125 -0
  25. package/app/index.d.ts +6 -0
  26. package/app/index.js +23 -0
  27. package/azAd/AppRegistration.d.ts +52 -0
  28. package/azAd/AppRegistration.js +165 -0
  29. package/azAd/AzRole.d.ts +14 -0
  30. package/azAd/AzRole.js +72 -0
  31. package/azAd/CustomRoles.d.ts +10 -0
  32. package/azAd/CustomRoles.js +73 -0
  33. package/azAd/GroupRole.d.ts +29 -0
  34. package/azAd/GroupRole.js +107 -0
  35. package/azAd/RoleAssignment.d.ts +15 -0
  36. package/azAd/RoleAssignment.js +63 -0
  37. package/azAd/UserAssignedIdentity.d.ts +17 -0
  38. package/azAd/UserAssignedIdentity.js +76 -0
  39. package/azAd/helpers/graphBuiltIn.d.ts +14 -0
  40. package/azAd/helpers/graphBuiltIn.js +5134 -0
  41. package/azAd/helpers/index.d.ts +3 -0
  42. package/azAd/helpers/index.js +39 -0
  43. package/azAd/helpers/rolesBuiltIn.d.ts +90 -0
  44. package/azAd/helpers/rolesBuiltIn.js +18601 -0
  45. package/azAd/helpers/rsRoleDefinition.d.ts +62 -0
  46. package/azAd/helpers/rsRoleDefinition.js +120 -0
  47. package/azAd/index.d.ts +7 -0
  48. package/azAd/index.js +24 -0
  49. package/base/BaseComponent.d.ts +53 -0
  50. package/base/BaseComponent.js +98 -0
  51. package/base/BaseResourceComponent.d.ts +108 -0
  52. package/base/BaseResourceComponent.js +180 -0
  53. package/base/helpers.d.ts +12 -0
  54. package/base/helpers.js +29 -0
  55. package/base/index.d.ts +3 -0
  56. package/base/index.js +43 -0
  57. package/common/PGPGenerator.d.ts +26 -0
  58. package/common/PGPGenerator.js +72 -0
  59. package/common/RandomPassword.d.ts +21 -0
  60. package/common/RandomPassword.js +84 -0
  61. package/common/RandomString.d.ts +20 -0
  62. package/common/RandomString.js +74 -0
  63. package/common/ResourceLocker.d.ts +9 -0
  64. package/common/ResourceLocker.js +52 -0
  65. package/common/RsGroup.d.ts +20 -0
  66. package/common/RsGroup.js +85 -0
  67. package/common/SshGenerator.d.ts +17 -0
  68. package/common/SshGenerator.js +66 -0
  69. package/common/index.d.ts +5 -0
  70. package/common/index.js +22 -0
  71. package/database/AzSql.d.ts +71 -0
  72. package/database/AzSql.js +283 -0
  73. package/database/MySql.d.ts +35 -0
  74. package/database/MySql.js +181 -0
  75. package/database/Postgres.d.ts +32 -0
  76. package/database/Postgres.js +171 -0
  77. package/database/Redis.d.ts +26 -0
  78. package/database/Redis.js +125 -0
  79. package/database/helpers.d.ts +7 -0
  80. package/database/helpers.js +52 -0
  81. package/database/index.d.ts +5 -0
  82. package/database/index.js +45 -0
  83. package/helpers/Location/LocationBuiltIn.d.ts +6 -0
  84. package/helpers/Location/LocationBuiltIn.js +493 -0
  85. package/helpers/Location/index.d.ts +3 -0
  86. package/helpers/Location/index.js +25 -0
  87. package/helpers/autoTags.d.ts +1 -0
  88. package/helpers/autoTags.js +27 -0
  89. package/helpers/azureEnv.d.ts +21 -0
  90. package/helpers/azureEnv.js +102 -0
  91. package/helpers/configHelper.d.ts +5 -0
  92. package/helpers/configHelper.js +54 -0
  93. package/helpers/index.d.ts +4 -0
  94. package/helpers/index.js +41 -0
  95. package/helpers/rsHelpers.d.ts +18 -0
  96. package/helpers/rsHelpers.js +92 -0
  97. package/helpers/stackEnv.d.ts +4 -0
  98. package/helpers/stackEnv.js +54 -0
  99. package/index.d.ts +14 -0
  100. package/index.js +53 -0
  101. package/logs/Logs.d.ts +48 -0
  102. package/logs/Logs.js +154 -0
  103. package/logs/helpers.d.ts +1 -0
  104. package/logs/helpers.js +38 -0
  105. package/logs/index.d.ts +1 -0
  106. package/logs/index.js +18 -0
  107. package/package.json +34 -0
  108. package/services/Automation.d.ts +16 -0
  109. package/services/Automation.js +85 -0
  110. package/services/AzSearch.d.ts +20 -0
  111. package/services/AzSearch.js +113 -0
  112. package/services/ServiceBus.d.ts +42 -0
  113. package/services/ServiceBus.js +256 -0
  114. package/services/index.d.ts +3 -0
  115. package/services/index.js +20 -0
  116. package/storage/StorageAccount.d.ts +53 -0
  117. package/storage/StorageAccount.js +261 -0
  118. package/storage/helpers.d.ts +24 -0
  119. package/storage/helpers.js +89 -0
  120. package/storage/index.d.ts +2 -0
  121. package/storage/index.js +42 -0
  122. package/types.d.ts +125 -0
  123. package/types.js +3 -0
  124. package/vault/EncryptionKey.d.ts +21 -0
  125. package/vault/EncryptionKey.js +73 -0
  126. package/vault/KeyVault.d.ts +31 -0
  127. package/vault/KeyVault.js +110 -0
  128. package/vault/VaultSecret.d.ts +23 -0
  129. package/vault/VaultSecret.js +72 -0
  130. package/vault/VaultSecrets.d.ts +25 -0
  131. package/vault/VaultSecrets.js +31 -0
  132. package/vault/helpers.d.ts +1 -0
  133. package/vault/helpers.js +13 -0
  134. package/vault/index.d.ts +5 -0
  135. package/vault/index.js +45 -0
  136. package/vm/DiskEncryptionSet.d.ts +16 -0
  137. package/vm/DiskEncryptionSet.js +74 -0
  138. package/vm/VirtualMachine.d.ts +45 -0
  139. package/vm/VirtualMachine.js +192 -0
  140. package/vm/helpers.d.ts +16 -0
  141. package/vm/helpers.js +15 -0
  142. package/vm/index.d.ts +3 -0
  143. package/vm/index.js +43 -0
  144. package/vnet/AzCdn.d.ts +44 -0
  145. package/vnet/AzCdn.js +276 -0
  146. package/vnet/Basion.d.ts +19 -0
  147. package/vnet/Basion.js +78 -0
  148. package/vnet/DnsZone.d.ts +36 -0
  149. package/vnet/DnsZone.js +113 -0
  150. package/vnet/Firewall.d.ts +53 -0
  151. package/vnet/Firewall.js +136 -0
  152. package/vnet/FirewallPolicies/FirewallPolicyBuilder.d.ts +18 -0
  153. package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +91 -0
  154. package/vnet/FirewallPolicies/commonPolicies.d.ts +10 -0
  155. package/vnet/FirewallPolicies/commonPolicies.js +55 -0
  156. package/vnet/FirewallPolicies/index.d.ts +0 -0
  157. package/vnet/FirewallPolicies/index.js +2 -0
  158. package/vnet/IpAddresses.d.ts +36 -0
  159. package/vnet/IpAddresses.js +74 -0
  160. package/vnet/NetworkPeering.d.ts +21 -0
  161. package/vnet/NetworkPeering.js +85 -0
  162. package/vnet/PrivateDnsZone.d.ts +38 -0
  163. package/vnet/PrivateDnsZone.js +111 -0
  164. package/vnet/PrivateEndpoint.d.ts +43 -0
  165. package/vnet/PrivateEndpoint.js +181 -0
  166. package/vnet/RouteTable.d.ts +22 -0
  167. package/vnet/RouteTable.js +75 -0
  168. package/vnet/VirtualNetwork.d.ts +99 -0
  169. package/vnet/VirtualNetwork.js +311 -0
  170. package/vnet/VpnGateway.d.ts +18 -0
  171. package/vnet/VpnGateway.js +90 -0
  172. package/vnet/helpers.d.ts +16 -0
  173. package/vnet/helpers.js +47 -0
  174. package/vnet/index.d.ts +13 -0
  175. package/vnet/index.js +53 -0
  176. package/vnet/securityRules/SecurityRuleBuilder.d.ts +12 -0
  177. package/vnet/securityRules/SecurityRuleBuilder.js +55 -0
  178. package/vnet/securityRules/commonRules.d.ts +9 -0
  179. package/vnet/securityRules/commonRules.js +94 -0
  180. package/vnet/securityRules/index.d.ts +2 -0
  181. package/vnet/securityRules/index.js +19 -0
@@ -0,0 +1 @@
1
+ runtime: nodejs
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # drunk-pulumi-azure-components
@@ -0,0 +1,54 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import { GroupRoleOutput } from './azAd';
3
+ import { BaseComponent } from './base/BaseComponent';
4
+ import { RsGroupArgs } from './common';
5
+ import { LogsArgs } from './logs';
6
+ import * as types from './types';
7
+ import { KeyVaultArgs } from './vault';
8
+ import { DiskEncryptionSetArgs } from './vm';
9
+ type GroupRoleOutputTypes = {
10
+ admin: pulumi.Output<GroupRoleOutput>;
11
+ contributor: pulumi.Output<GroupRoleOutput>;
12
+ readOnly: pulumi.Output<GroupRoleOutput>;
13
+ };
14
+ type CommonProps = 'rsGroup' | 'groupRoles' | 'vaultInfo' | 'resourceGroupName';
15
+ export interface ResourceBuilderArgs extends Omit<RsGroupArgs, CommonProps> {
16
+ groupRoles?: {
17
+ createWithName?: string;
18
+ } | GroupRoleOutputTypes;
19
+ vault?: Omit<KeyVaultArgs, CommonProps>;
20
+ logs?: Omit<LogsArgs, CommonProps>;
21
+ diskEncryption?: Omit<DiskEncryptionSetArgs, CommonProps>;
22
+ enableDefaultUAssignId?: boolean;
23
+ }
24
+ export declare class ResourceBuilder extends BaseComponent<ResourceBuilderArgs> {
25
+ readonly rsGroup: types.ResourceGroupOutputs;
26
+ readonly vaultInfo?: types.ResourceOutputs;
27
+ readonly groupRoles?: GroupRoleOutputTypes;
28
+ readonly defaultUAssignedId?: types.UserAssignedIdentityOutputs;
29
+ readonly logs?: types.LogsOutputs;
30
+ readonly diskEncryptionSet?: types.ResourceOutputs;
31
+ constructor(name: string, args: ResourceBuilderArgs, opts?: pulumi.ComponentResourceOptions);
32
+ getOutputs(): {
33
+ groupRoles: GroupRoleOutputTypes | undefined;
34
+ rsGroup: {
35
+ resourceGroupName: pulumi.Output<string>;
36
+ location?: pulumi.Output<string> | undefined;
37
+ };
38
+ vaultInfo: {
39
+ resourceName: pulumi.Output<string>;
40
+ id: pulumi.Output<string>;
41
+ } | undefined;
42
+ defaultUAssignedId: {
43
+ id: pulumi.Output<string>;
44
+ clientId: pulumi.Output<string>;
45
+ principalId: pulumi.Output<string>;
46
+ } | undefined;
47
+ logs: types.LogsOutputs | undefined;
48
+ diskEncryptionSet: {
49
+ resourceName: pulumi.Output<string>;
50
+ id: pulumi.Output<string>;
51
+ } | undefined;
52
+ };
53
+ }
54
+ export {};
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResourceBuilder = void 0;
4
+ const azAd_1 = require("./azAd");
5
+ const BaseComponent_1 = require("./base/BaseComponent");
6
+ const helpers_1 = require("./base/helpers");
7
+ const common_1 = require("./common");
8
+ const logs_1 = require("./logs");
9
+ const vault_1 = require("./vault");
10
+ const vm_1 = require("./vm");
11
+ class ResourceBuilder extends BaseComponent_1.BaseComponent {
12
+ rsGroup;
13
+ vaultInfo;
14
+ groupRoles;
15
+ defaultUAssignedId;
16
+ logs;
17
+ diskEncryptionSet;
18
+ constructor(name, args, opts) {
19
+ super((0, helpers_1.getComponentResourceType)('ResourceBuilder'), name, args, opts);
20
+ const { groupRoles, vault, enableDefaultUAssignId, logs, diskEncryption, ...props } = args;
21
+ if (groupRoles) {
22
+ if ('createWithName' in groupRoles) {
23
+ this.groupRoles = new azAd_1.GroupRole(groupRoles.createWithName, {}, { dependsOn: opts?.dependsOn, parent: this }).getOutputs();
24
+ }
25
+ else
26
+ this.groupRoles = groupRoles;
27
+ }
28
+ const group = new common_1.RsGroup(name, { ...props, groupRoles: this.groupRoles }, { dependsOn: opts?.dependsOn, parent: this });
29
+ this.rsGroup = group.getOutputs();
30
+ if (vault) {
31
+ this.vaultInfo = new vault_1.KeyVault(name, { ...vault, rsGroup: this.rsGroup, groupRoles: this.groupRoles }, { dependsOn: group, parent: this }).getOutputs();
32
+ }
33
+ if (enableDefaultUAssignId) {
34
+ this.defaultUAssignedId = new azAd_1.UserAssignedIdentity(name, {
35
+ rsGroup: this.rsGroup,
36
+ vaultInfo: this.vaultInfo,
37
+ memberof: this.groupRoles ? [this.groupRoles.readOnly] : undefined,
38
+ }, { dependsOn: group, parent: this }).getOutputs();
39
+ }
40
+ if (logs) {
41
+ this.logs = new logs_1.Logs(name, {
42
+ ...logs,
43
+ rsGroup: this.rsGroup,
44
+ vaultInfo: this.vaultInfo,
45
+ groupRoles: this.groupRoles,
46
+ }, { dependsOn: group, parent: this }).getOutputs();
47
+ }
48
+ if (diskEncryption) {
49
+ this.diskEncryptionSet = new vm_1.DiskEncryptionSet(name, {
50
+ ...diskEncryption,
51
+ rsGroup: this.rsGroup,
52
+ encryptionType: 'EncryptionAtRestWithPlatformAndCustomerKeys',
53
+ defaultUAssignedId: this.defaultUAssignedId,
54
+ vaultInfo: this.vaultInfo,
55
+ groupRoles: this.groupRoles,
56
+ }, { dependsOn: group, parent: this }).getOutputs();
57
+ }
58
+ }
59
+ getOutputs() {
60
+ return {
61
+ groupRoles: this.groupRoles,
62
+ rsGroup: this.rsGroup,
63
+ vaultInfo: this.vaultInfo,
64
+ defaultUAssignedId: this.defaultUAssignedId,
65
+ logs: this.logs,
66
+ diskEncryptionSet: this.diskEncryptionSet,
67
+ };
68
+ }
69
+ }
70
+ exports.ResourceBuilder = ResourceBuilder;
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Jlc291cmNlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBMEU7QUFDMUUsd0RBQXFEO0FBQ3JELDRDQUEwRDtBQUMxRCxxQ0FBZ0Q7QUFDaEQsaUNBQXdDO0FBRXhDLG1DQUFpRDtBQUNqRCw2QkFBZ0U7QUFrQmhFLE1BQWEsZUFBZ0IsU0FBUSw2QkFBa0M7SUFDckQsT0FBTyxDQUE2QjtJQUNwQyxTQUFTLENBQXlCO0lBQ2xDLFVBQVUsQ0FBd0I7SUFDbEMsa0JBQWtCLENBQXFDO0lBQ3ZELElBQUksQ0FBcUI7SUFDekIsaUJBQWlCLENBQXlCO0lBRTFELFlBQVksSUFBWSxFQUFFLElBQXlCLEVBQUUsSUFBc0M7UUFDekYsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFM0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksZ0JBQWdCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBUyxDQUM3QixVQUFVLENBQUMsY0FBYyxFQUN6QixFQUFFLEVBQ0YsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzdDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakIsQ0FBQzs7Z0JBQU0sSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFrQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLGdCQUFPLENBQ3ZCLElBQUksRUFDSixFQUFF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
@@ -0,0 +1,55 @@
1
+ import * as ccs from '@pulumi/azure-native/containerservice';
2
+ import * as inputs from '@pulumi/azure-native/types/input';
3
+ import * as pulumi from '@pulumi/pulumi';
4
+ import { BaseResourceComponent, CommonBaseArgs } from '../base';
5
+ import * as types from '../types';
6
+ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEnabler, types.WithGroupRolesArgs, types.WithUserAssignedIdentity, Pick<ccs.ManagedClusterArgs, 'dnsPrefix' | 'supportPlan' | 'autoScalerProfile' | 'autoUpgradeProfile' | 'disableLocalAccounts' | 'storageProfile'> {
7
+ sku: ccs.ManagedClusterSKUTier;
8
+ agentPoolProfiles: pulumi.Input<inputs.containerservice.ManagedClusterAgentPoolProfileArgs & {
9
+ vmSize: pulumi.Input<string>;
10
+ vnetSubnetID: pulumi.Input<string>;
11
+ }>[];
12
+ attachToAcr?: types.ResourceInputs;
13
+ features: {
14
+ enablePrivateCluster: boolean;
15
+ enablePrivateClusterPublicFQDN?: boolean;
16
+ enableVerticalPodAutoscaler?: boolean;
17
+ /** KEDA (Kubernetes Event-driven Autoscaling) settings for the workload auto-scaler profile. */
18
+ enableKeda?: boolean;
19
+ enableWorkloadIdentity?: boolean;
20
+ enablePodIdentity?: boolean;
21
+ };
22
+ addonProfiles?: {
23
+ enableAzureKeyVault?: boolean;
24
+ };
25
+ network?: Omit<inputs.containerservice.ContainerServiceNetworkProfileArgs, 'networkMode' | 'networkPolicy' | 'networkPlugin' | 'loadBalancerSku' | 'loadBalancerProfile'> & {
26
+ outboundType?: ccs.OutboundType;
27
+ loadBalancerProfile?: inputs.containerservice.ManagedClusterLoadBalancerProfileArgs & {
28
+ backendPoolType?: ccs.BackendPoolType;
29
+ };
30
+ /** Link the private DNS of AKS to these VNets */
31
+ extraPrivateDnsVnets?: types.ResourceInputs[];
32
+ authorizedIPRanges?: pulumi.Input<string>[];
33
+ virtualHostSubnetName?: pulumi.Input<string>;
34
+ };
35
+ maintenance?: Pick<ccs.MaintenanceConfigurationArgs, 'timeInWeek' | 'notAllowedTime'>;
36
+ logWorkspace?: types.ResourceInputs & {
37
+ defenderEnabled?: boolean;
38
+ };
39
+ }
40
+ export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs> {
41
+ readonly id: pulumi.Output<string>;
42
+ readonly resourceName: pulumi.Output<string>;
43
+ constructor(name: string, args: AzKubernetesArgs, opts?: pulumi.ComponentResourceOptions);
44
+ getOutputs(): {
45
+ id: pulumi.Output<string>;
46
+ resourceName: pulumi.Output<string>;
47
+ };
48
+ private createIdentity;
49
+ private createUserNameAndSshKeys;
50
+ private createDiskEncryptionSet;
51
+ private createCluster;
52
+ private createMaintenance;
53
+ private assignPermission;
54
+ private addAksCredentialToVault;
55
+ }
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AzKubernetes = void 0;
37
+ const ccs = __importStar(require("@pulumi/azure-native/containerservice"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const azAd_1 = require("../azAd");
40
+ const base_1 = require("../base");
41
+ const common_1 = require("../common");
42
+ const helpers_1 = require("../helpers");
43
+ const vault_1 = require("../vault");
44
+ const DiskEncryptionSet_1 = require("../vm/DiskEncryptionSet");
45
+ const aksHelpers = __importStar(require("./helpers"));
46
+ class AzKubernetes extends base_1.BaseResourceComponent {
47
+ id;
48
+ resourceName;
49
+ constructor(name, args, opts) {
50
+ super('AzKubernetes', name, args, opts);
51
+ const app = this.createIdentity();
52
+ const cluster = this.createCluster(app);
53
+ this.createMaintenance(cluster);
54
+ this.assignPermission(cluster);
55
+ this.addAksCredentialToVault(cluster);
56
+ this.id = cluster.id;
57
+ this.resourceName = cluster.name;
58
+ this.registerOutputs();
59
+ }
60
+ getOutputs() {
61
+ return {
62
+ id: this.id,
63
+ resourceName: this.resourceName,
64
+ };
65
+ }
66
+ createIdentity() {
67
+ const { rsGroup, vaultInfo, groupRoles } = this.args;
68
+ return new azAd_1.AppRegistration(`${this.name}-identity`, {
69
+ enableClientSecret: true,
70
+ servicePrincipal: { enabled: true },
71
+ vaultInfo,
72
+ memberof: groupRoles ? [groupRoles.readOnly] : undefined,
73
+ roleAssignments: [
74
+ {
75
+ scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
76
+ roleName: 'Reader',
77
+ description: 'Allows AKS have read access to the resource group',
78
+ },
79
+ ],
80
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
81
+ }
82
+ createUserNameAndSshKeys() {
83
+ const { vaultInfo } = this.args;
84
+ const userName = this.createRandomString({ type: 'string', length: 8, vaultInfo }).value.apply((v) => `${this.name}-admin-${v}`.substring(0, 32));
85
+ const password = this.createPassword({ length: 50 }).value;
86
+ const ssh = new common_1.SshGenerator(`${this.name}-ssh`, {
87
+ vaultInfo,
88
+ password,
89
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
90
+ return { userName, sshPublicKey: ssh.publicKey };
91
+ }
92
+ createDiskEncryptionSet() {
93
+ const { rsGroup, enableEncryption, defaultUAssignedId, vaultInfo } = this.args;
94
+ if (!enableEncryption)
95
+ return undefined;
96
+ return new DiskEncryptionSet_1.DiskEncryptionSet(`${this.name}-disk-encryption-set`, {
97
+ rsGroup,
98
+ vaultInfo,
99
+ defaultUAssignedId,
100
+ encryptionType: 'EncryptionAtRestWithPlatformAndCustomerKeys',
101
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
102
+ }
103
+ createCluster(app) {
104
+ const { rsGroup, vaultInfo, groupRoles, defaultUAssignedId, enableEncryption, features, addonProfiles, network, logWorkspace, sku, ...props } = this.args;
105
+ const nodeResourceGroup = pulumi.interpolate `${rsGroup.resourceGroupName}-nodes`;
106
+ const login = this.createUserNameAndSshKeys();
107
+ const diskEncryptionSet = this.createDiskEncryptionSet();
108
+ return new ccs.ManagedCluster(this.name, {
109
+ ...props,
110
+ ...rsGroup,
111
+ nodeResourceGroup,
112
+ dnsPrefix: props.dnsPrefix ?? `${helpers_1.azureEnv.currentEnv}-${this.name}`,
113
+ enableRBAC: true,
114
+ aadProfile: groupRoles
115
+ ? {
116
+ enableAzureRBAC: true,
117
+ managed: true,
118
+ adminGroupObjectIDs: [groupRoles.admin.objectId],
119
+ tenantID: helpers_1.azureEnv.tenantId,
120
+ }
121
+ : undefined,
122
+ apiServerAccessProfile: {
123
+ authorizedIPRanges: features?.enablePrivateCluster ? undefined : network?.authorizedIPRanges ?? [],
124
+ disableRunCommand: true,
125
+ enablePrivateCluster: features?.enablePrivateCluster,
126
+ //TODO: to make the life simple we enable this to allows IP DNS query from public internet.
127
+ enablePrivateClusterPublicFQDN: features?.enablePrivateClusterPublicFQDN ?? true,
128
+ privateDNSZone: features?.enablePrivateCluster ? 'system' : undefined,
129
+ //privateDNSZone: privateDnsZone?.id,
130
+ },
131
+ addonProfiles: {
132
+ azureKeyvaultSecretsProvider: {
133
+ config: addonProfiles?.enableAzureKeyVault
134
+ ? {
135
+ enableSecretRotation: 'true',
136
+ }
137
+ : undefined,
138
+ enabled: Boolean(addonProfiles?.enableAzureKeyVault),
139
+ },
140
+ azurePolicy: { enabled: true },
141
+ kubeDashboard: { enabled: false },
142
+ httpApplicationRouting: { enabled: false },
143
+ aciConnectorLinux: {
144
+ enabled: Boolean(network?.virtualHostSubnetName),
145
+ config: network?.virtualHostSubnetName ? { SubnetName: network.virtualHostSubnetName } : undefined,
146
+ },
147
+ // ingressApplicationGateway: {
148
+ // enabled: Boolean(addon.applicationGateway),
149
+ // config: addon.applicationGateway
150
+ // ? {
151
+ // gatewayName: `${name}-gateway`,
152
+ // subnetId: addon.applicationGateway.gatewaySubnetId,
153
+ // }
154
+ // : undefined,
155
+ // },
156
+ omsAgent: {
157
+ enabled: Boolean(logWorkspace?.id),
158
+ config: logWorkspace?.id
159
+ ? {
160
+ logAnalyticsWorkspaceResourceID: logWorkspace.id,
161
+ }
162
+ : undefined,
163
+ },
164
+ },
165
+ sku: {
166
+ name: ccs.ManagedClusterSKUName.Base,
167
+ tier: sku,
168
+ },
169
+ linuxProfile: {
170
+ adminUsername: login.userName,
171
+ ssh: { publicKeys: [{ keyData: login.sshPublicKey }] },
172
+ },
173
+ windowsProfile: undefined,
174
+ workloadAutoScalerProfile: {
175
+ verticalPodAutoscaler: {
176
+ enabled: features?.enableVerticalPodAutoscaler || false,
177
+ },
178
+ keda: { enabled: features?.enableKeda || false },
179
+ },
180
+ //azureMonitorProfile: { metrics: { enabled } },
181
+ //Refer here for details https://learn.microsoft.com/en-us/azure/aks/use-managed-identity
182
+ //enablePodSecurityPolicy: true,
183
+ diskEncryptionSetID: diskEncryptionSet?.id,
184
+ servicePrincipalProfile: {
185
+ clientId: app.clientId,
186
+ secret: app.clientSecret,
187
+ },
188
+ oidcIssuerProfile: { enabled: Boolean(features?.enableWorkloadIdentity) },
189
+ securityProfile: {
190
+ defender: logWorkspace?.defenderEnabled
191
+ ? {
192
+ logAnalyticsWorkspaceResourceId: logWorkspace.id,
193
+ securityMonitoring: { enabled: true },
194
+ }
195
+ : undefined,
196
+ imageCleaner: { enabled: true, intervalHours: 24 },
197
+ workloadIdentity: {
198
+ enabled: Boolean(features?.enableWorkloadIdentity),
199
+ },
200
+ },
201
+ podIdentityProfile: features?.enablePodIdentity
202
+ ? {
203
+ enabled: features.enablePodIdentity,
204
+ //Not allow pod to use kublet command
205
+ allowNetworkPluginKubenet: false,
206
+ }
207
+ : undefined,
208
+ identity: {
209
+ type: defaultUAssignedId ? ccs.ResourceIdentityType.UserAssigned : ccs.ResourceIdentityType.SystemAssigned,
210
+ userAssignedIdentities: defaultUAssignedId ? [defaultUAssignedId.id] : undefined,
211
+ },
212
+ networkProfile: {
213
+ ...network,
214
+ networkMode: ccs.NetworkMode.Transparent,
215
+ networkPolicy: ccs.NetworkPolicy.Azure,
216
+ networkPlugin: ccs.NetworkPlugin.Azure,
217
+ loadBalancerSku: 'Standard',
218
+ outboundType: network?.outboundType ?? ccs.OutboundType.UserDefinedRouting,
219
+ },
220
+ }, {
221
+ ...this.opts,
222
+ dependsOn: app,
223
+ parent: this,
224
+ });
225
+ }
226
+ createMaintenance(aks) {
227
+ const { rsGroup, maintenance } = this.args;
228
+ if (!maintenance)
229
+ return undefined;
230
+ return new ccs.MaintenanceConfiguration(`${this.name}-MaintenanceConfiguration`, {
231
+ ...rsGroup,
232
+ ...maintenance,
233
+ configName: 'default',
234
+ resourceName: aks.name,
235
+ timeInWeek: maintenance.timeInWeek ?? [
236
+ {
237
+ day: ccs.WeekDay.Sunday,
238
+ hourSlots: [0, 23],
239
+ },
240
+ ],
241
+ }, { dependsOn: aks, deleteBeforeReplace: true });
242
+ }
243
+ assignPermission(aks) {
244
+ const { rsGroup, attachToAcr } = this.args;
245
+ pulumi.all([aks.identity, aks.identityProfile]).apply(([identity, identityProfile]) => {
246
+ if (identityProfile?.kubeletIdentity) {
247
+ this.addIdentityToRole('contributor', { principalId: identityProfile.kubeletIdentity.objectId });
248
+ if (attachToAcr) {
249
+ new azAd_1.RoleAssignment(`${this.name}-aks-acr`, {
250
+ principalId: identityProfile.kubeletIdentity.objectId,
251
+ principalType: 'ServicePrincipal',
252
+ roleName: 'acr-pull',
253
+ scope: attachToAcr.id,
254
+ }, { dependsOn: aks, parent: this });
255
+ }
256
+ }
257
+ if (identity) {
258
+ new azAd_1.RoleAssignment(`${this.name}-aks-identity`, {
259
+ principalId: identity.principalId,
260
+ principalType: 'ServicePrincipal',
261
+ roleName: 'Contributor',
262
+ scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
263
+ }, { dependsOn: aks, parent: this });
264
+ }
265
+ });
266
+ }
267
+ addAksCredentialToVault(aks) {
268
+ const { rsGroup, disableLocalAccounts, vaultInfo } = this.args;
269
+ if (!vaultInfo)
270
+ return undefined;
271
+ return pulumi.all([aks.name, rsGroup.resourceGroupName, disableLocalAccounts]).apply(([name, rgName, disabled]) => {
272
+ if (!name)
273
+ return;
274
+ const credential = aksHelpers.getAksConfig({
275
+ resourceName: name,
276
+ resourceGroupName: rgName,
277
+ disableLocalAccounts: disabled,
278
+ });
279
+ return new vault_1.VaultSecret(`${this.name}-credential`, {
280
+ vaultInfo,
281
+ value: credential,
282
+ contentType: `AzKubernetes ${this.name} aks config`,
283
+ }, { dependsOn: aks, parent: this, retainOnDelete: true });
284
+ });
285
+ }
286
+ }
287
+ exports.AzKubernetes = AzKubernetes;
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpLdWJlcm5ldGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Frcy9Bekt1YmVybmV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBRTdELHVEQUF5QztBQUN6QyxrQ0FBMEQ7QUFDMUQsa0NBQWdFO0FBQ2hFLHNDQUF5QztBQUN6Qyx3Q0FBaUQ7QUFFakQsb0NBQXVDO0FBQ3ZDLCtEQUE0RDtBQUM1RCxzREFBd0M7QUFxRHhDLE1BQWEsWUFBYSxTQUFRLDRCQUF1QztJQUN2RCxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBc0IsRUFBRSxJQUFzQztRQUN0RixLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUVqQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFD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
@@ -0,0 +1,19 @@
1
+ import * as registry from '@pulumi/azure-native/containerregistry';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseResourceComponent, CommonBaseArgs } from '../base';
4
+ import * as types from '../types';
5
+ export interface ContainerRegistryArgs extends CommonBaseArgs, types.WithEncryptionEnabler, types.WithGroupRolesArgs, types.WithUserAssignedIdentity, Pick<registry.RegistryArgs, 'dataEndpointEnabled' | 'zoneRedundancy'> {
6
+ sku: registry.SkuName;
7
+ retentionDaysPolicy?: number;
8
+ network?: Omit<types.NetworkArgs, 'vnetRules'>;
9
+ }
10
+ export declare class ContainerRegistry extends BaseResourceComponent<ContainerRegistryArgs> {
11
+ readonly id: pulumi.Output<string>;
12
+ readonly resourceName: pulumi.Output<string>;
13
+ constructor(name: string, args: ContainerRegistryArgs, opts?: pulumi.ComponentResourceOptions);
14
+ getOutputs(): {
15
+ id: pulumi.Output<string>;
16
+ resourceName: pulumi.Output<string>;
17
+ };
18
+ private createPrivateLink;
19
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ContainerRegistry = void 0;
37
+ const registry = __importStar(require("@pulumi/azure-native/containerregistry"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const base_1 = require("../base");
40
+ const PrivateEndpoint_1 = require("../vnet/PrivateEndpoint");
41
+ class ContainerRegistry extends base_1.BaseResourceComponent {
42
+ id;
43
+ resourceName;
44
+ constructor(name, args, opts) {
45
+ super('ContainerRegistry', name, args, opts);
46
+ const { rsGroup, enableEncryption, groupRoles, defaultUAssignedId, retentionDaysPolicy, sku, network, ...props } = args;
47
+ const encryptionKey = enableEncryption ? this.getEncryptionKey() : undefined;
48
+ const acr = new registry.Registry(name, {
49
+ ...props,
50
+ ...rsGroup,
51
+ sku: { name: sku },
52
+ adminUserEnabled: false,
53
+ anonymousPullEnabled: false,
54
+ //This is for encryption
55
+ identity: {
56
+ type: defaultUAssignedId
57
+ ? registry.ResourceIdentityType.SystemAssigned_UserAssigned
58
+ : registry.ResourceIdentityType.SystemAssigned,
59
+ userAssignedIdentities: defaultUAssignedId
60
+ ? pulumi.output(defaultUAssignedId.id).apply((id) => ({ [id]: defaultUAssignedId }))
61
+ : undefined,
62
+ },
63
+ encryption: sku === 'Premium' && encryptionKey && defaultUAssignedId
64
+ ? {
65
+ keyVaultProperties: {
66
+ identity: defaultUAssignedId.clientId,
67
+ keyIdentifier: encryptionKey.urlWithoutVersion,
68
+ },
69
+ }
70
+ : undefined,
71
+ policies: sku === 'Premium'
72
+ ? {
73
+ exportPolicy: {
74
+ status: registry.ExportPolicyStatus.Disabled,
75
+ },
76
+ quarantinePolicy: { status: registry.PolicyStatus.Enabled },
77
+ retentionPolicy: {
78
+ days: retentionDaysPolicy ?? 90,
79
+ status: registry.PolicyStatus.Enabled,
80
+ },
81
+ trustPolicy: {
82
+ status: registry.PolicyStatus.Enabled,
83
+ type: registry.TrustPolicyType.Notary,
84
+ },
85
+ }
86
+ : undefined,
87
+ publicNetworkAccess: network?.publicNetworkAccess ? 'Enabled' : network?.privateLink ? 'Disabled' : 'Enabled',
88
+ networkRuleBypassOptions: network?.bypass,
89
+ networkRuleSet: sku === 'Premium' && network
90
+ ? {
91
+ defaultAction: network.defaultAction ?? registry.DefaultAction.Allow,
92
+ ipRules: network.ipRules
93
+ ? pulumi.output(network.ipRules).apply((ips) => ips.map((ip) => ({
94
+ iPAddressOrRange: ip,
95
+ })))
96
+ : undefined,
97
+ }
98
+ : undefined,
99
+ }, { ...opts, parent: this });
100
+ this.createPrivateLink(acr);
101
+ this.id = acr.id;
102
+ this.resourceName = acr.name;
103
+ this.registerOutputs();
104
+ }
105
+ getOutputs() {
106
+ return {
107
+ id: this.id,
108
+ resourceName: this.resourceName,
109
+ };
110
+ }
111
+ createPrivateLink(acr) {
112
+ const { rsGroup, network } = this.args;
113
+ if (!network?.privateLink)
114
+ return;
115
+ return new PrivateEndpoint_1.PrivateEndpoint(this.name, { ...network.privateLink, resourceInfo: acr, rsGroup, type: 'azurecr' }, { dependsOn: acr, parent: this });
116
+ }
117
+ }
118
+ exports.ContainerRegistry = ContainerRegistry;
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGFpbmVyUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWtzL0NvbnRhaW5lclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlGQUFtRTtBQUNuRSx1REFBeUM7QUFDekMsa0NBQWdFO0FBRWhFLDZEQUEwRDtBQWExRCxNQUFhLGlCQUFrQixTQUFRLDRCQUE0QztJQUNqRSxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBMkIsRUFBRSxJQUFzQztRQUMzRixLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3QyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQzlHLElBQUksQ0FBQztRQUNQLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTdFLE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FDL0IsSUFBSSxFQUNKO1lBQ0UsR0FBRyxLQUFLO1lBQ1IsR0FBRyxPQUFPO1lBRVYsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUNsQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLG9CQUFvQixFQUFFLEtBQUs7WUFFM0Isd0JBQXdCO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsa0JBQWtCO29CQUN0QixDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQjtvQkFDM0QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0Is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
@@ -0,0 +1,6 @@
1
+ export declare const aksRequiredOutboundPorts: string[];
2
+ export declare const getAksConfig: ({ resourceName, resourceGroupName, disableLocalAccounts, }: {
3
+ resourceName: string;
4
+ resourceGroupName: string;
5
+ disableLocalAccounts?: boolean;
6
+ }) => Promise<string>;