@drunk-pulumi/azure-components 1.0.2 → 1.0.4

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 (103) hide show
  1. package/README.md +29 -2
  2. package/ResourceBuilder.d.ts +76 -24
  3. package/ResourceBuilder.js +144 -44
  4. package/aks/AzKubernetes.d.ts +30 -8
  5. package/aks/AzKubernetes.js +107 -44
  6. package/aks/ContainerRegistry.d.ts +4 -3
  7. package/aks/ContainerRegistry.js +22 -19
  8. package/apim/Apim.d.ts +51 -0
  9. package/apim/Apim.js +248 -0
  10. package/apim/ApimApi.d.ts +34 -0
  11. package/apim/ApimApi.js +193 -0
  12. package/apim/ApimApiSet.d.ts +27 -0
  13. package/apim/ApimApiSet.js +88 -0
  14. package/apim/ApimPolicyBuilder.d.ts +93 -0
  15. package/apim/ApimPolicyBuilder.js +294 -0
  16. package/apim/ApimProduct.d.ts +27 -0
  17. package/apim/ApimProduct.js +118 -0
  18. package/apim/index.d.ts +2 -0
  19. package/apim/index.js +19 -0
  20. package/apim/openAPI3Type.d.ts +85 -0
  21. package/apim/openAPI3Type.js +3 -0
  22. package/apim/openApiHelper.d.ts +1 -0
  23. package/apim/openApiHelper.js +36 -0
  24. package/app/SignalR.d.ts +3 -3
  25. package/app/SignalR.js +35 -20
  26. package/azAd/AppRegistration.d.ts +13 -7
  27. package/azAd/AppRegistration.js +48 -40
  28. package/azAd/AzRole.js +2 -2
  29. package/azAd/GroupRole.d.ts +7 -11
  30. package/azAd/GroupRole.js +7 -6
  31. package/azAd/RoleAssignment.d.ts +1 -1
  32. package/azAd/RoleAssignment.js +5 -5
  33. package/azAd/UserAssignedIdentity.d.ts +3 -0
  34. package/azAd/UserAssignedIdentity.js +23 -7
  35. package/azAd/helpers/index.d.ts +0 -2
  36. package/azAd/helpers/index.js +26 -21
  37. package/azAd/helpers/rolesBuiltIn.d.ts +6 -57
  38. package/azAd/helpers/rolesBuiltIn.js +25868 -25353
  39. package/azAd/helpers/rsRoleDefinition.d.ts +12 -6
  40. package/azAd/helpers/rsRoleDefinition.js +43 -31
  41. package/base/BaseComponent.d.ts +1 -15
  42. package/base/BaseComponent.js +3 -22
  43. package/base/BaseResourceComponent.d.ts +24 -17
  44. package/base/BaseResourceComponent.js +61 -45
  45. package/base/helpers.d.ts +0 -6
  46. package/base/helpers.js +1 -18
  47. package/common/RandomPassword.js +4 -4
  48. package/common/RandomString.d.ts +1 -1
  49. package/common/RandomString.js +3 -3
  50. package/common/RsGroup.js +2 -2
  51. package/database/AzSql.d.ts +11 -10
  52. package/database/AzSql.js +38 -24
  53. package/database/MySql.d.ts +1 -1
  54. package/database/MySql.js +45 -28
  55. package/database/Postgres.d.ts +2 -1
  56. package/database/Postgres.js +29 -17
  57. package/database/Redis.d.ts +25 -4
  58. package/database/Redis.js +88 -25
  59. package/helpers/autoTags.js +2 -1
  60. package/helpers/certHelpers.d.ts +20 -0
  61. package/helpers/certHelpers.js +85 -0
  62. package/helpers/rsHelpers.d.ts +19 -1
  63. package/helpers/rsHelpers.js +27 -4
  64. package/helpers/stackEnv.d.ts +1 -1
  65. package/helpers/stackEnv.js +1 -1
  66. package/index.d.ts +1 -0
  67. package/index.js +2 -1
  68. package/package.json +10 -7
  69. package/services/Automation.d.ts +3 -1
  70. package/services/Automation.js +8 -8
  71. package/services/ServiceBus.d.ts +3 -2
  72. package/services/ServiceBus.js +17 -19
  73. package/types.d.ts +44 -15
  74. package/vault/EncryptionKey.d.ts +1 -1
  75. package/vault/EncryptionKey.js +4 -4
  76. package/vault/KeyVault.d.ts +7 -2
  77. package/vault/KeyVault.js +16 -5
  78. package/vault/VaultSecret.d.ts +1 -1
  79. package/vault/VaultSecret.js +9 -9
  80. package/vault/VaultSecrets.d.ts +2 -4
  81. package/vault/VaultSecrets.js +4 -6
  82. package/vault/helpers.d.ts +17 -0
  83. package/vault/helpers.js +50 -2
  84. package/vm/DiskEncryptionSet.js +2 -2
  85. package/vm/VirtualMachine.d.ts +2 -1
  86. package/vm/VirtualMachine.js +37 -25
  87. package/vnet/Basion.d.ts +4 -3
  88. package/vnet/Basion.js +17 -4
  89. package/vnet/DnsZone.d.ts +1 -1
  90. package/vnet/DnsZone.js +2 -2
  91. package/vnet/IpAddresses.d.ts +6 -2
  92. package/vnet/IpAddresses.js +2 -2
  93. package/vnet/NetworkPeering.d.ts +1 -1
  94. package/vnet/NetworkPeering.js +1 -1
  95. package/vnet/PrivateDnsZone.d.ts +1 -1
  96. package/vnet/PrivateDnsZone.js +4 -4
  97. package/vnet/PrivateEndpoint.d.ts +7 -10
  98. package/vnet/PrivateEndpoint.js +11 -10
  99. package/vnet/RouteTable.d.ts +1 -1
  100. package/vnet/RouteTable.js +2 -2
  101. package/vnet/VirtualNetwork.d.ts +30 -43
  102. package/vnet/VirtualNetwork.js +77 -43
  103. package/vnet/VpnGateway.js +2 -2
