@drunk-pulumi/azure 0.0.19
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/Aks/Helper.d.ts +43 -0
- package/Aks/Helper.js +72 -0
- package/Aks/Identity.d.ts +14 -0
- package/Aks/Identity.js +32 -0
- package/Aks/VmSetAutoScale/index.d.ts +16 -0
- package/Aks/VmSetAutoScale/index.js +132 -0
- package/Aks/VmSetMonitor/index.d.ts +12 -0
- package/Aks/VmSetMonitor/index.js +67 -0
- package/Aks/index.d.ts +100 -0
- package/Aks/index.js +558 -0
- package/Apim/ApiProduct/Api.d.ts +35 -0
- package/Apim/ApiProduct/Api.js +131 -0
- package/Apim/ApiProduct/OpenApi.d.ts +85 -0
- package/Apim/ApiProduct/OpenApi.js +3 -0
- package/Apim/ApiProduct/PolicyBuilder.d.ts +79 -0
- package/Apim/ApiProduct/PolicyBuilder.js +361 -0
- package/Apim/ApiProduct/Product.d.ts +8 -0
- package/Apim/ApiProduct/Product.js +63 -0
- package/Apim/ApiProduct/SwaggerHelper.d.ts +6 -0
- package/Apim/ApiProduct/SwaggerHelper.js +44 -0
- package/Apim/ApiProduct/index.d.ts +9 -0
- package/Apim/ApiProduct/index.js +22 -0
- package/Apim/Helpers.d.ts +0 -0
- package/Apim/Helpers.js +2 -0
- package/Apim/HookProxy/index.d.ts +20 -0
- package/Apim/HookProxy/index.js +27 -0
- package/Apim/index.d.ts +22 -0
- package/Apim/index.js +118 -0
- package/Apps/LogicApp.d.ts +12 -0
- package/Apps/LogicApp.js +19 -0
- package/Automation/AutoAccount.d.ts +5 -0
- package/Automation/AutoAccount.js +20 -0
- package/AzAd/B2C.d.ts +9 -0
- package/AzAd/B2C.js +38 -0
- package/AzAd/ConditionalPolicies/index.d.ts +0 -0
- package/AzAd/ConditionalPolicies/index.js +2 -0
- package/AzAd/EnvRoles.d.ts +12 -0
- package/AzAd/EnvRoles.js +62 -0
- package/AzAd/GraphDefinition.d.ts +14 -0
- package/AzAd/GraphDefinition.js +5136 -0
- package/AzAd/Group.d.ts +29 -0
- package/AzAd/Group.js +70 -0
- package/AzAd/Helper.d.ts +18 -0
- package/AzAd/Helper.js +37 -0
- package/AzAd/Identities/AzDevOps.d.ts +23 -0
- package/AzAd/Identities/AzDevOps.js +61 -0
- package/AzAd/Identities/AzUserAdRevertSync.d.ts +14 -0
- package/AzAd/Identities/AzUserAdRevertSync.js +18 -0
- package/AzAd/Identity.d.ts +51 -0
- package/AzAd/Identity.js +133 -0
- package/AzAd/ManagedIdentity.d.ts +6 -0
- package/AzAd/ManagedIdentity.js +23 -0
- package/AzAd/Role.d.ts +19 -0
- package/AzAd/Role.js +25 -0
- package/AzAd/RoleAssignment.d.ts +79 -0
- package/AzAd/RoleAssignment.js +48 -0
- package/AzAd/RolesBuiltIn.d.ts +62 -0
- package/AzAd/RolesBuiltIn.js +13841 -0
- package/Cdn/index.d.ts +11 -0
- package/Cdn/index.js +47 -0
- package/Certificate/index.d.ts +41 -0
- package/Certificate/index.js +156 -0
- package/Certificate/p12.d.ts +5 -0
- package/Certificate/p12.js +37 -0
- package/Common/AppConfigs/dotnetConfig.d.ts +15 -0
- package/Common/AppConfigs/dotnetConfig.js +20 -0
- package/Common/AutoTags.d.ts +1 -0
- package/Common/AutoTags.js +24 -0
- package/Common/AzureEnv.d.ts +37 -0
- package/Common/AzureEnv.js +94 -0
- package/Common/ConfigHelper.d.ts +5 -0
- package/Common/ConfigHelper.js +14 -0
- package/Common/GlobalEnv.d.ts +14 -0
- package/Common/GlobalEnv.js +38 -0
- package/Common/Helpers.d.ts +10 -0
- package/Common/Helpers.js +30 -0
- package/Common/Location.d.ts +4 -0
- package/Common/Location.js +23 -0
- package/Common/LocationBuiltIn.d.ts +81 -0
- package/Common/LocationBuiltIn.js +1925 -0
- package/Common/Naming/index.d.ts +62 -0
- package/Common/Naming/index.js +146 -0
- package/Common/ResourceEnv.d.ts +16 -0
- package/Common/ResourceEnv.js +29 -0
- package/Common/StackEnv.d.ts +4 -0
- package/Common/StackEnv.js +22 -0
- package/Common/index.d.ts +5 -0
- package/Common/index.js +9 -0
- package/ContainerRegistry/Helper.d.ts +23 -0
- package/ContainerRegistry/Helper.js +47 -0
- package/ContainerRegistry/index.d.ts +28 -0
- package/ContainerRegistry/index.js +103 -0
- package/Core/Helper.d.ts +16 -0
- package/Core/Helper.js +37 -0
- package/Core/KeyGenetators.d.ts +33 -0
- package/Core/KeyGenetators.js +66 -0
- package/Core/Locker.d.ts +13 -0
- package/Core/Locker.js +14 -0
- package/Core/Random.d.ts +40 -0
- package/Core/Random.js +83 -0
- package/Core/ResourceCreator.d.ts +17 -0
- package/Core/ResourceCreator.js +48 -0
- package/Core/ResourceGroup.d.ts +13 -0
- package/Core/ResourceGroup.js +45 -0
- package/CosmosDb/index.d.ts +33 -0
- package/CosmosDb/index.js +129 -0
- package/CustomRoles/index.d.ts +5 -0
- package/CustomRoles/index.js +27 -0
- package/IOT/Hub/index.d.ts +32 -0
- package/IOT/Hub/index.js +208 -0
- package/KeyVault/CustomHelper.d.ts +35 -0
- package/KeyVault/CustomHelper.js +40 -0
- package/KeyVault/Helper.d.ts +33 -0
- package/KeyVault/Helper.js +58 -0
- package/KeyVault/VaultAccess.d.ts +15 -0
- package/KeyVault/VaultAccess.js +47 -0
- package/KeyVault/VaultPermissions.d.ts +26 -0
- package/KeyVault/VaultPermissions.js +169 -0
- package/KeyVault/index.d.ts +28 -0
- package/KeyVault/index.js +136 -0
- package/KubeX/AcrSecret.d.ts +15 -0
- package/KubeX/AcrSecret.js +31 -0
- package/KubeX/Apps/AstroPage.d.ts +12 -0
- package/KubeX/Apps/AstroPage.js +33 -0
- package/KubeX/Apps/KafKa.d.ts +6 -0
- package/KubeX/Apps/KafKa.js +13 -0
- package/KubeX/Apps/Nobelium.d.ts +13 -0
- package/KubeX/Apps/Nobelium.js +37 -0
- package/KubeX/Apps/Wikijs.d.ts +30 -0
- package/KubeX/Apps/Wikijs.js +54 -0
- package/KubeX/Apps/WordPress.d.ts +24 -0
- package/KubeX/Apps/WordPress.js +55 -0
- package/KubeX/Apps/YarpProxy/index.d.ts +17 -0
- package/KubeX/Apps/YarpProxy/index.js +107 -0
- package/KubeX/Apps/YarpProxy/type.d.ts +55 -0
- package/KubeX/Apps/YarpProxy/type.js +3 -0
- package/KubeX/CertHelper.d.ts +1 -0
- package/KubeX/CertHelper.js +9 -0
- package/KubeX/CertImports.d.ts +19 -0
- package/KubeX/CertImports.js +70 -0
- package/KubeX/CloudFlare/CertCreator.d.ts +19 -0
- package/KubeX/CloudFlare/CertCreator.js +90 -0
- package/KubeX/CloudFlare/CertImports.d.ts +17 -0
- package/KubeX/CloudFlare/CertImports.js +34 -0
- package/KubeX/CloudFlare/DynamicDns.d.ts +21 -0
- package/KubeX/CloudFlare/DynamicDns.js +39 -0
- package/KubeX/CloudFlare/Tunnel-Helm.d.ts +17 -0
- package/KubeX/CloudFlare/Tunnel-Helm.js +12 -0
- package/KubeX/CloudFlare/Tunnel.d.ts +23 -0
- package/KubeX/CloudFlare/Tunnel.js +54 -0
- package/KubeX/CloudFlare/index.d.ts +13 -0
- package/KubeX/CloudFlare/index.js +36 -0
- package/KubeX/Clusters/K3s/AutoUpgradeController/index.d.ts +6 -0
- package/KubeX/Clusters/K3s/AutoUpgradeController/index.js +60 -0
- package/KubeX/ConfigSecret.d.ts +24 -0
- package/KubeX/ConfigSecret.js +38 -0
- package/KubeX/Core/CertManager/index.d.ts +24 -0
- package/KubeX/Core/CertManager/index.js +96 -0
- package/KubeX/Core/KsCertSecret.d.ts +12 -0
- package/KubeX/Core/KsCertSecret.js +22 -0
- package/KubeX/Core/KsSecret.d.ts +9 -0
- package/KubeX/Core/KsSecret.js +12 -0
- package/KubeX/Core/LoadBalancer/MetalLB.d.ts +7 -0
- package/KubeX/Core/LoadBalancer/MetalLB.js +21 -0
- package/KubeX/Core/Monitoring/index.d.ts +22 -0
- package/KubeX/Core/Monitoring/index.js +322 -0
- package/KubeX/Core/Namespace.d.ts +12 -0
- package/KubeX/Core/Namespace.js +41 -0
- package/KubeX/Core/Nginx/index.d.ts +60 -0
- package/KubeX/Core/Nginx/index.js +109 -0
- package/KubeX/Core/OAuthProxy/index.d.ts +0 -0
- package/KubeX/Core/OAuthProxy/index.js +3 -0
- package/KubeX/Core/ResourceQuota.d.ts +12 -0
- package/KubeX/Core/ResourceQuota.js +13 -0
- package/KubeX/Core/SecurityRules.d.ts +34 -0
- package/KubeX/Core/SecurityRules.js +93 -0
- package/KubeX/Core/StorageClass/azureBlob.d.ts +20 -0
- package/KubeX/Core/StorageClass/azureBlob.js +77 -0
- package/KubeX/Core/StorageClass/azureFile.d.ts +17 -0
- package/KubeX/Core/StorageClass/azureFile.js +45 -0
- package/KubeX/Core/StorageClass/index.d.ts +13 -0
- package/KubeX/Core/StorageClass/index.js +25 -0
- package/KubeX/Core/index.d.ts +57 -0
- package/KubeX/Core/index.js +94 -0
- package/KubeX/Databases/MariaDb.d.ts +11 -0
- package/KubeX/Databases/MariaDb.js +39 -0
- package/KubeX/Databases/MySql.V2.d.ts +11 -0
- package/KubeX/Databases/MySql.V2.js +40 -0
- package/KubeX/Databases/MySql.d.ts +13 -0
- package/KubeX/Databases/MySql.js +55 -0
- package/KubeX/Databases/PostgreSql/PostgreSQL-HA.d.ts +10 -0
- package/KubeX/Databases/PostgreSql/PostgreSQL-HA.js +47 -0
- package/KubeX/Databases/PostgreSql/PostgreSQL.d.ts +10 -0
- package/KubeX/Databases/PostgreSql/PostgreSQL.js +51 -0
- package/KubeX/Databases/PostgreSql/PostgreSql.v1.d.ts +13 -0
- package/KubeX/Databases/PostgreSql/PostgreSql.v1.js +56 -0
- package/KubeX/Databases/PostgreSql/index.d.ts +17 -0
- package/KubeX/Databases/PostgreSql/index.js +6 -0
- package/KubeX/Databases/RedisCache.d.ts +14 -0
- package/KubeX/Databases/RedisCache.js +65 -0
- package/KubeX/Databases/SqlServer.d.ts +15 -0
- package/KubeX/Databases/SqlServer.js +77 -0
- package/KubeX/Deployment/PodAutoscaler.d.ts +14 -0
- package/KubeX/Deployment/PodAutoscaler.js +51 -0
- package/KubeX/Deployment/index.d.ts +136 -0
- package/KubeX/Deployment/index.js +306 -0
- package/KubeX/Helpers.d.ts +4 -0
- package/KubeX/Helpers.js +17 -0
- package/KubeX/Ingress/AppGatewayIngress.d.ts +2 -0
- package/KubeX/Ingress/AppGatewayIngress.js +4 -0
- package/KubeX/Ingress/Conts.d.ts +13 -0
- package/KubeX/Ingress/Conts.js +18 -0
- package/KubeX/Ingress/NginxIngress.d.ts +3 -0
- package/KubeX/Ingress/NginxIngress.js +186 -0
- package/KubeX/Ingress/NginxProxy.d.ts +21 -0
- package/KubeX/Ingress/NginxProxy.js +43 -0
- package/KubeX/Ingress/TraefikIngress/CustomHeader.d.ts +15 -0
- package/KubeX/Ingress/TraefikIngress/CustomHeader.js +15 -0
- package/KubeX/Ingress/TraefikIngress/index.d.ts +11 -0
- package/KubeX/Ingress/TraefikIngress/index.js +95 -0
- package/KubeX/Ingress/index.d.ts +5 -0
- package/KubeX/Ingress/index.js +12 -0
- package/KubeX/Ingress/type.d.ts +82 -0
- package/KubeX/Ingress/type.js +3 -0
- package/KubeX/Providers/index.d.ts +8 -0
- package/KubeX/Providers/index.js +15 -0
- package/KubeX/Storage/Longhorn/index.d.ts +15 -0
- package/KubeX/Storage/Longhorn/index.js +54 -0
- package/KubeX/Storage/index.d.ts +25 -0
- package/KubeX/Storage/index.js +79 -0
- package/KubeX/Tools/AWS/LocalStack.d.ts +7 -0
- package/KubeX/Tools/AWS/LocalStack.js +29 -0
- package/KubeX/Tools/AWS/S3.d.ts +6 -0
- package/KubeX/Tools/AWS/S3.js +44 -0
- package/KubeX/Tools/AWS/index.d.ts +7 -0
- package/KubeX/Tools/AWS/index.js +14 -0
- package/KubeX/Tools/AppHealthzMonitor.d.ts +18 -0
- package/KubeX/Tools/AppHealthzMonitor.js +52 -0
- package/KubeX/Tools/ArgoCD/index.d.ts +17 -0
- package/KubeX/Tools/ArgoCD/index.js +131 -0
- package/KubeX/Tools/Dapr/Storage.d.ts +66 -0
- package/KubeX/Tools/Dapr/Storage.js +70 -0
- package/KubeX/Tools/Dapr/index.d.ts +10 -0
- package/KubeX/Tools/Dapr/index.js +31 -0
- package/KubeX/Tools/Echo-App.d.ts +3 -0
- package/KubeX/Tools/Echo-App.js +21 -0
- package/KubeX/Tools/Gitea/GiteaRepo.d.ts +72 -0
- package/KubeX/Tools/Gitea/GiteaRepo.js +184 -0
- package/KubeX/Tools/Gitea/GiteaRunner.d.ts +11 -0
- package/KubeX/Tools/Gitea/GiteaRunner.js +37 -0
- package/KubeX/Tools/Gitea/GiteaRunner.v1.d.ts +11 -0
- package/KubeX/Tools/Gitea/GiteaRunner.v1.js +123 -0
- package/KubeX/Tools/HarborRepo.d.ts +29 -0
- package/KubeX/Tools/HarborRepo.js +78 -0
- package/KubeX/Tools/HelloWorld.d.ts +3 -0
- package/KubeX/Tools/HelloWorld.js +21 -0
- package/KubeX/Tools/KubeCleanup.d.ts +9 -0
- package/KubeX/Tools/KubeCleanup.js +34 -0
- package/KubeX/Tools/NoIp.d.ts +13 -0
- package/KubeX/Tools/NoIp.js +24 -0
- package/KubeX/Tools/OpenLDAP/index.d.ts +12 -0
- package/KubeX/Tools/OpenLDAP/index.js +56 -0
- package/KubeX/Tools/OutlineVpn/index.d.ts +25 -0
- package/KubeX/Tools/OutlineVpn/index.js +256 -0
- package/KubeX/Tools/SqlPad.d.ts +29 -0
- package/KubeX/Tools/SqlPad.js +133 -0
- package/KubeX/Tools/ToolPod.d.ts +10 -0
- package/KubeX/Tools/ToolPod.js +40 -0
- package/KubeX/Tools/UptimeKuma.d.ts +6 -0
- package/KubeX/Tools/UptimeKuma.js +38 -0
- package/KubeX/Tools/index.d.ts +27 -0
- package/KubeX/Tools/index.js +35 -0
- package/KubeX/VairableResolvers/index.d.ts +15 -0
- package/KubeX/VairableResolvers/index.js +49 -0
- package/KubeX/kx/index.d.ts +114 -0
- package/KubeX/kx/index.js +423 -0
- package/KubeX/types.d.ts +49 -0
- package/KubeX/types.js +3 -0
- package/Logs/AppInsight.d.ts +16 -0
- package/Logs/AppInsight.js +48 -0
- package/Logs/Helpers.d.ts +50 -0
- package/Logs/Helpers.js +95 -0
- package/Logs/LogAnalytics.d.ts +17 -0
- package/Logs/LogAnalytics.js +54 -0
- package/Logs/WebTest.d.ts +13 -0
- package/Logs/WebTest.js +68 -0
- package/Logs/index.d.ts +42 -0
- package/Logs/index.js +69 -0
- package/MySql/index.d.ts +20 -0
- package/MySql/index.js +93 -0
- package/Postgresql/index.d.ts +20 -0
- package/Postgresql/index.js +93 -0
- package/ReadMe.md +36 -0
- package/RedisCache/index.d.ts +9 -0
- package/RedisCache/index.js +79 -0
- package/ServiceBus/ServiceBusHelper.d.ts +21 -0
- package/ServiceBus/ServiceBusHelper.js +35 -0
- package/ServiceBus/index.d.ts +98 -0
- package/ServiceBus/index.js +396 -0
- package/SignalR/index.d.ts +20 -0
- package/SignalR/index.js +114 -0
- package/Sql/Auditing.d.ts +0 -0
- package/Sql/Auditing.js +2 -0
- package/Sql/Helper.d.ts +9 -0
- package/Sql/Helper.js +11 -0
- package/Sql/SqlDb.d.ts +14 -0
- package/Sql/SqlDb.js +42 -0
- package/Sql/index.d.ts +44 -0
- package/Sql/index.js +236 -0
- package/Storage/CdnEndpoint.d.ts +12 -0
- package/Storage/CdnEndpoint.js +62 -0
- package/Storage/CdnRules.d.ts +6 -0
- package/Storage/CdnRules.js +134 -0
- package/Storage/Helper.d.ts +28 -0
- package/Storage/Helper.js +66 -0
- package/Storage/ManagementRules.d.ts +70 -0
- package/Storage/ManagementRules.js +32 -0
- package/Storage/index.d.ts +55 -0
- package/Storage/index.js +264 -0
- package/VM/index.d.ts +37 -0
- package/VM/index.js +138 -0
- package/VNet/Bastion.d.ts +8 -0
- package/VNet/Bastion.js +30 -0
- package/VNet/Firewall.d.ts +27 -0
- package/VNet/Firewall.js +87 -0
- package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +20 -0
- package/VNet/FirewallPolicies/AksFirewallPolicy.js +241 -0
- package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +14 -0
- package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +303 -0
- package/VNet/FirewallPolicy.d.ts +28 -0
- package/VNet/FirewallPolicy.js +110 -0
- package/VNet/FirewallRules/AksFirewallRules.d.ts +24 -0
- package/VNet/FirewallRules/AksFirewallRules.js +250 -0
- package/VNet/FirewallRules/DefaultRules.d.ts +2 -0
- package/VNet/FirewallRules/DefaultRules.js +23 -0
- package/VNet/FirewallRules/types.d.ts +20 -0
- package/VNet/FirewallRules/types.js +5 -0
- package/VNet/GlobalNetworkPeering.d.ts +9 -0
- package/VNet/GlobalNetworkPeering.js +17 -0
- package/VNet/Helper.d.ts +33 -0
- package/VNet/Helper.js +86 -0
- package/VNet/IpAddress.d.ts +17 -0
- package/VNet/IpAddress.js +38 -0
- package/VNet/IpAddressPrefix.d.ts +22 -0
- package/VNet/IpAddressPrefix.js +42 -0
- package/VNet/NSGRules/AzADService.d.ts +10 -0
- package/VNet/NSGRules/AzADService.js +45 -0
- package/VNet/NetworkPeering.d.ts +10 -0
- package/VNet/NetworkPeering.js +29 -0
- package/VNet/PrivateDns.d.ts +33 -0
- package/VNet/PrivateDns.js +64 -0
- package/VNet/PrivateEndpoint.d.ts +9 -0
- package/VNet/PrivateEndpoint.js +71 -0
- package/VNet/PublicDns.d.ts +21 -0
- package/VNet/PublicDns.js +59 -0
- package/VNet/RouteTable.d.ts +13 -0
- package/VNet/RouteTable.js +23 -0
- package/VNet/SecurityGroup.d.ts +8 -0
- package/VNet/SecurityGroup.js +13 -0
- package/VNet/Subnet.d.ts +26 -0
- package/VNet/Subnet.js +48 -0
- package/VNet/VirtualWAN.d.ts +25 -0
- package/VNet/VirtualWAN.js +40 -0
- package/VNet/Vnet.d.ts +51 -0
- package/VNet/Vnet.js +196 -0
- package/VNet/index.d.ts +65 -0
- package/VNet/index.js +198 -0
- package/Web/AppCertOrder.d.ts +16 -0
- package/Web/AppCertOrder.js +34 -0
- package/Web/AppConfig.d.ts +16 -0
- package/Web/AppConfig.js +79 -0
- package/Web/AppGateway.d.ts +15 -0
- package/Web/AppGateway.js +32 -0
- package/Web/FuncApp.d.ts +12 -0
- package/Web/FuncApp.js +24 -0
- package/Web/Helpers.d.ts +6 -0
- package/Web/Helpers.js +36 -0
- package/Web/WebAppPlan.d.ts +7 -0
- package/Web/WebAppPlan.js +26 -0
- package/Web/types.d.ts +169 -0
- package/Web/types.js +3 -0
- package/package.json +34 -0
- package/types.d.ts +69 -0
- package/types.js +3 -0
- package/z_tests/_tools/Mocks.d.ts +2 -0
- package/z_tests/_tools/Mocks.js +47 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const k8s = require("@pulumi/kubernetes");
|
|
4
|
+
const pulumi_1 = require("@pulumi/pulumi");
|
|
5
|
+
const Random_1 = require("../../../Core/Random");
|
|
6
|
+
const Identity_1 = require("../../../AzAd/Identity");
|
|
7
|
+
const Role_1 = require("../../../AzAd/Role");
|
|
8
|
+
const AzureEnv_1 = require("../../../Common/AzureEnv");
|
|
9
|
+
const getCaptchaPrefixKey = (captcha) => captcha.type === 'cfturnstile' ? 'CF_TURNSTILE' : captcha.type.toUpperCase();
|
|
10
|
+
const createAzureADIdentity = ({ name, host, vaultInfo, groupMap, }) => {
|
|
11
|
+
//Create 2 Groups for Admin and Users
|
|
12
|
+
const adminGroup = (0, Role_1.default)({
|
|
13
|
+
env: AzureEnv_1.Environments.Dev,
|
|
14
|
+
appName: name,
|
|
15
|
+
roleName: 'Admins',
|
|
16
|
+
includeOrganization: true,
|
|
17
|
+
});
|
|
18
|
+
const devGroup = (0, Role_1.default)({
|
|
19
|
+
env: AzureEnv_1.Environments.Dev,
|
|
20
|
+
appName: name,
|
|
21
|
+
roleName: 'Developers',
|
|
22
|
+
includeOrganization: true,
|
|
23
|
+
members: groupMap
|
|
24
|
+
? [adminGroup.objectId, ...groupMap.map((g) => g.azureGroupId)]
|
|
25
|
+
: [adminGroup.objectId],
|
|
26
|
+
});
|
|
27
|
+
const identity = (0, Identity_1.default)({
|
|
28
|
+
name,
|
|
29
|
+
appRoleAssignmentRequired: false,
|
|
30
|
+
createPrincipal: false,
|
|
31
|
+
createClientSecret: true,
|
|
32
|
+
appType: 'web',
|
|
33
|
+
replyUrls: [`https://${host}/user/oauth2/AzureAD/callback`],
|
|
34
|
+
vaultInfo,
|
|
35
|
+
optionalClaims: {
|
|
36
|
+
idTokens: [{ name: 'groups', essential: false }],
|
|
37
|
+
accessTokens: [{ name: 'groups', essential: false }],
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
const groupTeamMap = groupMap
|
|
41
|
+
? (0, pulumi_1.output)(groupMap).apply((gs) => {
|
|
42
|
+
const rs = {};
|
|
43
|
+
gs.forEach((g) => {
|
|
44
|
+
rs[g.azureGroupId] = { [g.giteaOrganization]: [g.giteaTeam] };
|
|
45
|
+
});
|
|
46
|
+
return JSON.stringify(rs);
|
|
47
|
+
})
|
|
48
|
+
: undefined;
|
|
49
|
+
return { adminGroup, devGroup, groupTeamMap, identity };
|
|
50
|
+
};
|
|
51
|
+
// https://github.com/go-gitea/gitea
|
|
52
|
+
// https://gitea.com/gitea/helm-chart
|
|
53
|
+
exports.default = ({ name = 'gitea', namespace, host, auth = { disableRegistration: true }, captcha, storageClass, postgres, enabledActions, vaultInfo, provider, dependsOn, }) => {
|
|
54
|
+
const randomPassOptions = {
|
|
55
|
+
length: 16,
|
|
56
|
+
options: { special: false },
|
|
57
|
+
policy: false,
|
|
58
|
+
vaultInfo,
|
|
59
|
+
};
|
|
60
|
+
const captchaConfig = captcha
|
|
61
|
+
? {
|
|
62
|
+
CAPTCHA_TYPE: captcha.type,
|
|
63
|
+
[`${getCaptchaPrefixKey(captcha)}_SITEKEY`]: captcha.siteKey,
|
|
64
|
+
[`${getCaptchaPrefixKey(captcha)}_SECRET`]: captcha.secret,
|
|
65
|
+
[`${getCaptchaPrefixKey(captcha)}_URL`]: captcha.url ?? '',
|
|
66
|
+
}
|
|
67
|
+
: {};
|
|
68
|
+
const identityInfo = auth?.enableAzureAD
|
|
69
|
+
? createAzureADIdentity({
|
|
70
|
+
name,
|
|
71
|
+
host,
|
|
72
|
+
vaultInfo,
|
|
73
|
+
groupMap: auth.enableAzureAD.groupMap,
|
|
74
|
+
})
|
|
75
|
+
: undefined;
|
|
76
|
+
const gitea = new k8s.helm.v3.Chart(name, {
|
|
77
|
+
namespace,
|
|
78
|
+
chart: 'gitea',
|
|
79
|
+
fetchOpts: { repo: 'https://dl.gitea.com/charts' },
|
|
80
|
+
values: {
|
|
81
|
+
gitea: {
|
|
82
|
+
admin: auth?.localAdmin
|
|
83
|
+
? {
|
|
84
|
+
username: auth.localAdmin.username,
|
|
85
|
+
email: auth.localAdmin.email,
|
|
86
|
+
password: (0, Random_1.randomPassword)({
|
|
87
|
+
name: `${name}-admin`,
|
|
88
|
+
...randomPassOptions,
|
|
89
|
+
}).result,
|
|
90
|
+
}
|
|
91
|
+
: undefined,
|
|
92
|
+
oauth: identityInfo
|
|
93
|
+
? [
|
|
94
|
+
{
|
|
95
|
+
name: 'AzureAD',
|
|
96
|
+
iconUrl: 'https://code.benco.io/icon-collection/azure-icons/Azure-AD-B2C.svg',
|
|
97
|
+
provider: 'openidConnect',
|
|
98
|
+
key: identityInfo.identity.clientId,
|
|
99
|
+
secret: identityInfo.identity.clientSecret,
|
|
100
|
+
autoDiscoverUrl: (0, pulumi_1.interpolate) `https://login.microsoftonline.com/${AzureEnv_1.tenantId}/v2.0/.well-known/openid-configuration`,
|
|
101
|
+
requiredClaimName: 'groups',
|
|
102
|
+
requiredClaimValue: identityInfo.devGroup.objectId,
|
|
103
|
+
scopes: 'openid email',
|
|
104
|
+
groupClaimName: 'groups',
|
|
105
|
+
adminGroup: identityInfo.adminGroup.objectId,
|
|
106
|
+
groupTeamMap: identityInfo.groupTeamMap,
|
|
107
|
+
},
|
|
108
|
+
]
|
|
109
|
+
: auth?.oauth
|
|
110
|
+
? [{ provider: 'openidConnect', ...auth.oauth }]
|
|
111
|
+
: undefined,
|
|
112
|
+
ldap: auth?.ldap,
|
|
113
|
+
config: {
|
|
114
|
+
actions: { ENABLED: `${Boolean(enabledActions)}` },
|
|
115
|
+
admin: {
|
|
116
|
+
DISABLE_REGULAR_ORG_CREATION: 'true', //Only Admin able to create new Organization
|
|
117
|
+
},
|
|
118
|
+
oauth2_client: {
|
|
119
|
+
ENABLE_AUTO_REGISTRATION: 'true',
|
|
120
|
+
ACCOUNT_LINKING: 'auto',
|
|
121
|
+
UPDATE_AVATAR: 'true',
|
|
122
|
+
OPENID_CONNECT_SCOPES: 'openid email',
|
|
123
|
+
USERNAME: 'email',
|
|
124
|
+
},
|
|
125
|
+
openid: {
|
|
126
|
+
ENABLE_OPENID_SIGNIN: 'false',
|
|
127
|
+
ENABLE_OPENID_SIGNUP: 'true',
|
|
128
|
+
WHITELISTED_URIS: 'login.microsoftonline.com google.com',
|
|
129
|
+
},
|
|
130
|
+
database: {
|
|
131
|
+
DB_TYPE: 'postgres',
|
|
132
|
+
HOST: (0, pulumi_1.interpolate) `${postgres.host}:${postgres.port}`,
|
|
133
|
+
NAME: postgres.database,
|
|
134
|
+
USER: postgres.username,
|
|
135
|
+
PASSWD: postgres.password,
|
|
136
|
+
SCHEMA: 'public',
|
|
137
|
+
},
|
|
138
|
+
service: {
|
|
139
|
+
ENABLE_CAPTCHA: `${Boolean(captchaConfig)}`,
|
|
140
|
+
REQUIRE_CAPTCHA_FOR_LOGIN: `${Boolean(captchaConfig)}`,
|
|
141
|
+
...captchaConfig,
|
|
142
|
+
DISABLE_REGISTRATION: auth?.disableRegistration
|
|
143
|
+
? 'true'
|
|
144
|
+
: 'false',
|
|
145
|
+
ENABLE_BASIC_AUTHENTICATION: 'false', // `${Boolean(auth?.localAdmin)}`,
|
|
146
|
+
ALLOW_ONLY_EXTERNAL_REGISTRATION: 'true',
|
|
147
|
+
DEFAULT_ALLOW_CREATE_ORGANIZATION: 'true', //only Admin able to create Organization
|
|
148
|
+
SHOW_REGISTRATION_BUTTON: 'false',
|
|
149
|
+
},
|
|
150
|
+
server: {
|
|
151
|
+
DISABLE_SSH: 'true',
|
|
152
|
+
START_SSH_SERVER: 'false',
|
|
153
|
+
//APP_DATA_PATH = /data
|
|
154
|
+
DOMAIN: host,
|
|
155
|
+
HTTP_PORT: '3000',
|
|
156
|
+
PROTOCOL: 'http',
|
|
157
|
+
ROOT_URL: `https://${host}`,
|
|
158
|
+
SSH_DOMAIN: host,
|
|
159
|
+
SSH_LISTEN_PORT: '22',
|
|
160
|
+
SSH_PORT: '22',
|
|
161
|
+
ENABLE_PPROF: 'false',
|
|
162
|
+
DISABLE_REGISTRATION: auth?.disableRegistration
|
|
163
|
+
? 'true'
|
|
164
|
+
: 'false',
|
|
165
|
+
},
|
|
166
|
+
session: {
|
|
167
|
+
SAME_SITE: 'lax',
|
|
168
|
+
COOKIE_SECURE: 'true',
|
|
169
|
+
COOKIE_NAME: 'gitea_session',
|
|
170
|
+
DOMAIN: host,
|
|
171
|
+
},
|
|
172
|
+
repository: { DEFAULT_PRIVATE: 'true', FORCE_PRIVATE: 'true' },
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
'redis-cluster': { enabled: false },
|
|
176
|
+
postgresql: { enabled: false },
|
|
177
|
+
'postgresql-ha': { enabled: false },
|
|
178
|
+
persistence: { enabled: true, storageClass },
|
|
179
|
+
strategy: { type: 'Recreate' },
|
|
180
|
+
},
|
|
181
|
+
}, { provider, dependsOn });
|
|
182
|
+
return gitea;
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2l0ZWFSZXBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0t1YmVYL1Rvb2xzL0dpdGVhL0dpdGVhUmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDBDQUEwQztBQUMxQywyQ0FBNEQ7QUFDNUQsaURBQXNEO0FBRXRELHFEQUFxRDtBQUNyRCw2Q0FBNkM7QUFDN0MsdURBQWtFO0FBaUJsRSxNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBb0IsRUFBRSxFQUFFLENBQ25ELE9BQU8sQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFL0UsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEVBQzdCLElBQUksRUFDSixJQUFJLEVBQ0osU0FBUyxFQUNULFFBQVEsR0FNVCxFQUFFLEVBQUU7SUFDSCxxQ0FBcUM7SUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBQSxjQUFXLEVBQUM7UUFDN0IsR0FBRyxFQUFFLHVCQUFZLENBQUMsR0FBRztRQUNyQixPQUFPLEVBQUUsSUFBSTtRQUNiLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLG1CQUFtQixFQUFFLElBQUk7S0FDMUIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsSUFBQSxjQUFXLEVBQUM7UUFDM0IsR0FBRyxFQUFFLHVCQUFZLENBQUMsR0FBRztRQUNyQixPQUFPLEVBQUUsSUFBSTtRQUNiLFFBQVEsRUFBRSxZQUFZO1FBQ3RCLG1CQUFtQixFQUFFLElBQUk7UUFDekIsT0FBTyxFQUFFLFFBQVE7WUFDZixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DefaultK8sArgs } from '../../types';
|
|
2
|
+
import { Input } from '@pulumi/pulumi';
|
|
3
|
+
import * as k8s from '@pulumi/kubernetes';
|
|
4
|
+
interface GiteaRunnerProps extends DefaultK8sArgs {
|
|
5
|
+
storageClassName: Input<string>;
|
|
6
|
+
giteaUrl?: Input<string>;
|
|
7
|
+
giteaToken: Input<string>;
|
|
8
|
+
labels?: Input<string>;
|
|
9
|
+
}
|
|
10
|
+
declare const _default: ({ name, namespace, storageClassName, labels, giteaUrl, giteaToken, resources, ...others }: GiteaRunnerProps) => k8s.helm.v3.Chart;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const k8s = require("@pulumi/kubernetes");
|
|
4
|
+
//https://github.com/kha7iq/charts/tree/main/charts/act-runner
|
|
5
|
+
exports.default = ({ name = 'gitea-runner', namespace, storageClassName, labels, giteaUrl, giteaToken,
|
|
6
|
+
//enabledDind = true,
|
|
7
|
+
resources, ...others }) => {
|
|
8
|
+
const env = [
|
|
9
|
+
{ name: 'DOCKER_HOST', value: 'tcp://localhost:2376' },
|
|
10
|
+
{ name: 'DOCKER_CERT_PATH', value: '/certs/client' },
|
|
11
|
+
{ name: 'DOCKER_TLS_VERIFY', value: '1' },
|
|
12
|
+
{ name: 'GITEA_RUNNER_NAME', value: name },
|
|
13
|
+
{ name: 'VALID_VOLUMES', value: '**' },
|
|
14
|
+
{ name: 'NETWORK', value: 'bridge' },
|
|
15
|
+
];
|
|
16
|
+
if (labels) {
|
|
17
|
+
env.push({
|
|
18
|
+
name: 'GITEA_RUNNER_LABELS',
|
|
19
|
+
value: `${labels},ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster`,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return new k8s.helm.v3.Chart(name, {
|
|
23
|
+
namespace,
|
|
24
|
+
chart: 'act-runner',
|
|
25
|
+
fetchOpts: { repo: 'https://charts.lmno.pk' },
|
|
26
|
+
values: {
|
|
27
|
+
env,
|
|
28
|
+
runner: {
|
|
29
|
+
instanceURL: giteaUrl,
|
|
30
|
+
runnerToken: { value: giteaToken },
|
|
31
|
+
dockerDind: { enabled: true },
|
|
32
|
+
},
|
|
33
|
+
persistence: { storageClassName },
|
|
34
|
+
},
|
|
35
|
+
}, others);
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2l0ZWFSdW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvS3ViZVgvVG9vbHMvR2l0ZWEvR2l0ZWFSdW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSwwQ0FBMEM7QUFXMUMsOERBQThEO0FBQzlELGtCQUFlLENBQUMsRUFDZCxJQUFJLEdBQUcsY0FBYyxFQUNyQixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVTtBQUNWLHFCQUFxQjtBQUNyQixTQUFTLEVBQ1QsR0FBRyxNQUFNLEVBQ1EsRUFBRSxFQUFFO0lBQ3JCLE1BQU0sR0FBRyxHQUFHO1FBQ1YsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtRQUN0RCxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1FBQ3BELEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDekMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtRQUMxQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtRQUN0QyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtLQUNyQyxDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLEtBQUssRUFBRSxHQUFHLE1BQU0sNkpBQTZKO1NBQzlLLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUMxQixJQUFJLEVBQ0o7UUFDRSxTQUFTO1FBQ1QsS0FBSyxFQUFFLFlBQVk7UUFDbkIsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFO1FBRTdDLE1BQU0sRUFBRTtZQUNOLEdBQUc7WUFDSCxNQUFNLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ2xDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7YUFDOUI7WUFDRCxXQUFXLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRTtTQUNsQztLQUNGLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DefaultK8sArgs } from '../../types';
|
|
2
|
+
import { Input } from '@pulumi/pulumi';
|
|
3
|
+
interface GiteaRunnerProps extends DefaultK8sArgs {
|
|
4
|
+
storageClassName: Input<string>;
|
|
5
|
+
giteaUrl?: Input<string>;
|
|
6
|
+
giteaToken: Input<string>;
|
|
7
|
+
labels?: Input<string>;
|
|
8
|
+
storageGb?: number;
|
|
9
|
+
}
|
|
10
|
+
declare const _default: ({ name, namespace, storageClassName, labels, storageGb, giteaUrl, giteaToken, resources, ...others }: GiteaRunnerProps) => import("@pulumi/kubernetes/apps/v1/deployment").Deployment;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const kubernetes_1 = require("@pulumi/kubernetes");
|
|
4
|
+
const Storage_1 = require("../../Storage");
|
|
5
|
+
const KsSecret_1 = require("../../Core/KsSecret");
|
|
6
|
+
exports.default = ({ name = 'gitea-runner', namespace, storageClassName, labels, storageGb = 10, giteaUrl, giteaToken, resources, ...others }) => {
|
|
7
|
+
const userId = 1000;
|
|
8
|
+
const dockerSock = `/run/user/${userId}/docker.sock`;
|
|
9
|
+
const persisVolume = (0, Storage_1.createPVCForStorageClass)({
|
|
10
|
+
name,
|
|
11
|
+
namespace,
|
|
12
|
+
accessMode: 'ReadWriteOnce',
|
|
13
|
+
storageGb: `${storageGb}Gi`,
|
|
14
|
+
storageClassName,
|
|
15
|
+
...others,
|
|
16
|
+
});
|
|
17
|
+
const env = [
|
|
18
|
+
{
|
|
19
|
+
name: 'DOCKER_HOST',
|
|
20
|
+
value: `unix://${dockerSock}`,
|
|
21
|
+
},
|
|
22
|
+
// {
|
|
23
|
+
// name: 'DOCKER_CERT_PATH',
|
|
24
|
+
// value: '/certs/client',
|
|
25
|
+
// },
|
|
26
|
+
// {
|
|
27
|
+
// name: 'DOCKER_TLS_VERIFY',
|
|
28
|
+
// value: '0',
|
|
29
|
+
// },
|
|
30
|
+
{
|
|
31
|
+
name: 'GITEA_RUNNER_NAME',
|
|
32
|
+
value: name,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'GITEA_INSTANCE_URL',
|
|
36
|
+
value: giteaUrl,
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
if (labels) {
|
|
40
|
+
env.push({
|
|
41
|
+
name: 'GITEA_RUNNER_LABELS',
|
|
42
|
+
value: `${labels},ubuntu-latest:docker://catthehacker/ubuntu:runner-22.04,ubuntu-22.04:docker://catthehacker/ubuntu:runner-22.04,ubuntu-20.04:docker://catthehacker/ubuntu:runner-20.04`,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else
|
|
46
|
+
env.push({
|
|
47
|
+
name: 'GITEA_RUNNER_LABELS',
|
|
48
|
+
value: 'ubuntu-latest:docker://catthehacker/ubuntu:runner-22.04,ubuntu-22.04:docker://catthehacker/ubuntu:runner-22.04,ubuntu-20.04:docker://catthehacker/ubuntu:runner-20.04',
|
|
49
|
+
});
|
|
50
|
+
const secret = (0, KsSecret_1.default)({
|
|
51
|
+
name,
|
|
52
|
+
namespace,
|
|
53
|
+
stringData: {
|
|
54
|
+
GITEA_RUNNER_REGISTRATION_TOKEN: giteaToken,
|
|
55
|
+
},
|
|
56
|
+
...others,
|
|
57
|
+
});
|
|
58
|
+
return new kubernetes_1.apps.v1.Deployment(name, {
|
|
59
|
+
metadata: {
|
|
60
|
+
name,
|
|
61
|
+
namespace,
|
|
62
|
+
labels: { app: name },
|
|
63
|
+
},
|
|
64
|
+
spec: {
|
|
65
|
+
replicas: 1,
|
|
66
|
+
selector: { matchLabels: { app: name } },
|
|
67
|
+
strategy: {},
|
|
68
|
+
template: {
|
|
69
|
+
metadata: { labels: { app: name } },
|
|
70
|
+
spec: {
|
|
71
|
+
securityContext: {
|
|
72
|
+
runAsUser: userId,
|
|
73
|
+
runAsGroup: userId,
|
|
74
|
+
fsGroup: userId,
|
|
75
|
+
},
|
|
76
|
+
containers: [
|
|
77
|
+
{
|
|
78
|
+
command: [
|
|
79
|
+
'sh',
|
|
80
|
+
'-c',
|
|
81
|
+
`(sleep 10 && chmod a+rwx ${dockerSock}) & /usr/bin/supervisord -c /etc/supervisord.conf`,
|
|
82
|
+
],
|
|
83
|
+
image: 'gitea/act_runner:nightly-dind-rootless',
|
|
84
|
+
name: 'runner',
|
|
85
|
+
env,
|
|
86
|
+
envFrom: [
|
|
87
|
+
{
|
|
88
|
+
secretRef: {
|
|
89
|
+
name: secret.metadata.name,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
securityContext: {
|
|
94
|
+
privileged: true,
|
|
95
|
+
},
|
|
96
|
+
volumeMounts: [
|
|
97
|
+
{
|
|
98
|
+
mountPath: '/data',
|
|
99
|
+
name: 'runner-data',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
resources: {
|
|
103
|
+
requests: {
|
|
104
|
+
'ephemeral-storage': '10Gi',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
restartPolicy: 'Always',
|
|
110
|
+
volumes: [
|
|
111
|
+
{
|
|
112
|
+
name: 'runner-data',
|
|
113
|
+
persistentVolumeClaim: {
|
|
114
|
+
claimName: persisVolume.metadata.name,
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
}, others);
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2l0ZWFSdW5uZXIudjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvS3ViZVgvVG9vbHMvR2l0ZWEvR2l0ZWFSdW5uZXIudjEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtREFBMEM7QUFFMUMsMkNBQXlEO0FBRXpELGtEQUEyQztBQVczQyxrQkFBZSxDQUFDLEVBQ2QsSUFBSSxHQUFHLGNBQWMsRUFDckIsU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEVBQ04sU0FBUyxHQUFHLEVBQUUsRUFDZCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFNBQVMsRUFDVCxHQUFHLE1BQU0sRUFDUSxFQUFFLEVBQUU7SUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLE1BQU0sVUFBVSxHQUFHLGFBQWEsTUFBTSxjQUFjLENBQUM7SUFFckQsTUFBTSxZQUFZLEdBQUcsSUFBQSxrQ0FBd0IsRUFBQztRQUM1QyxJQUFJO1FBQ0osU0FBUztRQUNULFVBQVUsRUFBRSxlQUFlO1FBQzNCLFNBQVMsRUFBRSxHQUFHLFNBQVMsSUFBSTtRQUMzQixnQkFBZ0I7UUFDaEIsR0FBRyxNQUFNO0tBQ1YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxHQUFHLEdBQUc7UUFDVjtZQUNFLElBQUksRUFBRSxhQUFhO1lBQ25CLEtBQUssRUFBRSxVQUFVLFVBQVUsRUFBRTtTQUM5QjtRQUNELElBQUk7UUFDSiw4QkFBOEI7UUFDOUIsNEJBQTRCO1FBQzVCLEtBQUs7UUFDTCxJQUFJO1FBQ0osK0JBQStCO1FBQy9CLGdCQUFnQjtRQUNoQixLQUFLO1FBQ0w7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRDtZQUNFLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsS0FBSyxFQUFFLFFBQVE7U0FDaEI7S0FDRixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLEtBQUssRUFBRSxHQUFHLE1BQU0sd0tBQXdLO1NBQ3pMLENBQUMsQ0FBQztJQUNMLENBQUM7O1FBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsS0FBSyxFQUNILHVLQUF1SztTQUMxSyxDQUFDLENBQUM7SUFFTCxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFRLEVBQUM7UUFDdEIsSUFBSTtRQUNKLFNBQVM7UUFDVCxVQUFVLEVBQUU7WUFDViwrQkFBK0IsRUFBRSxVQUFVO1NBQzVDO1FBQ0QsR0FBRyxNQUFNO0tBQ1YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLGlCQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FDM0IsSUFBSSxFQUNKO1FBQ0UsUUFBUSxFQUFFO1lBQ1IsSUFBSTtZQUNKLFNBQVM7WUFDVCxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1NBQ3RCO1FBQ0QsSUFBSSxFQUFFO1lBQ0osUUFBUSxFQUFFLENBQUM7WUFDWCxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDeEMsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNuQyxJQUFJLEVBQUU7b0JBQ0osZUFBZSxFQUFFO3dCQUNmLFNBQVMsRUFBRSxNQUFNO3dCQUNqQixVQUFVLEVBQUUsTUFBTTt3QkFDbEIsT0FBTyxFQUFFLE1BQU07cUJBQ2hCO29CQUNELFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxPQUFPLEVBQUU7Z0NBQ1AsSUFBSTtnQ0FDSixJQUFJO2dDQUNKLDRCQUE0QixVQUFVLG1EQUFtRDs2QkFDMUY7NEJBQ0QsS0FBSyxFQUFFLHdDQUF3Qzs0QkFDL0MsSUFBSSxFQUFFLFFBQVE7NEJBRWQsR0FBRzs0QkFDSCxPQUFPLEVBQUU7Z0NBQ1A7b0NBQ0UsU0FBUyxFQUFFO3dDQUNULElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7cUNBQzNCO2lDQUNGOzZCQUNGOzRCQUNELGVBQWUsRUFBRTtnQ0FDZixVQUFVLEVBQUUsSUFBSTs2QkFDakI7NEJBQ0QsWUFBWSxFQUFFO2dDQUNaO29DQUNFLFNBQVMsRUFBRSxPQUFPO29DQUNsQixJQUFJLEVBQUUsYUFBYTtpQ0FDcEI7NkJBQ0Y7NEJBRUQsU0FBUyxFQUFFO2dDQUNULFFBQVEsRUFBRTtvQ0FDUixtQkFBbUIsRUFBRSxNQUFNO2lDQUM1Qjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxhQUFhLEVBQUUsUUFBUTtvQkFDdkIsT0FBTyxFQUFFO3dCQUNQOzRCQUNFLElBQUksRUFBRSxhQUFhOzRCQUNuQixxQkFBcUIsRUFBRTtnQ0FDckIsU0FBUyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSTs2QkFDdEM7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsRUFDRCxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DefaultK8sArgs } from '../types';
|
|
2
|
+
import * as k8s from '@pulumi/kubernetes';
|
|
3
|
+
import { Input } from '@pulumi/pulumi';
|
|
4
|
+
import { KeyVaultInfo } from '../../types';
|
|
5
|
+
interface HarborRepoProps extends DefaultK8sArgs {
|
|
6
|
+
vaultInfo?: KeyVaultInfo;
|
|
7
|
+
externalURL: string;
|
|
8
|
+
coreURL: string;
|
|
9
|
+
notaryURL: string;
|
|
10
|
+
tlsSecretName: string;
|
|
11
|
+
storageClass: Input<string>;
|
|
12
|
+
accessMode?: 'ReadWriteMany' | 'ReadWriteOnce';
|
|
13
|
+
postgres: {
|
|
14
|
+
host: Input<string>;
|
|
15
|
+
port: Input<number>;
|
|
16
|
+
coreDatabase: Input<string>;
|
|
17
|
+
username: Input<string>;
|
|
18
|
+
password: Input<string>;
|
|
19
|
+
sslmode?: boolean;
|
|
20
|
+
};
|
|
21
|
+
redis?: {
|
|
22
|
+
addr: Input<string>;
|
|
23
|
+
port: Input<number>;
|
|
24
|
+
username: Input<string>;
|
|
25
|
+
password: Input<string>;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
declare const _default: ({ name, namespace, externalURL, coreURL, notaryURL, tlsSecretName, storageClass, accessMode, postgres, redis, vaultInfo, provider, dependsOn, }: HarborRepoProps) => k8s.helm.v3.Chart;
|
|
29
|
+
export default _default;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const k8s = require("@pulumi/kubernetes");
|
|
4
|
+
const Random_1 = require("../../Core/Random");
|
|
5
|
+
//https://github.com/goharbor/harbor-helm
|
|
6
|
+
exports.default = ({ name = 'harbor', namespace, externalURL, coreURL, notaryURL, tlsSecretName, storageClass, accessMode = 'ReadWriteOnce', postgres, redis, vaultInfo, provider, dependsOn, }) => {
|
|
7
|
+
const redisType = redis ? 'external' : 'internal';
|
|
8
|
+
const randomPassOptions = {
|
|
9
|
+
length: 16,
|
|
10
|
+
options: { special: false },
|
|
11
|
+
policy: false,
|
|
12
|
+
vaultInfo,
|
|
13
|
+
};
|
|
14
|
+
const harbor = new k8s.helm.v3.Chart(name, {
|
|
15
|
+
namespace,
|
|
16
|
+
chart: 'harbor',
|
|
17
|
+
fetchOpts: { repo: 'https://helm.goharbor.io' },
|
|
18
|
+
values: {
|
|
19
|
+
expose: {
|
|
20
|
+
type: 'clusterIP', // ingress, clusterIP, nodePort, loadBalancer
|
|
21
|
+
tls: { auto: { commonName: externalURL.replace('https://', '') } },
|
|
22
|
+
ingress: {
|
|
23
|
+
hosts: {
|
|
24
|
+
core: coreURL,
|
|
25
|
+
notary: notaryURL,
|
|
26
|
+
secretName: tlsSecretName,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
externalURL,
|
|
31
|
+
//Admin Password
|
|
32
|
+
harborAdminPassword: (0, Random_1.randomPassword)({
|
|
33
|
+
name: `${name}-admin`,
|
|
34
|
+
...randomPassOptions,
|
|
35
|
+
}).result,
|
|
36
|
+
// secret: randomPassword({
|
|
37
|
+
// name: `${name}-secret`,
|
|
38
|
+
// ...randomPassOptions,
|
|
39
|
+
// }).result,
|
|
40
|
+
//Secret key for encryption mus be 16 characters
|
|
41
|
+
secretKey: (0, Random_1.randomPassword)({
|
|
42
|
+
name: `${name}-secretKey`,
|
|
43
|
+
...randomPassOptions,
|
|
44
|
+
}).result,
|
|
45
|
+
trivy: { enabled: true },
|
|
46
|
+
database: { type: 'external', external: postgres },
|
|
47
|
+
redis: {
|
|
48
|
+
type: redisType,
|
|
49
|
+
external: redis,
|
|
50
|
+
internal: redisType === 'internal' ? {} : undefined,
|
|
51
|
+
},
|
|
52
|
+
persistence: {
|
|
53
|
+
persistentVolumeClaim: {
|
|
54
|
+
registry: {
|
|
55
|
+
storageClass,
|
|
56
|
+
accessMode,
|
|
57
|
+
},
|
|
58
|
+
chartmuseum: {
|
|
59
|
+
storageClass,
|
|
60
|
+
accessMode,
|
|
61
|
+
},
|
|
62
|
+
jobservice: {
|
|
63
|
+
storageClass,
|
|
64
|
+
accessMode,
|
|
65
|
+
},
|
|
66
|
+
redis: redisType === 'internal'
|
|
67
|
+
? {
|
|
68
|
+
storageClass,
|
|
69
|
+
accessMode,
|
|
70
|
+
}
|
|
71
|
+
: undefined,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
}, { provider, dependsOn });
|
|
76
|
+
return harbor;
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFyYm9yUmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9LdWJlWC9Ub29scy9IYXJib3JSZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMENBQTBDO0FBRTFDLDhDQUFtRDtBQTZCbkQseUNBQXlDO0FBQ3pDLGtCQUFlLENBQUMsRUFDZCxJQUFJLEdBQUcsUUFBUSxFQUNmLFNBQVMsRUFFVCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFDVCxhQUFhLEVBRWIsWUFBWSxFQUNaLFVBQVUsR0FBRyxlQUFlLEVBQzVCLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEdBQ08sRUFBRSxFQUFFO0lBQ3BCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRztRQUN4QixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFDM0IsTUFBTSxFQUFFLEtBQUs7UUFDYixTQUFTO0tBQ1YsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUNsQyxJQUFJLEVBQ0o7UUFDRSxTQUFTO1FBQ1QsS0FBSyxFQUFFLFFBQVE7UUFDZixTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7UUFFL0MsTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxXQUFXLEVBQUUsNkNBQTZDO2dCQUNoRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbEUsT0FBTyxFQUFFO29CQUNQLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsT0FBTzt3QkFDYixNQUFNLEVBQUUsU0FBUzt3QkFDakIsVUFBVSxFQUFFLGFBQWE7cUJBQzFCO2lCQUNGO2FBQ0Y7WUFDRCxXQUFXO1lBRVgsZ0JBQWdCO1lBQ2hCLG1CQUFtQixFQUFFLElBQUEsdUJBQWMsRUFBQztnQkFDbEMsSUFBSSxFQUFFLEdBQUcsSUFBSSxRQUFRO2dCQUNyQixHQUFHLGlCQUFpQjthQUNyQixDQUFDLENBQUMsTUFBTTtZQUVULDJCQUEyQjtZQUMzQiw0QkFBNEI7WUFDNUIsMEJBQTBCO1lBQzFCLGFBQWE7WUFFYixnREFBZ0Q7WUFDaEQsU0FBUyxFQUFFLElBQUEsdUJBQWMsRUFBQztnQkFDeEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxZQUFZO2dCQUN6QixHQUFHLGlCQUFpQjthQUNyQixDQUFDLENBQUMsTUFBTTtZQUVULEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7WUFDeEIsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO1lBQ2xELEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsU0FBUztnQkFDZixRQUFRLEVBQUUsS0FBSztnQkFDZixRQUFRLEVBQUUsU0FBUyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ3BEO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLHFCQUFxQixFQUFFO29CQUNyQixRQUFRLEVBQUU7d0JBQ1IsWUFBWTt3QkFDWixVQUFVO3FCQUNYO29CQUNELFdBQVcsRUFBRTt3QkFDWCxZQUFZO3dCQUNaLFVBQVU7cUJBQ1g7b0JBQ0QsVUFBVSxFQUFFO3dCQUNWLFlBQVk7d0JBQ1osVUFBVTtxQkFDWDtvQkFDRCxLQUFLLEVBQ0gsU0FBUyxLQUFLLFVBQVU7d0JBQ3RCLENBQUMsQ0FBQzs0QkFDRSxZQUFZOzRCQUNaLFVBQVU7eUJBQ1g7d0JBQ0gsQ0FBQyxDQUFDLFNBQVM7aUJBQ2hCO2FBQ0Y7U0FDRjtLQUNGLEVBQ0QsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQ3hCLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Deployment_1 = require("../Deployment");
|
|
4
|
+
exports.default = ({ namespace, ingress, ...others }) => {
|
|
5
|
+
const name = 'hello-world';
|
|
6
|
+
const image = 'strm/helloworld-http';
|
|
7
|
+
const port = 80;
|
|
8
|
+
(0, Deployment_1.default)({
|
|
9
|
+
name,
|
|
10
|
+
namespace,
|
|
11
|
+
podConfig: {
|
|
12
|
+
image,
|
|
13
|
+
ports: { http: port },
|
|
14
|
+
resources: { requests: { memory: '1Mi', cpu: '1m' } },
|
|
15
|
+
},
|
|
16
|
+
deploymentConfig: { replicas: 1 },
|
|
17
|
+
ingressConfig: ingress,
|
|
18
|
+
...others,
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVsbG9Xb3JsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9LdWJlWC9Ub29scy9IZWxsb1dvcmxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsOENBQXVDO0FBR3ZDLGtCQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFvQixFQUFFLEVBQUU7SUFDckUsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDO0lBQzNCLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVoQixJQUFBLG9CQUFVLEVBQUM7UUFDVCxJQUFJO1FBQ0osU0FBUztRQUVULFNBQVMsRUFBRTtZQUNULEtBQUs7WUFDTCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3JCLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1NBQ3REO1FBQ0QsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1FBQ2pDLGFBQWEsRUFBRSxPQUFPO1FBRXRCLEdBQUcsTUFBTTtLQUNWLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as k8s from '@pulumi/kubernetes';
|
|
2
|
+
import { Input, Resource } from '@pulumi/pulumi';
|
|
3
|
+
interface Props {
|
|
4
|
+
namespace: Input<string>;
|
|
5
|
+
provider: k8s.Provider;
|
|
6
|
+
dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
|
|
7
|
+
}
|
|
8
|
+
declare const _default: ({ namespace, provider, dependsOn }: Props) => void;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const k8s = require("@pulumi/kubernetes");
|
|
4
|
+
const SecurityRules_1 = require("../Core/SecurityRules");
|
|
5
|
+
exports.default = ({ namespace, provider, dependsOn }) => {
|
|
6
|
+
const name = 'kube-cleanup-operator';
|
|
7
|
+
new k8s.helm.v3.Chart(name, {
|
|
8
|
+
namespace,
|
|
9
|
+
chart: 'kube-cleanup-operator',
|
|
10
|
+
fetchOpts: {
|
|
11
|
+
repo: 'http://charts.lwolf.org',
|
|
12
|
+
},
|
|
13
|
+
values: {
|
|
14
|
+
rbac: {
|
|
15
|
+
global: true,
|
|
16
|
+
},
|
|
17
|
+
args: [
|
|
18
|
+
//'--namespace=default',
|
|
19
|
+
'--delete-successful-after=24h0m0s',
|
|
20
|
+
'--delete-failed-after=0',
|
|
21
|
+
'--delete-pending-pods-after=0',
|
|
22
|
+
'--delete-evicted-pods-after=0',
|
|
23
|
+
'--delete-orphaned-pods-after=0',
|
|
24
|
+
//'--ignore-owned-by-cronjobs=false',
|
|
25
|
+
//'--dry-run=false',
|
|
26
|
+
'--legacy-mode=false',
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
transformations: [
|
|
30
|
+
(obj) => (0, SecurityRules_1.applyDeploymentRules)(obj, { disableServiceAccount: false }),
|
|
31
|
+
],
|
|
32
|
+
}, { provider, dependsOn });
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS3ViZUNsZWFudXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvS3ViZVgvVG9vbHMvS3ViZUNsZWFudXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBMEM7QUFFMUMseURBQTZEO0FBUTdELGtCQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBUyxFQUFFLEVBQUU7SUFDM0QsTUFBTSxJQUFJLEdBQUcsdUJBQXVCLENBQUM7SUFFckMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQ25CLElBQUksRUFDSjtRQUNFLFNBQVM7UUFDVCxLQUFLLEVBQUUsdUJBQXVCO1FBQzlCLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSx5QkFBeUI7U0FDaEM7UUFFRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLElBQUk7YUFDYjtZQUNELElBQUksRUFBRTtnQkFDSix3QkFBd0I7Z0JBQ3hCLG1DQUFtQztnQkFDbkMseUJBQXlCO2dCQUN6QiwrQkFBK0I7Z0JBQy9CLCtCQUErQjtnQkFDL0IsZ0NBQWdDO2dCQUNoQyxxQ0FBcUM7Z0JBQ3JDLG9CQUFvQjtnQkFDcEIscUJBQXFCO2FBQ3RCO1NBQ0Y7UUFFRCxlQUFlLEVBQUU7WUFDZixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1gsSUFBQSxvQ0FBb0IsRUFBQyxHQUFHLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUM5RDtLQUNGLEVBQ0QsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQ3hCLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as k8s from '@pulumi/kubernetes';
|
|
2
|
+
import { Input, Resource } from '@pulumi/pulumi';
|
|
3
|
+
export interface NoIpProps {
|
|
4
|
+
namespace: Input<string>;
|
|
5
|
+
username: Input<string>;
|
|
6
|
+
password: Input<string>;
|
|
7
|
+
domain: Input<string>;
|
|
8
|
+
interval?: number;
|
|
9
|
+
provider: k8s.Provider;
|
|
10
|
+
dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: ({ namespace, username, password, domain, interval, ...others }: NoIpProps) => void;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Deployment_1 = require("../Deployment");
|
|
4
|
+
exports.default = ({ namespace, username, password, domain, interval = 5, ...others }) => {
|
|
5
|
+
const name = 'no-ip';
|
|
6
|
+
const image = 'aanousakis/no-ip:v1';
|
|
7
|
+
(0, Deployment_1.default)({
|
|
8
|
+
name,
|
|
9
|
+
namespace,
|
|
10
|
+
configMap: {
|
|
11
|
+
INTERVAL: interval.toString(),
|
|
12
|
+
DOMAINS: domain,
|
|
13
|
+
},
|
|
14
|
+
secrets: { USERNAME: username, PASSWORD: password },
|
|
15
|
+
podConfig: {
|
|
16
|
+
ports: { http: 8080 },
|
|
17
|
+
image,
|
|
18
|
+
resources: { requests: { memory: '1Mi', cpu: '1m' } },
|
|
19
|
+
},
|
|
20
|
+
deploymentConfig: { replicas: 1 },
|
|
21
|
+
...others,
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9JcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9LdWJlWC9Ub29scy9Ob0lwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsOENBQXVDO0FBWXZDLGtCQUFlLENBQUMsRUFDZCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxHQUFHLENBQUMsRUFDWixHQUFHLE1BQU0sRUFDQyxFQUFFLEVBQUU7SUFDZCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUM7SUFDckIsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUM7SUFFcEMsSUFBQSxvQkFBVSxFQUFDO1FBQ1QsSUFBSTtRQUNKLFNBQVM7UUFFVCxTQUFTLEVBQUU7WUFDVCxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUM3QixPQUFPLEVBQUUsTUFBTTtTQUNoQjtRQUNELE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtRQUVuRCxTQUFTLEVBQUU7WUFDVCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3JCLEtBQUs7WUFDTCxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtTQUN0RDtRQUNELGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRTtRQUVqQyxHQUFHLE1BQU07S0FDVixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as k8s from '@pulumi/kubernetes';
|
|
2
|
+
import { DefaultK8sArgs } from '../../types';
|
|
3
|
+
import { KeyVaultInfo } from '../../../types';
|
|
4
|
+
export interface OpenLDAPProps extends Omit<DefaultK8sArgs, 'namespace'> {
|
|
5
|
+
vaultInfo?: KeyVaultInfo;
|
|
6
|
+
namespace?: string;
|
|
7
|
+
replicas?: number;
|
|
8
|
+
storageClassName: string;
|
|
9
|
+
ldapDomain: string;
|
|
10
|
+
}
|
|
11
|
+
declare const _default: ({ name, namespace, vaultInfo, resources, replicas, ldapDomain, storageClassName, ...others }: OpenLDAPProps) => k8s.helm.v3.Chart;
|
|
12
|
+
export default _default;
|