@drunk-pulumi/azure-components 1.0.4 → 1.1.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.
Files changed (70) hide show
  1. package/ResourceBuilder.d.ts +5 -5
  2. package/ResourceBuilder.js +9 -8
  3. package/aks/AzKubernetes.d.ts +35 -12
  4. package/aks/AzKubernetes.js +216 -124
  5. package/aks/ContainerRegistry.js +2 -1
  6. package/aks/helpers.d.ts +6 -0
  7. package/aks/helpers.js +26 -5
  8. package/aks/types.d.ts +245 -0
  9. package/aks/types.js +3 -0
  10. package/apim/Apim.d.ts +6 -3
  11. package/apim/Apim.js +18 -16
  12. package/app/AppContainer.d.ts +91 -0
  13. package/app/AppContainer.js +141 -0
  14. package/app/AppContainerEnv.d.ts +68 -0
  15. package/app/AppContainerEnv.js +142 -0
  16. package/app/index.d.ts +2 -0
  17. package/app/index.js +3 -1
  18. package/azAd/AppRegistration.d.ts +9 -12
  19. package/azAd/AppRegistration.js +15 -12
  20. package/azAd/CloudflareAzIdentity.d.ts +10 -0
  21. package/azAd/CloudflareAzIdentity.js +61 -0
  22. package/azAd/GroupRole.d.ts +1 -1
  23. package/azAd/GroupRole.js +4 -5
  24. package/azAd/UserAssignedIdentity.js +6 -6
  25. package/azAd/helpers/rsRoleDefinition.js +2 -7
  26. package/azAd/index.d.ts +1 -0
  27. package/azAd/index.js +2 -1
  28. package/base/BaseResourceComponent.d.ts +1 -1
  29. package/base/BaseResourceComponent.js +5 -5
  30. package/base/helpers.js +2 -2
  31. package/database/Redis.d.ts +1 -4
  32. package/database/Redis.js +12 -4
  33. package/database/helpers.js +3 -3
  34. package/helpers/autoTags.js +4 -1
  35. package/helpers/index.d.ts +1 -0
  36. package/helpers/index.js +3 -2
  37. package/helpers/stackEnv.d.ts +2 -1
  38. package/helpers/stackEnv.js +4 -3
  39. package/helpers/zoneHelper.d.ts +24 -0
  40. package/helpers/zoneHelper.js +40 -0
  41. package/logs/Logs.d.ts +6 -16
  42. package/logs/Logs.js +4 -5
  43. package/package.json +7 -6
  44. package/services/ServiceBus.js +2 -1
  45. package/storage/StorageAccount.d.ts +4 -7
  46. package/storage/StorageAccount.js +16 -13
  47. package/types.d.ts +14 -3
  48. package/vault/helpers.d.ts +7 -4
  49. package/vault/helpers.js +11 -4
  50. package/vm/DiskEncryptionSet.js +3 -1
  51. package/vm/VirtualMachine.d.ts +5 -0
  52. package/vm/VirtualMachine.js +156 -41
  53. package/vnet/Basion.js +3 -1
  54. package/vnet/Firewall.d.ts +8 -13
  55. package/vnet/Firewall.js +8 -6
  56. package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +24 -6
  57. package/vnet/FirewallPolicies/commonPolicies.d.ts +29 -2
  58. package/vnet/FirewallPolicies/commonPolicies.js +466 -20
  59. package/vnet/FirewallPolicies/index.d.ts +2 -0
  60. package/vnet/FirewallPolicies/index.js +18 -1
  61. package/vnet/IpAddresses.d.ts +1 -1
  62. package/vnet/IpAddresses.js +3 -2
  63. package/vnet/PrivateDnsZone.d.ts +4 -4
  64. package/vnet/PrivateDnsZone.js +17 -17
  65. package/vnet/PrivateEndpoint.d.ts +2 -5
  66. package/vnet/PrivateEndpoint.js +6 -1
  67. package/vnet/VirtualNetwork.d.ts +11 -5
  68. package/vnet/VirtualNetwork.js +31 -9
  69. package/vnet/helpers.d.ts +2 -0
  70. package/vnet/helpers.js +40 -2
@@ -39,28 +39,69 @@ const pulumi = __importStar(require("@pulumi/pulumi"));
39
39
  const azAd_1 = require("../azAd");
40
40
  const base_1 = require("../base");
41
41
  const helpers_1 = require("../helpers");
42
- const DiskEncryptionSet_1 = require("../vm/DiskEncryptionSet");
42
+ const vm_1 = require("../vm");
43
43
  const common_1 = require("../common");