package/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  A modular, reusable TypeScript library of Pulumi components for rapidly building and managing Azure infrastructure. This project provides high-level abstractions for common Azure resources, enabling you to compose complex cloud environments with minimal boilerplate.
4
4
 
5
5
  ## Features
6
+
6
7
  - **Composable Components:** Build infrastructure using reusable building blocks (e.g., Resource Groups, Key Vaults, VMs, Networking, Storage, Databases, etc.).
7
8
  - **Opinionated Defaults:** Sensible defaults for security, tagging, and resource configuration.
8
9
  - **Extensible:** Easily extend or customize components for your organization's needs.
@@ -10,6 +11,7 @@ A modular, reusable TypeScript library of Pulumi components for rapidly building
10
11
  - **Azure Best Practices:** Implements patterns for identity, encryption, logging, and networking.
11
12
 
12
13
  ## Project Structure
14
+
13
15
  ```
14
16
  src/
15
17
  aks/ # Azure Kubernetes Service components
@@ -32,30 +34,49 @@ src/
32
34
  ## Getting Started
33
35
 
34
36
  ### Prerequisites
37
+
35
38
  - [Node.js](https://nodejs.org/) (v16+ recommended)
36
39
  - [Pulumi CLI](https://www.pulumi.com/docs/get-started/install/)
37
40
  - Azure account with sufficient permissions
38
41
  - [pnpm](https://pnpm.io/) (or npm/yarn)
39
42
 
40
43
  ### Installation
44
+
41
45
  Clone the repository and install dependencies:
46
+
42
47
  ```bash
43
48
  git clone <repo-url>
44
49
  cd drunk-pulumi-azure-components
45
50
  pnpm install
46
51
  ```
47
52
 
53
+ ### Set Default Config
54
+
55
+ ```
56
+ pulumi org set-default YOUR_ORG_NAME
57
+
58
+ pulumi config set azure-native:tenantId YOUR_AZ_TENANT_ID
59
+ pulumi config set azure-native:subscriptionId YOUR_AZ_SUBSCRIPTION_ID
60
+ pulumi config set azure-native:location YOUR_AZ_LOCATION
61
+ ```
62
+
48
63
  ### Usage
64
+
49
65
  You can use the components in your own Pulumi project or in the provided `pulumi-test/` directory for examples.
50
66
 
51
67
  #### Example: Creating a Resource Group with Key Vault and Logging
68
+
52
69
  ```typescript
53
70
  import { ResourceBuilder } from '../src/ResourceBuilder';
54
71
 
55
72
  const builder = new ResourceBuilder('my-stack', {
56
73
  groupRoles: { createWithName: 'my-rg-roles' },
57
- vault: { /* vault config */ },
58
- logs: { /* logs config */ },
74
+ vault: {
75
+ /* vault config */
76
+ },
77
+ logs: {
78
+ /* logs config */
79
+ },
59
80
  enableDefaultUAssignId: true,
60
81
  });
61
82
 
