@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.
- package/PulumiPlugin.yaml +1 -0
- package/README.md +1 -0
- package/ResourceBuilder.d.ts +54 -0
- package/ResourceBuilder.js +71 -0
- package/aks/AzKubernetes.d.ts +55 -0
- package/aks/AzKubernetes.js +288 -0
- package/aks/ContainerRegistry.d.ts +19 -0
- package/aks/ContainerRegistry.js +119 -0
- package/aks/helpers.d.ts +6 -0
- package/aks/helpers.js +52 -0
- package/aks/index.d.ts +3 -0
- package/aks/index.js +43 -0
- package/app/AppCert.d.ts +15 -0
- package/app/AppCert.js +74 -0
- package/app/AppConfig.d.ts +18 -0
- package/app/AppConfig.js +124 -0
- package/app/AppService.d.ts +69 -0
- package/app/AppService.js +122 -0
- package/app/IoTHub.d.ts +15 -0
- package/app/IoTHub.js +80 -0
- package/app/LogicApp.d.ts +19 -0
- package/app/LogicApp.js +77 -0
- package/app/SignalR.d.ts +45 -0
- package/app/SignalR.js +125 -0
- package/app/index.d.ts +6 -0
- package/app/index.js +23 -0
- package/azAd/AppRegistration.d.ts +52 -0
- package/azAd/AppRegistration.js +165 -0
- package/azAd/AzRole.d.ts +14 -0
- package/azAd/AzRole.js +72 -0
- package/azAd/CustomRoles.d.ts +10 -0
- package/azAd/CustomRoles.js +73 -0
- package/azAd/GroupRole.d.ts +29 -0
- package/azAd/GroupRole.js +107 -0
- package/azAd/RoleAssignment.d.ts +15 -0
- package/azAd/RoleAssignment.js +63 -0
- package/azAd/UserAssignedIdentity.d.ts +17 -0
- package/azAd/UserAssignedIdentity.js +76 -0
- package/azAd/helpers/graphBuiltIn.d.ts +14 -0
- package/azAd/helpers/graphBuiltIn.js +5134 -0
- package/azAd/helpers/index.d.ts +3 -0
- package/azAd/helpers/index.js +39 -0
- package/azAd/helpers/rolesBuiltIn.d.ts +90 -0
- package/azAd/helpers/rolesBuiltIn.js +18601 -0
- package/azAd/helpers/rsRoleDefinition.d.ts +62 -0
- package/azAd/helpers/rsRoleDefinition.js +120 -0
- package/azAd/index.d.ts +7 -0
- package/azAd/index.js +24 -0
- package/base/BaseComponent.d.ts +53 -0
- package/base/BaseComponent.js +98 -0
- package/base/BaseResourceComponent.d.ts +108 -0
- package/base/BaseResourceComponent.js +180 -0
- package/base/helpers.d.ts +12 -0
- package/base/helpers.js +29 -0
- package/base/index.d.ts +3 -0
- package/base/index.js +43 -0
- package/common/PGPGenerator.d.ts +26 -0
- package/common/PGPGenerator.js +72 -0
- package/common/RandomPassword.d.ts +21 -0
- package/common/RandomPassword.js +84 -0
- package/common/RandomString.d.ts +20 -0
- package/common/RandomString.js +74 -0
- package/common/ResourceLocker.d.ts +9 -0
- package/common/ResourceLocker.js +52 -0
- package/common/RsGroup.d.ts +20 -0
- package/common/RsGroup.js +85 -0
- package/common/SshGenerator.d.ts +17 -0
- package/common/SshGenerator.js +66 -0
- package/common/index.d.ts +5 -0
- package/common/index.js +22 -0
- package/database/AzSql.d.ts +71 -0
- package/database/AzSql.js +283 -0
- package/database/MySql.d.ts +35 -0
- package/database/MySql.js +181 -0
- package/database/Postgres.d.ts +32 -0
- package/database/Postgres.js +171 -0
- package/database/Redis.d.ts +26 -0
- package/database/Redis.js +125 -0
- package/database/helpers.d.ts +7 -0
- package/database/helpers.js +52 -0
- package/database/index.d.ts +5 -0
- package/database/index.js +45 -0
- package/helpers/Location/LocationBuiltIn.d.ts +6 -0
- package/helpers/Location/LocationBuiltIn.js +493 -0
- package/helpers/Location/index.d.ts +3 -0
- package/helpers/Location/index.js +25 -0
- package/helpers/autoTags.d.ts +1 -0
- package/helpers/autoTags.js +27 -0
- package/helpers/azureEnv.d.ts +21 -0
- package/helpers/azureEnv.js +102 -0
- package/helpers/configHelper.d.ts +5 -0
- package/helpers/configHelper.js +54 -0
- package/helpers/index.d.ts +4 -0
- package/helpers/index.js +41 -0
- package/helpers/rsHelpers.d.ts +18 -0
- package/helpers/rsHelpers.js +92 -0
- package/helpers/stackEnv.d.ts +4 -0
- package/helpers/stackEnv.js +54 -0
- package/index.d.ts +14 -0
- package/index.js +53 -0
- package/logs/Logs.d.ts +48 -0
- package/logs/Logs.js +154 -0
- package/logs/helpers.d.ts +1 -0
- package/logs/helpers.js +38 -0
- package/logs/index.d.ts +1 -0
- package/logs/index.js +18 -0
- package/package.json +34 -0
- package/services/Automation.d.ts +16 -0
- package/services/Automation.js +85 -0
- package/services/AzSearch.d.ts +20 -0
- package/services/AzSearch.js +113 -0
- package/services/ServiceBus.d.ts +42 -0
- package/services/ServiceBus.js +256 -0
- package/services/index.d.ts +3 -0
- package/services/index.js +20 -0
- package/storage/StorageAccount.d.ts +53 -0
- package/storage/StorageAccount.js +261 -0
- package/storage/helpers.d.ts +24 -0
- package/storage/helpers.js +89 -0
- package/storage/index.d.ts +2 -0
- package/storage/index.js +42 -0
- package/types.d.ts +125 -0
- package/types.js +3 -0
- package/vault/EncryptionKey.d.ts +21 -0
- package/vault/EncryptionKey.js +73 -0
- package/vault/KeyVault.d.ts +31 -0
- package/vault/KeyVault.js +110 -0
- package/vault/VaultSecret.d.ts +23 -0
- package/vault/VaultSecret.js +72 -0
- package/vault/VaultSecrets.d.ts +25 -0
- package/vault/VaultSecrets.js +31 -0
- package/vault/helpers.d.ts +1 -0
- package/vault/helpers.js +13 -0
- package/vault/index.d.ts +5 -0
- package/vault/index.js +45 -0
- package/vm/DiskEncryptionSet.d.ts +16 -0
- package/vm/DiskEncryptionSet.js +74 -0
- package/vm/VirtualMachine.d.ts +45 -0
- package/vm/VirtualMachine.js +192 -0
- package/vm/helpers.d.ts +16 -0
- package/vm/helpers.js +15 -0
- package/vm/index.d.ts +3 -0
- package/vm/index.js +43 -0
- package/vnet/AzCdn.d.ts +44 -0
- package/vnet/AzCdn.js +276 -0
- package/vnet/Basion.d.ts +19 -0
- package/vnet/Basion.js +78 -0
- package/vnet/DnsZone.d.ts +36 -0
- package/vnet/DnsZone.js +113 -0
- package/vnet/Firewall.d.ts +53 -0
- package/vnet/Firewall.js +136 -0
- package/vnet/FirewallPolicies/FirewallPolicyBuilder.d.ts +18 -0
- package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +91 -0
- package/vnet/FirewallPolicies/commonPolicies.d.ts +10 -0
- package/vnet/FirewallPolicies/commonPolicies.js +55 -0
- package/vnet/FirewallPolicies/index.d.ts +0 -0
- package/vnet/FirewallPolicies/index.js +2 -0
- package/vnet/IpAddresses.d.ts +36 -0
- package/vnet/IpAddresses.js +74 -0
- package/vnet/NetworkPeering.d.ts +21 -0
- package/vnet/NetworkPeering.js +85 -0
- package/vnet/PrivateDnsZone.d.ts +38 -0
- package/vnet/PrivateDnsZone.js +111 -0
- package/vnet/PrivateEndpoint.d.ts +43 -0
- package/vnet/PrivateEndpoint.js +181 -0
- package/vnet/RouteTable.d.ts +22 -0
- package/vnet/RouteTable.js +75 -0
- package/vnet/VirtualNetwork.d.ts +99 -0
- package/vnet/VirtualNetwork.js +311 -0
- package/vnet/VpnGateway.d.ts +18 -0
- package/vnet/VpnGateway.js +90 -0
- package/vnet/helpers.d.ts +16 -0
- package/vnet/helpers.js +47 -0
- package/vnet/index.d.ts +13 -0
- package/vnet/index.js +53 -0
- package/vnet/securityRules/SecurityRuleBuilder.d.ts +12 -0
- package/vnet/securityRules/SecurityRuleBuilder.js +55 -0
- package/vnet/securityRules/commonRules.d.ts +9 -0
- package/vnet/securityRules/commonRules.js +94 -0
- package/vnet/securityRules/index.d.ts +2 -0
- 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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
|
package/aks/helpers.d.ts
ADDED