44
+ const helpers_2 = require("./helpers");
45
+ const helpers_3 = require("../vnet/helpers");
46
+ const isLegacyMaintenanceArgs = (maintenance) => {
47
+ if (!maintenance)
48
+ return false;
49
+ return 'timeInWeek' in maintenance || 'notAllowedTime' in maintenance;
50
+ };
51
+ const getDefaultMaintenanceArgs = (maintenance) => {
52
+ if (!maintenance)
53
+ return undefined;
54
+ if (isLegacyMaintenanceArgs(maintenance))
55
+ return maintenance;
56
+ return maintenance.default;
57
+ };
58
+ const getAutoUpgradeWindow = (maintenance) => {
59
+ if (!maintenance || isLegacyMaintenanceArgs(maintenance))
60
+ return undefined;
61
+ return maintenance.autoUpgrade;
62
+ };
63
+ const getNodeOSWindow = (maintenance) => {
64
+ if (!maintenance || isLegacyMaintenanceArgs(maintenance))
65
+ return undefined;
66
+ return maintenance.nodeOS;
67
+ };
44
68
  class AzKubernetes extends base_1.BaseResourceComponent {
45
69
  id;
46
70
  resourceName;
47
71
  namespaces;
48
72
  privateDnsZone;
73
+ privateIpAddress;
74
+ azAppIdentity;
75
+ keyVaultSecretProviderIdentity;
76
+ kubeletIdentity;
77
+ systemIdentityId;
49
78
  constructor(name, args, opts) {
50
79
  super('AzKubernetes', name, args, opts);
51
80
  const app = this.createIdentity();
52
81
  const cluster = this.createCluster(app);
53
82
  this.createExtraAgentPoolProfiles(cluster);
54
83
  this.createMaintenance(cluster);
55
- this.assignPermission(cluster);
56
84
  const nss = this.createNameSpaces(cluster);
57
- this.privateDnsZone = this.getPrivateDNSZone(cluster);
58
- this.id = cluster.id;
59
- this.resourceName = cluster.name;
60
85
  this.namespaces = helpers_1.rsHelpers.dictReduce(nss, (n, ns) => ({
61
86
  id: ns.id,
62
87
  resourceName: ns.name.apply((n) => n),
63
88
  }));
89
+ const privateDns = this.getPrivateDNSZone(cluster);
90
+ this.privateDnsZone = privateDns?.privateZone;
91
+ this.privateIpAddress = privateDns?.privateIpAddress;
92
+ this.azAppIdentity = app.getOutputs();
93
+ this.id = cluster.id;
94
+ this.resourceName = cluster.name;
95
+ this.systemIdentityId = cluster.identity.apply((id) => id.principalId);
96
+ this.keyVaultSecretProviderIdentity = args.features.enableAzureKeyVault
97
+ ? cluster.addonProfiles.apply((aa) => ({
98
+ id: aa.azureKeyvaultSecretsProvider.identity.resourceId,
99
+ clientId: aa.azureKeyvaultSecretsProvider.identity.clientId,
100
+ objectId: aa.azureKeyvaultSecretsProvider.identity.objectId,
101
+ }))
102
+ : undefined;
103
+ this.kubeletIdentity = this.getExtraAksOutputs(cluster);
104
+ this.assignPermission(cluster);
64
105
  this.registerOutputs();
65
106
  }
66
107
  getOutputs() {
@@ -69,6 +110,11 @@ class AzKubernetes extends base_1.BaseResourceComponent {
69
110
  resourceName: this.resourceName,
70
111
  namespaces: this.namespaces,
71
112
  privateDnsZone: this.privateDnsZone,
113
+ privateIpAddress: this.privateIpAddress,
114
+ azAppIdentity: this.azAppIdentity,
115
+ keyVaultSecretProviderIdentity: this.keyVaultSecretProviderIdentity,
116
+ kubeletIdentity: this.kubeletIdentity,
117
+ systemIdentityId: this.systemIdentityId,
72
118
  };
73
119
  }
74
120
  createIdentity() {
@@ -96,30 +142,33 @@ class AzKubernetes extends base_1.BaseResourceComponent {
96
142
  return { userName, sshPublicKey: ssh.publicKey };
97
143
  }
98
144
  createDiskEncryptionSet() {
99
- const { rsGroup, enableEncryption, diskEncryptionSet, defaultUAssignedId, vaultInfo } = this.args;
145
+ const { rsGroup, enableEncryption, diskEncryptionSet, groupRoles, defaultUAssignedId, vaultInfo } = this.args;
100
146
  if (!enableEncryption)
101
147
  return undefined;
102
148
  if (diskEncryptionSet)
103
149
  return diskEncryptionSet;
104
- return new DiskEncryptionSet_1.DiskEncryptionSet(`${this.name}-disk-encryption-set`, {
150
+ return new vm_1.DiskEncryptionSet(`${this.name}-disk-encryption-set`, {
105
151
  rsGroup,
106
152
  vaultInfo,
107
153
  defaultUAssignedId,
154
+ groupRoles,
108
155
  encryptionType: 'EncryptionAtRestWithPlatformAndCustomerKeys',
109
156
  }, { dependsOn: this.opts?.dependsOn, parent: this }).getOutputs();
110
157
  }
111
- createCluster(app) {
112
- const { rsGroup, vaultInfo, groupRoles, defaultUAssignedId, enableEncryption, nodeResourceGroup, features, addonProfiles, network, logWorkspace, sku, autoScalerProfile, extraAgentPoolProfiles, ...props } = this.args;
158
+ createCluster(appID) {
159
+ const { rsGroup, vaultInfo, groupRoles, defaultUAssignedId, enableEncryption, nodeResourceGroup, features, network, logWorkspace, sku, autoScalerProfile, extraAgentPoolProfiles, agentPoolProfiles, attachToAcr, maintenance, namespaces, ...props } = this.args;
113
160
  const nodeRg = nodeResourceGroup ?? pulumi.interpolate `${rsGroup.resourceGroupName}-nodes`;
114
161
  const login = this.createUserNameAndSshKeys();
115
162
  const diskEncryptionSet = this.createDiskEncryptionSet();
163
+ // Add default zones for PRD environment to agent pools
164
+ const poolsWithZones = agentPoolProfiles.map((pool) => ({
165
+ ...pool,
166
+ availabilityZones: helpers_1.zoneHelper.getDefaultZones(pool.availabilityZones),
167
+ }));
116
168
  return new ccs.ManagedCluster(this.name, {
117
169
  ...props,
118
170
  ...rsGroup,
119
- nodeResourceGroup: nodeRg,
120
- dnsPrefix: props.dnsPrefix ?? `${helpers_1.azureEnv.currentEnv}-${this.name}`,
121
- enableRBAC: true,
122
- disableLocalAccounts: true,
171
+ agentPoolProfiles: poolsWithZones,
123
172
  aadProfile: groupRoles
124
173
  ? {
125
174
  enableAzureRBAC: true,
@@ -128,25 +177,16 @@ class AzKubernetes extends base_1.BaseResourceComponent {
128
177
  tenantID: helpers_1.azureEnv.tenantId,
129
178
  }
130
179
  : undefined,
131
- apiServerAccessProfile: {
132
- authorizedIPRanges: features?.enablePrivateCluster ? undefined : (network?.authorizedIPRanges ?? []),
133
- disableRunCommand: true,
134
- enablePrivateCluster: features?.enablePrivateCluster,
135
- //TODO: to make the life simple we enable this to allows IP DNS query from public internet.
136
- enablePrivateClusterPublicFQDN: features?.enablePrivateClusterPublicFQDN ?? true,
137
- privateDNSZone: features?.enablePrivateCluster ? 'system' : undefined,
138
- //privateDNSZone: privateDnsZone?.id,
139
- },
140
180
  addonProfiles: {
141
181
  azureKeyvaultSecretsProvider: {
142
- config: addonProfiles?.enableAzureKeyVault
182
+ config: features?.enableAzureKeyVault
143
183
  ? {
144
184
  enableSecretRotation: 'true',
145
185
  }
146
186
  : undefined,
147
- enabled: Boolean(addonProfiles?.enableAzureKeyVault),
187
+ enabled: Boolean(features?.enableAzureKeyVault),
148
188
  },
149
- azurePolicy: { enabled: true },
189
+ azurePolicy: { enabled: features?.enableAzurePolicy || false },
150
190
  kubeDashboard: { enabled: false },
151
191
  httpApplicationRouting: { enabled: false },
152
192
  aciConnectorLinux: {
@@ -171,63 +211,14 @@ class AzKubernetes extends base_1.BaseResourceComponent {
171
211
  : undefined,
172
212
  },
173
213
  },
174
- sku: {
175
- name: ccs.ManagedClusterSKUName.Base,
176
- tier: sku,
177
- },
178
- linuxProfile: {
179
- adminUsername: login.userName,
180
- ssh: { publicKeys: [{ keyData: login.sshPublicKey }] },
181
- },
182
- windowsProfile: undefined,
183
- workloadAutoScalerProfile: {
184
- verticalPodAutoscaler: {
185
- enabled: features?.enableVerticalPodAutoscaler || false,
186
- },
187
- keda: { enabled: true },
188
- },
189
- //azureMonitorProfile: { metrics: { enabled } },
190
- //Refer here for details https://learn.microsoft.com/en-us/azure/aks/use-managed-identity
191
- //enablePodSecurityPolicy: true,
192
- diskEncryptionSetID: diskEncryptionSet?.id,
193
- servicePrincipalProfile: {
194
- clientId: app.clientId,
195
- secret: app.clientSecret,
196
- },
197
- oidcIssuerProfile: { enabled: Boolean(features?.enableWorkloadIdentity) },
198
- securityProfile: {
199
- defender: logWorkspace?.defenderEnabled
200
- ? {
201
- logAnalyticsWorkspaceResourceId: logWorkspace.id,
202
- securityMonitoring: { enabled: true },
203
- }
204
- : undefined,
205
- imageCleaner: { enabled: true, intervalHours: 24 },
206
- workloadIdentity: {
207
- enabled: Boolean(features?.enableWorkloadIdentity),
208
- },
209
- },
210
- podIdentityProfile: features?.enablePodIdentity
211
- ? {
212
- enabled: features.enablePodIdentity,
213
- //Not allow pod to use kublet command
214
- allowNetworkPluginKubenet: false,
215
- }
216
- : undefined,
217
- identity: {
218
- type: defaultUAssignedId ? ccs.ResourceIdentityType.UserAssigned : ccs.ResourceIdentityType.SystemAssigned,
219
- userAssignedIdentities: defaultUAssignedId ? [defaultUAssignedId.id] : undefined,
220
- },
221
- // identityProfile: defaultUAssignedId
222
- // ? pulumi.output(defaultUAssignedId).apply((uID) => ({ [uID.id]: uID }))
223
- // : undefined,
224
- networkProfile: {
225
- ...network,
226
- networkMode: ccs.NetworkMode.Transparent,
227
- networkPolicy: network?.networkPolicy ?? ccs.NetworkPolicy.Cilium,
228
- networkPlugin: ccs.NetworkPlugin.Azure,
229
- loadBalancerSku: 'Standard',
230
- outboundType: network?.outboundType ?? ccs.OutboundType.UserDefinedRouting,
214
+ apiServerAccessProfile: {
215
+ authorizedIPRanges: features?.enablePrivateCluster ? undefined : (network?.authorizedIPRanges ?? []),
216
+ disableRunCommand: true,
217
+ enablePrivateCluster: features?.enablePrivateCluster,
218
+ //TODO: to make the life simple we enable this to allows IP DNS query from public internet.
219
+ enablePrivateClusterPublicFQDN: features?.enablePrivateClusterPublicFQDN ?? true,
220
+ privateDNSZone: features?.enablePrivateCluster ? 'system' : undefined,
221
+ //privateDNSZone: privateDnsZone?.id,
231
222
  },
232
223
  autoScalerProfile: autoScalerProfile ?? {
233
224
  balanceSimilarNodeGroups: 'false',
@@ -252,9 +243,74 @@ class AzKubernetes extends base_1.BaseResourceComponent {
252
243
  nodeOSUpgradeChannel: ccs.NodeOSUpgradeChannel.NodeImage,
253
244
  upgradeChannel: ccs.UpgradeChannel.Stable,
254
245
  },
246
+ disableLocalAccounts: true,
247
+ diskEncryptionSetID: diskEncryptionSet?.id,
248
+ dnsPrefix: props.dnsPrefix ?? `${helpers_1.azureEnv.currentEnv}-${this.name}`,
249
+ enableRBAC: true,
250
+ identity: {
251
+ type: ccs.ResourceIdentityType.SystemAssigned,
252
+ //type: defaultUAssignedId ? ccs.ResourceIdentityType.UserAssigned : ccs.ResourceIdentityType.SystemAssigned,
253
+ //userAssignedIdentities: defaultUAssignedId ? [defaultUAssignedId.id] : undefined,
254
+ },
255
+ // identityProfile: defaultUAssignedId
256
+ // ? pulumi.output(defaultUAssignedId).apply((uID) => ({ [uID.id]: uID }))
257
+ // : undefined,
258
+ linuxProfile: {
259
+ adminUsername: login.userName,
260
+ ssh: { publicKeys: [{ keyData: login.sshPublicKey }] },
261
+ },
262
+ networkProfile: {
263
+ ...network,
264
+ //networkMode: ccs.NetworkMode.Transparent,
265
+ networkPlugin: ccs.NetworkPlugin.Azure,
266
+ networkPolicy: network?.networkPolicy ?? ccs.NetworkPolicy.Cilium,
267
+ networkDataplane: network?.networkPolicy ?? ccs.NetworkDataplane.Cilium,
268
+ networkPluginMode: ccs.NetworkPluginMode.Overlay,
269
+ loadBalancerSku: 'Standard',
270
+ outboundType: network?.outboundType ?? ccs.OutboundType.UserDefinedRouting,
271
+ },
272
+ nodeResourceGroup: nodeRg,
273
+ oidcIssuerProfile: { enabled: Boolean(features?.enableWorkloadIdentity) },
274
+ podIdentityProfile: features?.enablePodIdentity
275
+ ? {
276
+ enabled: features.enablePodIdentity,
277
+ //Not allow pod to use kublet command
278
+ allowNetworkPluginKubenet: false,
279
+ }
280
+ : undefined,
281
+ securityProfile: {
282
+ defender: logWorkspace?.defenderEnabled
283
+ ? {
284
+ logAnalyticsWorkspaceResourceId: logWorkspace.id,
285
+ securityMonitoring: { enabled: true },
286
+ }
287
+ : undefined,
288
+ imageCleaner: { enabled: true, intervalHours: 24 },
289
+ workloadIdentity: {
290
+ enabled: Boolean(features?.enableWorkloadIdentity),
291
+ },
292
+ },
293
+ servicePrincipalProfile: {
294
+ clientId: appID.clientId,
295
+ secret: appID.clientSecret,
296
+ },
297
+ sku: {
298
+ name: ccs.ManagedClusterSKUName.Base,
299
+ tier: sku,
300
+ },
301
+ windowsProfile: undefined,
302
+ workloadAutoScalerProfile: {
303
+ verticalPodAutoscaler: {
304
+ enabled: features?.enableVerticalPodAutoscaler || false,
305
+ },
306
+ keda: { enabled: features?.enableKeda || false },
307
+ },
308
+ //azureMonitorProfile: { metrics: { enabled } },
309
+ //Refer here for details https://learn.microsoft.com/en-us/azure/aks/use-managed-identity
310
+ //enablePodSecurityPolicy: true,
255
311
  }, {
256
312
  ...this.opts,
257
- dependsOn: app,
313
+ dependsOn: appID,
258
314
  parent: this,
259
315
  });
260
316
  }
@@ -265,6 +321,7 @@ class AzKubernetes extends base_1.BaseResourceComponent {
265
321
  return extraAgentPoolProfiles.map((profile) => new ccs.AgentPool(`${this.name}-${profile.name}`, {
266
322
  ...rsGroup,
267
323
  ...profile,
324
+ availabilityZones: helpers_1.zoneHelper.getDefaultZones(profile.availabilityZones),
268
325
  resourceName: aks.name,
269
326
  agentPoolName: profile.name,
270
327
  }, { dependsOn: aks, deletedWith: aks, parent: this }));
@@ -282,68 +339,103 @@ class AzKubernetes extends base_1.BaseResourceComponent {
282
339
  }
283
340
  createMaintenance(aks) {
284
341
  const { rsGroup, maintenance } = this.args;
285
- return new ccs.MaintenanceConfiguration(`${this.name}-MaintenanceConfiguration`, {
342
+ const defaultMaintenanceArgs = getDefaultMaintenanceArgs(maintenance);
343
+ const autoUpgradeWindow = getAutoUpgradeWindow(maintenance) ?? this.getDefaultAutoUpgradeWindow();
344
+ const nodeOSWindow = getNodeOSWindow(maintenance) ?? this.getDefaultAutoUpgradeWindow();
345
+ const defaultMaintenance = new ccs.MaintenanceConfiguration(`${this.name}-MaintenanceConfiguration`, {
286
346
  ...rsGroup,
287
347
  configName: 'default',
288
348
  resourceName: aks.name,
289
- timeInWeek: maintenance?.timeInWeek ?? [
349
+ timeInWeek: defaultMaintenanceArgs?.timeInWeek ?? [
290
350
  {
291
351
  day: ccs.WeekDay.Sunday,
292
352
  hourSlots: [0, 23],
293
353
  },
294
354
  ],
295
- notAllowedTime: maintenance?.notAllowedTime,
355
+ notAllowedTime: defaultMaintenanceArgs?.notAllowedTime,
356
+ }, { dependsOn: aks, deletedWith: aks, deleteBeforeReplace: true, parent: this });
357
+ const autoUpgradeMaintenance = new ccs.MaintenanceConfiguration(`${this.name}-AutoUpgradeSchedule`, {
358
+ ...rsGroup,
359
+ configName: autoUpgradeWindow.configName ?? 'aksManagedAutoUpgradeSchedule',
360
+ resourceName: aks.name,
361
+ maintenanceWindow: autoUpgradeWindow,
362
+ }, { dependsOn: aks, deletedWith: aks, deleteBeforeReplace: true, parent: this });
363
+ const nodeOSMaintenance = new ccs.MaintenanceConfiguration(`${this.name}-NodeOSUpgradeSchedule`, {
364
+ ...rsGroup,
365
+ configName: nodeOSWindow.configName ?? 'aksManagedNodeOSUpgradeSchedule',
366
+ resourceName: aks.name,
367
+ maintenanceWindow: nodeOSWindow,
296
368
  }, { dependsOn: aks, deletedWith: aks, deleteBeforeReplace: true, parent: this });
369
+ return { default: defaultMaintenance, autoUpgrade: autoUpgradeMaintenance, nodeOS: nodeOSMaintenance };
370
+ }
371
+ getExtraAksOutputs(aks) {
372
+ const { rsGroup } = this.args;
373
+ const aksInfo = (0, helpers_2.getAksClusterOutput)({ resourceGroupName: rsGroup.resourceGroupName, resourceName: aks.name });
374
+ return aksInfo.properties.identityProfile.apply((p) => ({
375
+ id: p.kubeletidentity.resourceId,
376
+ clientId: p.kubeletidentity.clientId,
377
+ objectId: p.kubeletidentity.objectId,
378
+ }));
297
379
  }
298
380
  assignPermission(aks) {
299
381
  const { rsGroup, attachToAcr } = this.args;
300
- pulumi
301
- .all([aks.identity, aks.identityProfile, aks.addonProfiles, attachToAcr])
302
- .apply(([identity, identityProfile, addon, acr]) => {
303
- //User Assigned Identity
304
- //console.log(Object.values(identityProfile!));
305
- if (identityProfile?.kubeletidentity) {
306
- this.addIdentityToRole('contributor', { principalId: identityProfile.kubeletidentity.objectId });
307
- if (acr) {
308
- new azAd_1.RoleAssignment(`${this.name}-aks-acr`, {
309
- principalId: identityProfile.kubeletidentity.objectId,
310
- principalType: 'ServicePrincipal',
311
- roleName: 'AcrPull',
312
- scope: acr.id,
313
- }, { dependsOn: aks, deletedWith: aks, parent: this });
314
- }
315
- }
316
- //System Managed Identity
317
- if (identity?.principalId) {
318
- new azAd_1.RoleAssignment(`${this.name}-aks-identity`, {
319
- principalId: identity.principalId,
382
+ if (attachToAcr && this.kubeletIdentity) {
383
+ pulumi.output(this.kubeletIdentity).apply((p) => {
384
+ new azAd_1.RoleAssignment(`${this.name}-aks-acr`, {
385
+ principalId: p.objectId,
320
386
  principalType: 'ServicePrincipal',
321
- roleName: 'Contributor',
322
- scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
387
+ roleName: 'AcrPull',
388
+ scope: attachToAcr.id,
323
389
  }, { dependsOn: aks, deletedWith: aks, parent: this });
324
- }
325
- //addon
326
- if (addon?.azureKeyvaultSecretsProvider?.identity) {
327
- this.addIdentityToRole('readOnly', {
328
- principalId: addon.azureKeyvaultSecretsProvider.identity.objectId,
329
- });
330
- }
331
- });
390
+ });
391
+ }
392
+ //Allows AKS to have Contributor role on the resource group
393
+ aks.identity.apply((id) => new azAd_1.RoleAssignment(`${this.name}-aks-identity`, {
394
+ principalId: id.principalId,
395
+ principalType: 'ServicePrincipal',
396
+ roleName: 'Contributor',
397
+ scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
398
+ }, { dependsOn: aks, deletedWith: aks, parent: this }));
332
399
  }
333
400
  getPrivateDNSZone(aks) {
334
401
  const { features } = this.args;
335
402
  if (!features.enablePrivateCluster)
336
403
  return undefined;
337
404
  const rsGroup = aks.nodeResourceGroup;
338
- const zoneName = aks.privateFQDN.apply((fqdn) => {
339
- if (!fqdn)
340
- return fqdn;
341
- const firstDot = fqdn.indexOf('.');
342
- return firstDot >= 0 ? fqdn.substring(firstDot + 1) : fqdn;
405
+ const zoneNames = aks.privateFQDN.apply((fqdn) => {
406
+ const p = fqdn.split('.');
407
+ return { privateClusterName: p[0], privateZoneName: p.slice(1).join('.') };
408
+ });
409
+ const id = pulumi.interpolate `/subscriptions/${helpers_1.azureEnv.subscriptionId}/resourceGroups/${rsGroup}/providers/Microsoft.Network/privateDnsZones/${zoneNames.privateZoneName}`;
410
+ //Get private IpAddress from Private DNS Zone
411
+ const rs = (0, helpers_3.getPrivateRecordSetOutput)({
412
+ privateZoneName: zoneNames.privateZoneName,
413
+ resourceGroupName: rsGroup.apply((g) => g),
414
+ relativeRecordSetName: zoneNames.privateClusterName,
415
+ recordType: 'A',
343
416
  });
344
- const id = pulumi.interpolate `/subscriptions/${helpers_1.azureEnv.subscriptionId}/resourceGroups/${rsGroup}/providers/Microsoft.Network/privateDnsZones/${zoneName}`;
345
- return { id, resourceName: zoneName };
417
+ return {
418
+ privateZone: { id, resourceName: zoneNames.privateZoneName },
419
+ privateIpAddress: rs.aRecords.apply((ars) => (ars && ars.length > 0 ? ars[0].ipv4Address : undefined)),
420
+ };
421
+ }
422
+ getDefaultAutoUpgradeWindow() {
423
+ const tomorrow = new Date();
424
+ tomorrow.setDate(tomorrow.getDate() + 1);
425
+ const startDate = tomorrow.toISOString().split('T')[0];
426
+ return {
427
+ schedule: {
428
+ weekly: {
429
+ dayOfWeek: 'Sunday',
430
+ intervalWeeks: 1,
431
+ },
432
+ },
433
+ durationHours: 4,
434
+ utcOffset: '+08:00',
435
+ startTime: '00:00',
436
+ startDate,
437
+ };
346
438
  }
347
439
  }
348
440
  exports.AzKubernetes = AzKubernetes;
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpLdWJlcm5ldGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Frcy9Bekt1YmVybmV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBRTdELHVEQUF5QztBQUd6QyxrQ0FBMEQ7QUFDMUQsa0NBQWdFO0FBQ2hFLHdDQUFpRDtBQUVqRCwrREFBNEQ7QUFDNUQsc0NBQXlDO0FBMER6QyxNQUFhLFlBQWEsU0FBUSw0QkFBdUM7SUFDdkQsRUFBRSxDQUF3QjtJQUMxQixZQUFZLENBQXdCO0lBQ3BDLFVBQVUsQ0FBd0M7SUFDbEQsY0FBYyxDQUFvQztJQUVsRSxZQUFZLElBQVksRUFBRSxJQUFzQixFQUFFLElBQXNDO1FBQ3RGLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUVqQyxJQUFJLENB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
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpLdWJlcm5ldGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Frcy9Bekt1YmVybmV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBRTdELHVEQUF5QztBQUd6QyxrQ0FBMEQ7QUFDMUQsa0NBQWdFO0FBQ2hFLHdDQUE2RDtBQUU3RCw4QkFBMEM7QUFDMUMsc0NBQXlDO0FBQ3pDLHVDQUFnRDtBQUNoRCw2Q0FBNEQ7QUFtQjVELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxXQUF3QyxFQUF3QyxFQUFFO0lBQ2pILElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsT0FBTyxZQUFZLElBQUksV0FBVyxJQUFJLGdCQUFnQixJQUFJLFdBQVcsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHLENBQUMsV0FBd0MsRUFBcUMsRUFBRTtJQUNoSCxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25DLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDN0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxXQUF3QyxFQUF1QyxFQUFFO0lBQzdHLElBQUksQ0FBQyxXQUFXLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0UsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBd0MsRUFBdUMsRUFBRTtJQUN4RyxJQUFJLENBQUMsV0FBVyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNFLE9BQU8sV0FBVyxD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
@@ -65,6 +65,7 @@ class ContainerRegistry extends base_1.BaseResourceComponent {
65
65
  sku: { name: sku },
66
66
  adminUserEnabled: false,
67
67
  anonymousPullEnabled: false,
68
+ zoneRedundancy: sku != 'Basic' && props.zoneRedundancy ? 'Enabled' : 'Disabled',
68
69
  identity: {
69
70
  type: defaultUAssignedId
70
71
  ? registry.ResourceIdentityType.SystemAssigned_UserAssigned
@@ -119,4 +120,4 @@ class ContainerRegistry extends base_1.BaseResourceComponent {
119
120
  }
120
121
  }
121
122
  exports.ContainerRegistry = ContainerRegistry;
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGFpbmVyUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWtzL0NvbnRhaW5lclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQUN6QyxpRkFBbUU7QUFHbkUsa0NBQWdFO0FBRWhFLDZEQUEwRDtBQVkxRCxNQUFhLGlCQUFrQixTQUFRLDRCQUE0QztJQUNqRSxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBMkIsRUFBRSxJQUFzQztRQUMzRixLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pILE1BQU0sYUFBYSxHQUFHLEdBQUcsS0FBSyxTQUFTLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbEcsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3RSxPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FDMUIsa0JBQWtCLEVBQ2xCO1lBQ0UsR0FBRyxLQUFLO1lBQ1IsR0FBRyxPQUFPO1lBRVYsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUNsQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLG9CQUFvQixFQUFFLEtBQUs7WUFFM0IsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxrQkFBa0I7b0JBQ3RCLENBQUMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsMkJBQTJCO29CQUMzRCxDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLGNBQWM7Z0JBRWhELHNCQUFzQixFQUFFLGtCQUFrQjtvQkFDeEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNwRSxDQUFDLENBQUMsU0FBUzthQUNkO1lBRUQsVUFBVSxFQUNSLGFBQWEsSUFBSSxrQkFBa0I7Z0JBQ2pDLENBQUMsQ0FBQztvQkFDRSxrQkFBa0IsRUFBRTt3QkFDbEIsUUFBUSxFQUFFLGtCQUFrQixDQUFDLFFBQVE7d0JBQ3JDLGFBQWEsRUFBRSxhQUFhLENBQUMsaUJBQWlCO3FCQUMvQztpQkFDRjtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUVmLFFBQVEsRUFDTixHQUFHLEtBQUssU0FBUztnQkFDZixDQUFDLENBQUM7b0JBQ0UsWUFBWSxFQUFFO3dCQUNaLE1BQU0sRUFBRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsUUFBUTtxQkFDN0M7b0JBQ0QsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7b0JBQzNELGVBQWUsRUFBRTt3QkFDZixJQUFJLEVBQUUsbUJBQW1CLElBQUksRUFBRTt3QkFDL0IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTztxQkFDdEM7b0JBQ0QsV0FBVyxFQUFFO3dCQUNYLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU87d0JBQ3JDLElBQUksRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU07cUJBQ3RDO2lCQUNGO2dCQUNILENBQUMsQ0FBQyxTQUFTO1lBRWYsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUM3Ryx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsTUFBTTtZQUV6QyxjQUFjLEVBQ1osR0FBRyxLQUFLLFNBQVMsSUFBSSxPQUFPO2dCQUMxQixDQUFDLENBQUM7b0JBQ0UsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLO29CQUNwRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87d0JBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUMzQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUNmLGdCQUFnQixFQUFFLEVBQUU7eUJBQ3JCLENBQUMsQ0FBQyxDQUNKO3dCQUNILENBQUMsQ0FBQyxTQUFTO2lCQUNkO2dCQUNILENBQUMsQ0FBQyxTQUFTO1NBQ2hCLEVBQ0QsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQXNCO1FBQzlDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVc7WUFBRSxPQUFPO1FBRWxDLE9BQU8sSUFBSSxpQ0FBZSxDQUN4QixJQUFJLENBQUMsSUFBSSxFQUNULEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFDdkUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDakMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTNHRCw4Q0EyR0MifQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGFpbmVyUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWtzL0NvbnRhaW5lclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQUN6QyxpRkFBbUU7QUFHbkUsa0NBQWdFO0FBRWhFLDZEQUEwRDtBQWExRCxNQUFhLGlCQUFrQixTQUFRLDRCQUE0QztJQUNqRSxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBMkIsRUFBRSxJQUFzQztRQUMzRixLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pILE1BQU0sYUFBYSxHQUFHLEdBQUcsS0FBSyxTQUFTLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFD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
package/aks/helpers.d.ts CHANGED
@@ -1,6 +1,12 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import { AksOutputType } from './types';
1
3
  export declare const aksRequiredOutboundPorts: string[];
2
4
  export declare const getAksConfig: ({ resourceName, resourceGroupName, disableLocalAccounts, }: {
3
5
  resourceName: string;
4
6
  resourceGroupName: string;
5
7
  disableLocalAccounts?: boolean;
6
8
  }) => Promise<string>;
9
+ export declare const getAksClusterOutput: ({ resourceName, resourceGroupName, }: {
10
+ resourceName: pulumi.Input<string>;
11
+ resourceGroupName: pulumi.Input<string>;
12
+ }) => pulumi.Output<AksOutputType>;
package/aks/helpers.js CHANGED
@@ -33,20 +33,41 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getAksConfig = exports.aksRequiredOutboundPorts = void 0;
37
- const ccs = __importStar(require("@pulumi/azure-native/containerservice"));
36
+ exports.getAksClusterOutput = exports.getAksConfig = exports.aksRequiredOutboundPorts = void 0;
37
+ const azure = __importStar(require("@pulumi/azure-native"));
38
+ const helpers_1 = require("../helpers");
39
+ const pulumi = __importStar(require("@pulumi/pulumi"));
38
40
  exports.aksRequiredOutboundPorts = ['1194', '9000', '123', '53', '80', '443'];
39
41
  const getAksConfig = async ({ resourceName, resourceGroupName, disableLocalAccounts, }) => {
40
42
  const aks = disableLocalAccounts
41
- ? await ccs.listManagedClusterUserCredentials({
43
+ ? await azure.containerservice.listManagedClusterUserCredentials({
42
44
  resourceName,
43
45
  resourceGroupName,
44
46
  })
45
- : await ccs.listManagedClusterAdminCredentials({
47
+ : await azure.containerservice.listManagedClusterAdminCredentials({
46
48
  resourceName,
47
49
  resourceGroupName,
48
50
  });
49
51
  return Buffer.from(aks.kubeconfigs[0].value, 'base64').toString('utf8');
50
52
  };
51
53
  exports.getAksConfig = getAksConfig;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ha3MvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyRUFBNkQ7QUFFaEQsUUFBQSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFNUUsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLEVBQ2pDLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEdBS3JCLEVBQW1CLEVBQUU7SUFDcEIsTUFBTSxHQUFHLEdBQUcsb0JBQW9CO1FBQzlCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQztZQUMxQyxZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCLENBQUM7UUFDSixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsa0NBQWtDLENBQUM7WUFDM0MsWUFBWTtZQUNaLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7SUFFUCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQztBQXBCVyxRQUFBLFlBQVksZ0JBb0J2QiJ9
54
+ const getAksClusterOutput = ({ resourceName, resourceGroupName, }) => {
55
+ const url = pulumi.interpolate `https://management.azure.com/subscriptions/${helpers_1.azureEnv.subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/${resourceName}?api-version=2025-10-01`;
56
+ //using fetch to get the aks cluster details
57
+ return pulumi.output(url).apply(async (url) => {
58
+ const token = await azure.authorization.getClientToken();
59
+ const response = await fetch(url, {
60
+ method: 'GET',
61
+ headers: {
62
+ Authorization: `Bearer ${token.token}`,
63
+ },
64
+ });
65
+ if (!response.ok) {
66
+ throw new Error(`Failed to fetch AKS cluster: ${response.statusText}`);
67
+ }
68
+ const data = await response.json();
69
+ return data;
70
+ });
71
+ };
72
+ exports.getAksClusterOutput = getAksClusterOutput;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ha3MvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBOEM7QUFDOUMsd0NBQXNDO0FBQ3RDLHVEQUF5QztBQUc1QixRQUFBLHdCQUF3QixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU1RSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsRUFDakMsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixvQkFBb0IsR0FLckIsRUFBbUIsRUFBRTtJQUNwQixNQUFNLEdBQUcsR0FBRyxvQkFBb0I7UUFDOUIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlDQUFpQyxDQUFDO1lBQzdELFlBQVk7WUFDWixpQkFBaUI7U0FDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQztZQUM5RCxZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCLENBQUMsQ0FBQztJQUVQLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBcEJXLFFBQUEsWUFBWSxnQkFvQnZCO0FBRUssTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQ2xDLFlBQVksRUFDWixpQkFBaUIsR0FJbEIsRUFBZ0MsRUFBRTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFBLDhDQUE4QyxrQkFBUSxDQUFDLGNBQWMsbUJBQW1CLGlCQUFpQix5REFBeUQsWUFBWSx5QkFBeUIsQ0FBQztJQUN0Tyw0Q0FBNEM7SUFDNUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDNUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNoQyxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsVUFBVSxLQUFLLENBQUMsS0FBSyxFQUFFO2FBQ3ZDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFxQixDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBeEJXLFFBQUEsbUJBQW1CLHVCQXdCOUIifQ==