@@ -65,16 +86,19 @@ export const outputs = builder.getOutputs();
65
86
  See `pulumi-test/samples/` for more usage examples.
66
87
 
67
88
  ### Project Scripts
89
+
68
90
  - `pnpm build` – Compile TypeScript sources
69
91
  - `pnpm lint` – Run ESLint
70
92
  - `pnpm test` – Run tests (if available)
71
93
 
72
94
  ### Directory Reference
95
+
73
96
  - **src/**: All core component code
74
97
  - **pulumi-test/**: Example Pulumi stacks and sample usage
75
98
  - **.devcontainer/**: Development container setup for VS Code
76
99
 
77
100
  ## Component Overview
101
+
78
102
  - **ResourceBuilder**: Main entry point for composing resources (resource group, roles, vault, logs, disk encryption, etc.)
79
103
  - **azAd/**: Azure AD roles, group roles, user-assigned identities
80
104
  - **vault/**: Key Vaults, encryption keys, secrets
@@ -87,6 +111,7 @@ See `pulumi-test/samples/` for more usage examples.
87
111
  - **services/**: Automation, Search, Service Bus
88
112
 
89
113
  ## Contributing
114
+
90
115
  1. Fork the repository
91
116
  2. Create a new branch (`git checkout -b feature/my-feature`)
92
117
  3. Make your changes
@@ -94,7 +119,9 @@ See `pulumi-test/samples/` for more usage examples.
94
119
  5. Submit a pull request
95
120
 
96
121
  ## License
122
+
97
123
  MIT License
98
124
 
99
125
  ## Support & Contact
126
+
100
127
  For questions, issues, or feature requests, please open an issue on GitHub or contact the maintainer.
@@ -1,41 +1,93 @@
1
1
  import * as pulumi from '@pulumi/pulumi';
2
- import { GroupRoleOutput, UserAssignedIdentity } from './azAd';
3
- import { BaseComponent } from './base/BaseComponent';
4
- import { RsGroup, RsGroupArgs } from './common';
5
- import { Logs, LogsArgs } from './logs';
6
- import { KeyVault, KeyVaultArgs } from './vault';
2
+ import * as types from './types';
3
+ import { AppRegistration, AppRegistrationArgs, GroupRole, GroupRoleArgs, RoleAssignmentArgs, UserAssignedIdentity, UserAssignedIdentityArgs } from './azAd';
7
4
  import { DiskEncryptionSet, DiskEncryptionSetArgs } from './vm';
8
- type GroupRoleOutputTypes = {
9
- admin: pulumi.Output<GroupRoleOutput>;
10
- contributor: pulumi.Output<GroupRoleOutput>;
11
- readOnly: pulumi.Output<GroupRoleOutput>;
12
- };
5
+ import { KeyVault, KeyVaultArgs } from './vault';
6
+ import { Logs, LogsArgs } from './logs';
7
+ import { RsGroup, RsGroupArgs } from './common';
8
+ import { Vnet, VnetArgs } from './vnet';
9
+ import { BaseComponent } from './base/BaseComponent';
13
10
  export type ResourceBuilderOutputs = {
14
- groupRoles?: GroupRoleOutputTypes;
11
+ groupRoles?: types.GroupRoleOutputTypes;
15
12
  rsGroup: ReturnType<RsGroup['getOutputs']>;
16
13
  vaultInfo?: ReturnType<KeyVault['getOutputs']>;
17
14
  defaultUAssignedId?: ReturnType<UserAssignedIdentity['getOutputs']>;
15
+ defaultAppIdentity?: ReturnType<AppRegistration['getOutputs']>;
18
16
  logs?: ReturnType<Logs['getOutputs']>;
19
17
  diskEncryptionSet?: ReturnType<DiskEncryptionSet['getOutputs']>;
18
+ vnet?: ReturnType<Vnet['getOutputs']>;
20
19
  };
21
- type CommonProps = 'rsGroup' | 'groupRoles' | 'vaultInfo' | 'resourceGroupName';
22
- export interface ResourceBuilderArgs extends Omit<RsGroupArgs, CommonProps> {
23
- groupRoles?: {
24
- createWithName?: string;
25
- } | GroupRoleOutputTypes;
26
- vault?: Omit<KeyVaultArgs, CommonProps>;
27
- logs?: Omit<LogsArgs, CommonProps>;
28
- diskEncryption?: Omit<DiskEncryptionSetArgs, CommonProps>;
29
- enableDefaultUAssignId?: boolean;
20
+ /**
21
+ * Arguments for composing a standard Azure resource group environment with optional common foundation resources.
22
+ *
23
+ * You always pass the base `RsGroupArgs` (minus common meta props removed via `Omit`).
24
+ * Each optional `*Create` property triggers creation of that resource. If both an existing instance reference
25
+ * (e.g. `groupRoles`) and a corresponding `*Create` block are provided, the existing instance takes precedence
26
+ * and the `*Create` block is ignored.
27
+ */
28
+ export interface ResourceBuilderArgs extends Omit<RsGroupArgs, types.CommonProps> {
29
+ /**
30
+ * Pre-created group role outputs or the `GroupRole` component itself to reuse instead of creating new ones.
31
+ * When supplied, `groupRolesCreate` is ignored.
32
+ */
33
+ groupRoles?: types.GroupRoleOutputTypes | GroupRole;
34
+ /**
35
+ * Definition to create a new set of Azure AD groups / roles (reader, contributor, etc.).
36
+ * Provide when you want the builder to provision standard role groups automatically.
37
+ */
38
+ groupRolesCreate?: types.WithName & GroupRoleArgs;
39
+ vaultInfo?: types.ResourceInputs;
40
+ /**
41
+ * Configuration to create a Key Vault in the resource group. Adds linkage with created identities and group roles.
42
+ */
43
+ vaultCreate?: types.WithName & Omit<KeyVaultArgs, types.CommonProps>;
44
+ /**
45
+ * Configuration to create a Log Analytics workspace (and related diagnostics) bound to the resource group.
46
+ */
47
+ logsCreate?: types.WithName & Omit<LogsArgs, types.CommonProps>;
48
+ /**
49
+ * Configuration for provisioning a Disk Encryption Set (defaults encryptionType if omitted).
50
+ * Depends on Key Vault (if also created) and optionally the default user-assigned identity.
51
+ */
52
+ diskEncryptionCreate?: types.WithName & Omit<DiskEncryptionSetArgs, types.CommonProps>;
53
+ /**
54
+ * Create a default User Assigned Managed Identity. `memberof` selects which generated group role (defaults to 'readOnly').
55
+ * If `groupRoles` / `groupRolesCreate` not provided, the identity will not have group memberships applied.
56
+ */
57
+ defaultUAssignedIdCreate?: types.WithName & Omit<UserAssignedIdentityArgs, types.CommonProps | 'memberof'> & {
58
+ /** Which group role key to map the identity into (e.g. 'readOnly', 'contributor'). */
59
+ memberof?: types.GroupRoleTypes;
60
+ };
61
+ /**
62
+ * Create a default App Registration + Service Principal. `memberof` optionally assigns it a role group (defaults 'readOnly').
63
+ * Vault info (if created) is passed for secret references.
64
+ */
65
+ defaultAppIdentityCreate?: types.WithName & Omit<AppRegistrationArgs, types.CommonProps | 'memberof'> & {
66
+ /** Which group role key to map the app into. */
67
+ memberof?: types.GroupRoleTypes;
68
+ };
69
+ /**
70
+ * Configuration to create a Virtual Network with sub-resources (subnets, NSGs, etc. per `VnetArgs`).
71
+ */
72
+ vnetCreate?: types.WithName & Omit<VnetArgs, types.CommonProps>;
30
73
  }
31
74
  export declare class ResourceBuilder extends BaseComponent<ResourceBuilderArgs> {
32
75
  readonly rsGroup: RsGroup;
33
- readonly vaultInfo?: KeyVault;
34
- readonly groupRoles?: GroupRoleOutputTypes;
76
+ readonly vaultInfo?: types.ResourceOutputs;
77
+ readonly groupRoles?: types.GroupRoleOutputTypes;
35
78
  readonly defaultUAssignedId?: UserAssignedIdentity;
79
+ readonly defaultAppIdentity?: AppRegistration;
36
80
  readonly logs?: Logs;
37
- readonly diskEncryptionSet?: DiskEncryptionSet;
81
+ private readonly diskEncryptionSet?;
82
+ private readonly vnet;
38
83
  constructor(name: string, args: ResourceBuilderArgs, opts?: pulumi.ComponentResourceOptions);
39
84
  getOutputs(): ResourceBuilderOutputs;
85
+ private createGroupRoles;
86
+ private createVault;
87
+ private createUserIdentity;
88
+ private createAppIdentity;
89
+ private createLogs;
90
+ private createDiskEncryptionSet;
91
+ private createVnet;
92
+ grant(props: Omit<RoleAssignmentArgs, 'scope'>): this;
40
93
  }
41
- export {};
@@ -1,72 +1,172 @@
1
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.ResourceBuilder = void 0;
37
+ const pulumi = __importStar(require("@pulumi/pulumi"));
4
38
  const azAd_1 = require("./azAd");
39
+ const vm_1 = require("./vm");
40
+ const vault_1 = require("./vault");
41
+ const logs_1 = require("./logs");
42
+ const common_1 = require("./common");
43
+ const vnet_1 = require("./vnet");
5
44
  const BaseComponent_1 = require("./base/BaseComponent");
6
45
  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");
46
+ const helpers_2 = require("./helpers");
11
47
  class ResourceBuilder extends BaseComponent_1.BaseComponent {
12
48
  rsGroup;
13
49
  vaultInfo;
14
50
  groupRoles;
15
51
  defaultUAssignedId;
52
+ defaultAppIdentity;
16
53
  logs;
17
54
  diskEncryptionSet;
55
+ vnet;
18
56
  constructor(name, args, opts) {
19
57
  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 if (groupRoles instanceof azAd_1.GroupRole)
26
- this.groupRoles = groupRoles.getOutputs();
27
- else
28
- this.groupRoles = groupRoles;
29
- }
58
+ const { groupRolesCreate, groupRoles, vaultCreate, defaultUAssignedIdCreate, logsCreate, diskEncryptionCreate, ...props } = args;
59
+ this.groupRoles = this.createGroupRoles();
30
60
  this.rsGroup = new common_1.RsGroup(name, { ...props, groupRoles: this.groupRoles }, { dependsOn: opts?.dependsOn, parent: this });
31
- if (vault) {
32
- this.vaultInfo = new vault_1.KeyVault(name, { ...vault, rsGroup: this.rsGroup, groupRoles: this.groupRoles }, { dependsOn: this.rsGroup, parent: this });
33
- }
34
- if (enableDefaultUAssignId) {
35
- this.defaultUAssignedId = new azAd_1.UserAssignedIdentity(name, {
36
- rsGroup: this.rsGroup,
37
- vaultInfo: this.vaultInfo,
38
- memberof: this.groupRoles ? [this.groupRoles.readOnly] : undefined,
39
- }, { dependsOn: this.vaultInfo ? [this.rsGroup, this.vaultInfo] : this.rsGroup, parent: this });
40
- }
41
- if (logs) {
42
- this.logs = new logs_1.Logs(name, {
43
- ...logs,
44
- rsGroup: this.rsGroup,
45
- vaultInfo: this.vaultInfo,
46
- groupRoles: this.groupRoles,
47
- }, { dependsOn: this.vaultInfo ? [this.rsGroup, this.vaultInfo] : this.rsGroup, parent: this });
48
- }
49
- if (diskEncryption) {
50
- this.diskEncryptionSet = new vm_1.DiskEncryptionSet(name, {
51
- ...diskEncryption,
52
- rsGroup: this.rsGroup,
53
- encryptionType: 'EncryptionAtRestWithPlatformAndCustomerKeys',
54
- defaultUAssignedId: this.defaultUAssignedId,
55
- vaultInfo: this.vaultInfo,
56
- groupRoles: this.groupRoles,
57
- }, { dependsOn: this.vaultInfo ? [this.rsGroup, this.vaultInfo] : this.rsGroup, parent: this });
58
- }
61
+ this.vaultInfo = this.createVault();
62
+ this.defaultUAssignedId = this.createUserIdentity();
63
+ this.defaultAppIdentity = this.createAppIdentity();
64
+ this.logs = this.createLogs();
65
+ this.diskEncryptionSet = this.createDiskEncryptionSet();
66
+ this.vnet = this.createVnet();
67
+ this.registerOutputs();
59
68
  }
60
69
  getOutputs() {
61
70
  return {
62
71
  groupRoles: this.groupRoles,
63
72
  rsGroup: this.rsGroup.getOutputs(),
64
- vaultInfo: this.vaultInfo?.getOutputs(),
73
+ vaultInfo: this.vaultInfo,
65
74
  defaultUAssignedId: this.defaultUAssignedId?.getOutputs(),
75
+ defaultAppIdentity: this.defaultAppIdentity?.getOutputs(),
66
76
  logs: this.logs?.getOutputs(),
67
77
  diskEncryptionSet: this.diskEncryptionSet?.getOutputs(),
78
+ vnet: this.vnet?.getOutputs(),
68
79
  };
69
80
  }
81
+ createGroupRoles() {
82
+ const { groupRoles, groupRolesCreate } = this.args;
83
+ if (groupRoles) {
84
+ return groupRoles instanceof azAd_1.GroupRole ? groupRoles.getOutputs() : groupRoles;
85
+ }
86
+ if (groupRolesCreate) {
87
+ return new azAd_1.GroupRole(groupRolesCreate.name ?? this.name, groupRolesCreate, {
88
+ dependsOn: this.opts?.dependsOn,
89
+ parent: this,
90
+ }).getOutputs();
91
+ }
92
+ }
93
+ createVault() {
94
+ const { vaultInfo, vaultCreate } = this.args;
95
+ if (vaultInfo)
96
+ return { resourceName: pulumi.output(vaultInfo.resourceName), id: pulumi.output(vaultInfo.id) };
97
+ if (!vaultCreate)
98
+ return undefined;
99
+ return new vault_1.KeyVault(vaultCreate.name ?? this.name, { ...vaultCreate, rsGroup: this.rsGroup, groupRoles: this.groupRoles }, {
100
+ dependsOn: this.rsGroup,
101
+ parent: this,
102
+ }).getOutputs();
103
+ }
104
+ createUserIdentity() {
105
+ const { defaultUAssignedIdCreate } = this.args;
106
+ if (!defaultUAssignedIdCreate)
107
+ return undefined;
108
+ return new azAd_1.UserAssignedIdentity(defaultUAssignedIdCreate.name ?? this.name, {
109
+ ...defaultUAssignedIdCreate,
110
+ rsGroup: this.rsGroup,
111
+ vaultInfo: this.vaultInfo,
112
+ memberof: this.groupRoles ? [this.groupRoles[defaultUAssignedIdCreate.memberof ?? 'readOnly']] : undefined,
113
+ }, {
114
+ dependsOn: this.rsGroup,
115
+ parent: this,
116
+ });
117
+ }
118
+ createAppIdentity() {
119
+ const { defaultAppIdentityCreate } = this.args;
120
+ if (!defaultAppIdentityCreate)
121
+ return undefined;
122
+ return new azAd_1.AppRegistration(defaultAppIdentityCreate.name ?? this.name, {
123
+ ...defaultAppIdentityCreate,
124
+ memberof: this.groupRoles ? [this.groupRoles[defaultAppIdentityCreate.memberof ?? 'readOnly']] : undefined,
125
+ vaultInfo: this.vaultInfo,
126
+ }, {
127
+ dependsOn: this.rsGroup,
128
+ parent: this,
129
+ });
130
+ }
131
+ createLogs() {
132
+ const { logsCreate } = this.args;
133
+ if (!logsCreate)
134
+ return undefined;
135
+ return new logs_1.Logs(logsCreate.name ?? this.name, {
136
+ ...logsCreate,
137
+ rsGroup: this.rsGroup,
138
+ vaultInfo: this.vaultInfo,
139
+ groupRoles: this.groupRoles,
140
+ }, { dependsOn: this.rsGroup, parent: this });
141
+ }
142
+ createDiskEncryptionSet() {
143
+ const { diskEncryptionCreate } = this.args;
144
+ if (!diskEncryptionCreate)
145
+ return undefined;
146
+ return new vm_1.DiskEncryptionSet(diskEncryptionCreate.name ?? this.name, {
147
+ ...diskEncryptionCreate,
148
+ encryptionType: diskEncryptionCreate.encryptionType ?? 'EncryptionAtRestWithPlatformAndCustomerKeys',
149
+ rsGroup: this.rsGroup,
150
+ defaultUAssignedId: this.defaultUAssignedId,
151
+ vaultInfo: this.vaultInfo,
152
+ groupRoles: this.groupRoles,
153
+ }, { dependsOn: this.rsGroup, parent: this });
154
+ }
155
+ createVnet() {
156
+ const { vnetCreate } = this.args;
157
+ if (!vnetCreate)
158
+ return undefined;
159
+ return new vnet_1.Vnet(vnetCreate.name ?? this.name, {
160
+ ...vnetCreate,
161
+ rsGroup: this.rsGroup,
162
+ groupRoles: this.groupRoles,
163
+ vaultInfo: this.vaultInfo,
164
+ }, { dependsOn: this.rsGroup, parent: this });
165
+ }
166
+ grant(props) {
167
+ new azAd_1.RoleAssignment(`${this.name}-${props.roleName}`, { ...props, scope: helpers_2.rsHelpers.getRsGroupIdFrom(this.rsGroup) }, { dependsOn: this, deletedWith: this, parent: this });
168
+ return this;
169
+ }
70
170
  }
71
171
  exports.ResourceBuilder = ResourceBuilder;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Jlc291cmNlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBMEU7QUFDMUUsd0RBQXFEO0FBQ3JELDRDQUEwRDtBQUMxRCxxQ0FBZ0Q7QUFDaEQsaUNBQXdDO0FBQ3hDLG1DQUFpRDtBQUNqRCw2QkFBZ0U7QUEyQmhFLE1BQWEsZUFBZ0IsU0FBUSw2QkFBa0M7SUFDckQsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBWTtJQUNyQixVQUFVLENBQXdCO0lBQ2xDLGtCQUFrQixDQUF3QjtJQUMxQyxJQUFJLENBQVE7SUFDWixpQkFBaUIsQ0FBcUI7SUFFdEQsWUFBWSxJQUFZLEVBQUUsSUFBeUIsRUFBRSxJQUFzQztRQUN6RixLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUUzRixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxnQkFBZ0IsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGdCQUFTLENBQzdCLFVBQVUsQ0FBQyxjQUFjLEVBQ3pCLEVBQUUsRUFDRixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDN0MsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQixDQUFDO2lCQUFNLElBQUksVUFBVSxZQUFZLGdCQUFTO2dCQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDOztnQkFDakYsSUFBSSxDQUFDLFVBQVUsR0FB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
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Jlc291cmNlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBeUM7QUFHekMsaUNBU2dCO0FBQ2hCLDZCQUFnRTtBQUNoRSxtQ0FBaUQ7QUFDakQsaUNBQXdDO0FBQ3hDLHFDQUFnRDtBQUNoRCxpQ0FBd0M7QUFFeEMsd0RBQXFEO0FBQ3JELDRDQUEwRDtBQUMxRCx1Q0FBc0M7QUE2RXRDLE1BQWEsZUFBZ0IsU0FBUSw2QkFBa0M7SUFDckQsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBeUI7SUFDbEMsVUFBVSxDQUE4QjtJQUN4QyxrQkFBa0IsQ0FBd0I7SUFDMUMsa0JBQWtCLENBQW1CO0lBQ3JDLElBQUksQ0FBUTtJQUNYLGlCQUFpQixDQUFxQjtJQUN0QyxJQUFJLENBQW1CO0lBRXhDLFlBQVksSUFBWSxFQUFFLElBQXlCLEVBQUUsSUFBc0M7UUFDekYsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sRUFDSixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixHQUFHLEtBQUssRUFDVCxHQUFHLElBQUksQ0FBQztRQUVULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFPLENBQ3hCLElBQUksRUFDSixFQUFFLEdBQUcsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ3pDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUM3QyxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDbEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLEVBQUU7WUFDekQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFVBQVUsRUFBRTtZQUN6RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRTtZQUN2RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU8sVUFBVSxZQUFZLGdCQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2hGLENBQUM7UUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLGdCQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3pFLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVM7Z0JBQy9CLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0MsSUFBSSxTQUFTO1lBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMvRyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRW5DLE9BQU8sSUFBSSxnQkFBUSxDQUNqQixXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQzdCLEVBQUUsR0FBRyxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDdEU7WUFDRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDdkIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUNGLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyx3QkFBd0I7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVoRCxPQUFPLElBQUksMkJBQW9CLENBQzdCLHdCQUF3QixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUMxQztZQUNFLEdBQUcsd0JBQXdCO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUMzRyxFQUNEO1lBQ0UsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixNQUFNLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyx3QkFBd0I7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVoRCxPQUFPLElBQUksc0JBQWUsQ0FDeEIsd0JBQXdCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQzFDO1lBQ0UsR0FBRyx3QkFBd0I7WUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMxRyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsRUFDRDtZQUNFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN2QixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFbEMsT0FBTyxJQUFJLFdBQUksQ0FDYixVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQzVCO1lBQ0UsR0FBRyxVQUFVO1lBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsRUFDRCxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDMUMsQ0FBQztJQUNKLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFNUMsT0FBTyxJQUFJLHNCQUFpQixDQUMxQixvQkFBb0IsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFDdEM7WUFDRSxHQUFHLG9CQUFvQjtZQUN2QixjQUFjLEVBQUUsb0JBQW9CLENBQUMsY0FBYyxJQUFJLDZDQUE2QztZQUVwRyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMzQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzFDLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxXQUFJLENBQ2IsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUM1QjtZQUNFLEdBQUcsVUFBVTtZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzFDLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQXdDO1FBQ25ELElBQUkscUJBQWMsQ0FDaEIsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFDaEMsRUFBRSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsbUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFDN0QsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNyRCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFqTEQsMENBaUxDIn0=
@@ -1,21 +1,29 @@
1
1
  import * as ccs from '@pulumi/azure-native/containerservice';
2
2
  import * as inputs from '@pulumi/azure-native/types/input';
3
3
  import * as pulumi from '@pulumi/pulumi';
4
- import { BaseResourceComponent, CommonBaseArgs } from '../base';
5
4
  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'> {
5
+ import { BaseResourceComponent, CommonBaseArgs } from '../base';
6
+ type AgentPoolProfile = inputs.containerservice.ManagedClusterAgentPoolProfileArgs & {
7
+ vmSize: pulumi.Input<string>;
8
+ vnetSubnetID: pulumi.Input<string>;
9
+ enableEncryptionAtHost: pulumi.Input<boolean>;
10
+ osDiskSizeGB: pulumi.Input<number>;
11
+ } & {
12
+ name: string;
13
+ };
14
+ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEnabler, types.WithGroupRolesArgs, types.WithUserAssignedIdentity, types.WithDiskEncryptSet, Partial<Pick<ccs.ManagedClusterArgs, 'dnsPrefix' | 'supportPlan' | 'autoScalerProfile' | 'autoUpgradeProfile' | 'storageProfile'>> {
7
15
  sku: ccs.ManagedClusterSKUTier;
8
- agentPoolProfiles: pulumi.Input<inputs.containerservice.ManagedClusterAgentPoolProfileArgs & {
9
- vmSize: pulumi.Input<string>;
10
- vnetSubnetID: pulumi.Input<string>;
11
- }>[];
16
+ nodeResourceGroup?: pulumi.Input<string>;
17
+ namespaces?: Record<string, ccs.NamespaceArgs['properties']>;
18
+ /** This only allows when cluster creating. For additional agent pool after cluster created please use extraAgentPools */
19
+ agentPoolProfiles: AgentPoolProfile[];
20
+ extraAgentPoolProfiles?: AgentPoolProfile[];
12
21
  attachToAcr?: types.ResourceInputs;
13
22
  features: {
14
23
  enablePrivateCluster: boolean;
15
24
  enablePrivateClusterPublicFQDN?: boolean;
16
25
  enableVerticalPodAutoscaler?: boolean;
17
26
  /** KEDA (Kubernetes Event-driven Autoscaling) settings for the workload auto-scaler profile. */
18
- enableKeda?: boolean;
19
27
  enableWorkloadIdentity?: boolean;
20
28
  enablePodIdentity?: boolean;
21
29
  };
@@ -23,6 +31,7 @@ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEn
23
31
  enableAzureKeyVault?: boolean;
24
32
  };
25
33
  network?: Omit<inputs.containerservice.ContainerServiceNetworkProfileArgs, 'networkMode' | 'networkPolicy' | 'networkPlugin' | 'loadBalancerSku' | 'loadBalancerProfile'> & {
34
+ networkPolicy?: ccs.NetworkPolicy;
26
35
  outboundType?: ccs.OutboundType;
27
36
  loadBalancerProfile?: inputs.containerservice.ManagedClusterLoadBalancerProfileArgs & {
28
37
  backendPoolType?: ccs.BackendPoolType;
@@ -40,16 +49,29 @@ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEn
40
49
  export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs> {
41
50
  readonly id: pulumi.Output<string>;
42
51
  readonly resourceName: pulumi.Output<string>;
52
+ readonly namespaces: Record<string, types.ResourceOutputs>;
53
+ readonly privateDnsZone: types.ResourceOutputs | undefined;
43
54
  constructor(name: string, args: AzKubernetesArgs, opts?: pulumi.ComponentResourceOptions);
44
55
  getOutputs(): {
45
56
  id: pulumi.Output<string>;
46
57
  resourceName: pulumi.Output<string>;
58
+ namespaces: Record<string, {
59
+ resourceName: pulumi.Output<string>;
60
+ id: pulumi.Output<string>;
61
+ }>;
62
+ privateDnsZone: {
63
+ resourceName: pulumi.Output<string>;
64
+ id: pulumi.Output<string>;
65
+ } | undefined;
47
66
  };
48
67
  private createIdentity;
49
68
  private createUserNameAndSshKeys;
50
69
  private createDiskEncryptionSet;
51
70
  private createCluster;
71
+ private createExtraAgentPoolProfiles;
72
+ private createNameSpaces;
52
73
  private createMaintenance;
53
74
  private assignPermission;
54
- private addAksCredentialToVault;
75
+ private getPrivateDNSZone;
55
76
  }
77
+ export {};