@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.
Files changed (386) hide show
  1. package/Aks/Helper.d.ts +43 -0
  2. package/Aks/Helper.js +72 -0
  3. package/Aks/Identity.d.ts +14 -0
  4. package/Aks/Identity.js +32 -0
  5. package/Aks/VmSetAutoScale/index.d.ts +16 -0
  6. package/Aks/VmSetAutoScale/index.js +132 -0
  7. package/Aks/VmSetMonitor/index.d.ts +12 -0
  8. package/Aks/VmSetMonitor/index.js +67 -0
  9. package/Aks/index.d.ts +100 -0
  10. package/Aks/index.js +558 -0
  11. package/Apim/ApiProduct/Api.d.ts +35 -0
  12. package/Apim/ApiProduct/Api.js +131 -0
  13. package/Apim/ApiProduct/OpenApi.d.ts +85 -0
  14. package/Apim/ApiProduct/OpenApi.js +3 -0
  15. package/Apim/ApiProduct/PolicyBuilder.d.ts +79 -0
  16. package/Apim/ApiProduct/PolicyBuilder.js +361 -0
  17. package/Apim/ApiProduct/Product.d.ts +8 -0
  18. package/Apim/ApiProduct/Product.js +63 -0
  19. package/Apim/ApiProduct/SwaggerHelper.d.ts +6 -0
  20. package/Apim/ApiProduct/SwaggerHelper.js +44 -0
  21. package/Apim/ApiProduct/index.d.ts +9 -0
  22. package/Apim/ApiProduct/index.js +22 -0
  23. package/Apim/Helpers.d.ts +0 -0
  24. package/Apim/Helpers.js +2 -0
  25. package/Apim/HookProxy/index.d.ts +20 -0
  26. package/Apim/HookProxy/index.js +27 -0
  27. package/Apim/index.d.ts +22 -0
  28. package/Apim/index.js +118 -0
  29. package/Apps/LogicApp.d.ts +12 -0
  30. package/Apps/LogicApp.js +19 -0
  31. package/Automation/AutoAccount.d.ts +5 -0
  32. package/Automation/AutoAccount.js +20 -0
  33. package/AzAd/B2C.d.ts +9 -0
  34. package/AzAd/B2C.js +38 -0
  35. package/AzAd/ConditionalPolicies/index.d.ts +0 -0
  36. package/AzAd/ConditionalPolicies/index.js +2 -0
  37. package/AzAd/EnvRoles.d.ts +12 -0
  38. package/AzAd/EnvRoles.js +62 -0
  39. package/AzAd/GraphDefinition.d.ts +14 -0
  40. package/AzAd/GraphDefinition.js +5136 -0
  41. package/AzAd/Group.d.ts +29 -0
  42. package/AzAd/Group.js +70 -0
  43. package/AzAd/Helper.d.ts +18 -0
  44. package/AzAd/Helper.js +37 -0
  45. package/AzAd/Identities/AzDevOps.d.ts +23 -0
  46. package/AzAd/Identities/AzDevOps.js +61 -0
  47. package/AzAd/Identities/AzUserAdRevertSync.d.ts +14 -0
  48. package/AzAd/Identities/AzUserAdRevertSync.js +18 -0
  49. package/AzAd/Identity.d.ts +51 -0
  50. package/AzAd/Identity.js +133 -0
  51. package/AzAd/ManagedIdentity.d.ts +6 -0
  52. package/AzAd/ManagedIdentity.js +23 -0
  53. package/AzAd/Role.d.ts +19 -0
  54. package/AzAd/Role.js +25 -0
  55. package/AzAd/RoleAssignment.d.ts +79 -0
  56. package/AzAd/RoleAssignment.js +48 -0
  57. package/AzAd/RolesBuiltIn.d.ts +62 -0
  58. package/AzAd/RolesBuiltIn.js +13841 -0
  59. package/Cdn/index.d.ts +11 -0
  60. package/Cdn/index.js +47 -0
  61. package/Certificate/index.d.ts +41 -0
  62. package/Certificate/index.js +156 -0
  63. package/Certificate/p12.d.ts +5 -0
  64. package/Certificate/p12.js +37 -0
  65. package/Common/AppConfigs/dotnetConfig.d.ts +15 -0
  66. package/Common/AppConfigs/dotnetConfig.js +20 -0
  67. package/Common/AutoTags.d.ts +1 -0
  68. package/Common/AutoTags.js +24 -0
  69. package/Common/AzureEnv.d.ts +37 -0
  70. package/Common/AzureEnv.js +94 -0
  71. package/Common/ConfigHelper.d.ts +5 -0
  72. package/Common/ConfigHelper.js +14 -0
  73. package/Common/GlobalEnv.d.ts +14 -0
  74. package/Common/GlobalEnv.js +38 -0
  75. package/Common/Helpers.d.ts +10 -0
  76. package/Common/Helpers.js +30 -0
  77. package/Common/Location.d.ts +4 -0
  78. package/Common/Location.js +23 -0
  79. package/Common/LocationBuiltIn.d.ts +81 -0
  80. package/Common/LocationBuiltIn.js +1925 -0
  81. package/Common/Naming/index.d.ts +62 -0
  82. package/Common/Naming/index.js +146 -0
  83. package/Common/ResourceEnv.d.ts +16 -0
  84. package/Common/ResourceEnv.js +29 -0
  85. package/Common/StackEnv.d.ts +4 -0
  86. package/Common/StackEnv.js +22 -0
  87. package/Common/index.d.ts +5 -0
  88. package/Common/index.js +9 -0
  89. package/ContainerRegistry/Helper.d.ts +23 -0
  90. package/ContainerRegistry/Helper.js +47 -0
  91. package/ContainerRegistry/index.d.ts +28 -0
  92. package/ContainerRegistry/index.js +103 -0
  93. package/Core/Helper.d.ts +16 -0
  94. package/Core/Helper.js +37 -0
  95. package/Core/KeyGenetators.d.ts +33 -0
  96. package/Core/KeyGenetators.js +66 -0
  97. package/Core/Locker.d.ts +13 -0
  98. package/Core/Locker.js +14 -0
  99. package/Core/Random.d.ts +40 -0
  100. package/Core/Random.js +83 -0
  101. package/Core/ResourceCreator.d.ts +17 -0
  102. package/Core/ResourceCreator.js +48 -0
  103. package/Core/ResourceGroup.d.ts +13 -0
  104. package/Core/ResourceGroup.js +45 -0
  105. package/CosmosDb/index.d.ts +33 -0
  106. package/CosmosDb/index.js +129 -0
  107. package/CustomRoles/index.d.ts +5 -0
  108. package/CustomRoles/index.js +27 -0
  109. package/IOT/Hub/index.d.ts +32 -0
  110. package/IOT/Hub/index.js +208 -0
  111. package/KeyVault/CustomHelper.d.ts +35 -0
  112. package/KeyVault/CustomHelper.js +40 -0
  113. package/KeyVault/Helper.d.ts +33 -0
  114. package/KeyVault/Helper.js +58 -0
  115. package/KeyVault/VaultAccess.d.ts +15 -0
  116. package/KeyVault/VaultAccess.js +47 -0
  117. package/KeyVault/VaultPermissions.d.ts +26 -0
  118. package/KeyVault/VaultPermissions.js +169 -0
  119. package/KeyVault/index.d.ts +28 -0
  120. package/KeyVault/index.js +136 -0
  121. package/KubeX/AcrSecret.d.ts +15 -0
  122. package/KubeX/AcrSecret.js +31 -0
  123. package/KubeX/Apps/AstroPage.d.ts +12 -0
  124. package/KubeX/Apps/AstroPage.js +33 -0
  125. package/KubeX/Apps/KafKa.d.ts +6 -0
  126. package/KubeX/Apps/KafKa.js +13 -0
  127. package/KubeX/Apps/Nobelium.d.ts +13 -0
  128. package/KubeX/Apps/Nobelium.js +37 -0
  129. package/KubeX/Apps/Wikijs.d.ts +30 -0
  130. package/KubeX/Apps/Wikijs.js +54 -0
  131. package/KubeX/Apps/WordPress.d.ts +24 -0
  132. package/KubeX/Apps/WordPress.js +55 -0
  133. package/KubeX/Apps/YarpProxy/index.d.ts +17 -0
  134. package/KubeX/Apps/YarpProxy/index.js +107 -0
  135. package/KubeX/Apps/YarpProxy/type.d.ts +55 -0
  136. package/KubeX/Apps/YarpProxy/type.js +3 -0
  137. package/KubeX/CertHelper.d.ts +1 -0
  138. package/KubeX/CertHelper.js +9 -0
  139. package/KubeX/CertImports.d.ts +19 -0
  140. package/KubeX/CertImports.js +70 -0
  141. package/KubeX/CloudFlare/CertCreator.d.ts +19 -0
  142. package/KubeX/CloudFlare/CertCreator.js +90 -0
  143. package/KubeX/CloudFlare/CertImports.d.ts +17 -0
  144. package/KubeX/CloudFlare/CertImports.js +34 -0
  145. package/KubeX/CloudFlare/DynamicDns.d.ts +21 -0
  146. package/KubeX/CloudFlare/DynamicDns.js +39 -0
  147. package/KubeX/CloudFlare/Tunnel-Helm.d.ts +17 -0
  148. package/KubeX/CloudFlare/Tunnel-Helm.js +12 -0
  149. package/KubeX/CloudFlare/Tunnel.d.ts +23 -0
  150. package/KubeX/CloudFlare/Tunnel.js +54 -0
  151. package/KubeX/CloudFlare/index.d.ts +13 -0
  152. package/KubeX/CloudFlare/index.js +36 -0
  153. package/KubeX/Clusters/K3s/AutoUpgradeController/index.d.ts +6 -0
  154. package/KubeX/Clusters/K3s/AutoUpgradeController/index.js +60 -0
  155. package/KubeX/ConfigSecret.d.ts +24 -0
  156. package/KubeX/ConfigSecret.js +38 -0
  157. package/KubeX/Core/CertManager/index.d.ts +24 -0
  158. package/KubeX/Core/CertManager/index.js +96 -0
  159. package/KubeX/Core/KsCertSecret.d.ts +12 -0
  160. package/KubeX/Core/KsCertSecret.js +22 -0
  161. package/KubeX/Core/KsSecret.d.ts +9 -0
  162. package/KubeX/Core/KsSecret.js +12 -0
  163. package/KubeX/Core/LoadBalancer/MetalLB.d.ts +7 -0
  164. package/KubeX/Core/LoadBalancer/MetalLB.js +21 -0
  165. package/KubeX/Core/Monitoring/index.d.ts +22 -0
  166. package/KubeX/Core/Monitoring/index.js +322 -0
  167. package/KubeX/Core/Namespace.d.ts +12 -0
  168. package/KubeX/Core/Namespace.js +41 -0
  169. package/KubeX/Core/Nginx/index.d.ts +60 -0
  170. package/KubeX/Core/Nginx/index.js +109 -0
  171. package/KubeX/Core/OAuthProxy/index.d.ts +0 -0
  172. package/KubeX/Core/OAuthProxy/index.js +3 -0
  173. package/KubeX/Core/ResourceQuota.d.ts +12 -0
  174. package/KubeX/Core/ResourceQuota.js +13 -0
  175. package/KubeX/Core/SecurityRules.d.ts +34 -0
  176. package/KubeX/Core/SecurityRules.js +93 -0
  177. package/KubeX/Core/StorageClass/azureBlob.d.ts +20 -0
  178. package/KubeX/Core/StorageClass/azureBlob.js +77 -0
  179. package/KubeX/Core/StorageClass/azureFile.d.ts +17 -0
  180. package/KubeX/Core/StorageClass/azureFile.js +45 -0
  181. package/KubeX/Core/StorageClass/index.d.ts +13 -0
  182. package/KubeX/Core/StorageClass/index.js +25 -0
  183. package/KubeX/Core/index.d.ts +57 -0
  184. package/KubeX/Core/index.js +94 -0
  185. package/KubeX/Databases/MariaDb.d.ts +11 -0
  186. package/KubeX/Databases/MariaDb.js +39 -0
  187. package/KubeX/Databases/MySql.V2.d.ts +11 -0
  188. package/KubeX/Databases/MySql.V2.js +40 -0
  189. package/KubeX/Databases/MySql.d.ts +13 -0
  190. package/KubeX/Databases/MySql.js +55 -0
  191. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.d.ts +10 -0
  192. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.js +47 -0
  193. package/KubeX/Databases/PostgreSql/PostgreSQL.d.ts +10 -0
  194. package/KubeX/Databases/PostgreSql/PostgreSQL.js +51 -0
  195. package/KubeX/Databases/PostgreSql/PostgreSql.v1.d.ts +13 -0
  196. package/KubeX/Databases/PostgreSql/PostgreSql.v1.js +56 -0
  197. package/KubeX/Databases/PostgreSql/index.d.ts +17 -0
  198. package/KubeX/Databases/PostgreSql/index.js +6 -0
  199. package/KubeX/Databases/RedisCache.d.ts +14 -0
  200. package/KubeX/Databases/RedisCache.js +65 -0
  201. package/KubeX/Databases/SqlServer.d.ts +15 -0
  202. package/KubeX/Databases/SqlServer.js +77 -0
  203. package/KubeX/Deployment/PodAutoscaler.d.ts +14 -0
  204. package/KubeX/Deployment/PodAutoscaler.js +51 -0
  205. package/KubeX/Deployment/index.d.ts +136 -0
  206. package/KubeX/Deployment/index.js +306 -0
  207. package/KubeX/Helpers.d.ts +4 -0
  208. package/KubeX/Helpers.js +17 -0
  209. package/KubeX/Ingress/AppGatewayIngress.d.ts +2 -0
  210. package/KubeX/Ingress/AppGatewayIngress.js +4 -0
  211. package/KubeX/Ingress/Conts.d.ts +13 -0
  212. package/KubeX/Ingress/Conts.js +18 -0
  213. package/KubeX/Ingress/NginxIngress.d.ts +3 -0
  214. package/KubeX/Ingress/NginxIngress.js +186 -0
  215. package/KubeX/Ingress/NginxProxy.d.ts +21 -0
  216. package/KubeX/Ingress/NginxProxy.js +43 -0
  217. package/KubeX/Ingress/TraefikIngress/CustomHeader.d.ts +15 -0
  218. package/KubeX/Ingress/TraefikIngress/CustomHeader.js +15 -0
  219. package/KubeX/Ingress/TraefikIngress/index.d.ts +11 -0
  220. package/KubeX/Ingress/TraefikIngress/index.js +95 -0
  221. package/KubeX/Ingress/index.d.ts +5 -0
  222. package/KubeX/Ingress/index.js +12 -0
  223. package/KubeX/Ingress/type.d.ts +82 -0
  224. package/KubeX/Ingress/type.js +3 -0
  225. package/KubeX/Providers/index.d.ts +8 -0
  226. package/KubeX/Providers/index.js +15 -0
  227. package/KubeX/Storage/Longhorn/index.d.ts +15 -0
  228. package/KubeX/Storage/Longhorn/index.js +54 -0
  229. package/KubeX/Storage/index.d.ts +25 -0
  230. package/KubeX/Storage/index.js +79 -0
  231. package/KubeX/Tools/AWS/LocalStack.d.ts +7 -0
  232. package/KubeX/Tools/AWS/LocalStack.js +29 -0
  233. package/KubeX/Tools/AWS/S3.d.ts +6 -0
  234. package/KubeX/Tools/AWS/S3.js +44 -0
  235. package/KubeX/Tools/AWS/index.d.ts +7 -0
  236. package/KubeX/Tools/AWS/index.js +14 -0
  237. package/KubeX/Tools/AppHealthzMonitor.d.ts +18 -0
  238. package/KubeX/Tools/AppHealthzMonitor.js +52 -0
  239. package/KubeX/Tools/ArgoCD/index.d.ts +17 -0
  240. package/KubeX/Tools/ArgoCD/index.js +131 -0
  241. package/KubeX/Tools/Dapr/Storage.d.ts +66 -0
  242. package/KubeX/Tools/Dapr/Storage.js +70 -0
  243. package/KubeX/Tools/Dapr/index.d.ts +10 -0
  244. package/KubeX/Tools/Dapr/index.js +31 -0
  245. package/KubeX/Tools/Echo-App.d.ts +3 -0
  246. package/KubeX/Tools/Echo-App.js +21 -0
  247. package/KubeX/Tools/Gitea/GiteaRepo.d.ts +72 -0
  248. package/KubeX/Tools/Gitea/GiteaRepo.js +184 -0
  249. package/KubeX/Tools/Gitea/GiteaRunner.d.ts +11 -0
  250. package/KubeX/Tools/Gitea/GiteaRunner.js +37 -0
  251. package/KubeX/Tools/Gitea/GiteaRunner.v1.d.ts +11 -0
  252. package/KubeX/Tools/Gitea/GiteaRunner.v1.js +123 -0
  253. package/KubeX/Tools/HarborRepo.d.ts +29 -0
  254. package/KubeX/Tools/HarborRepo.js +78 -0
  255. package/KubeX/Tools/HelloWorld.d.ts +3 -0
  256. package/KubeX/Tools/HelloWorld.js +21 -0
  257. package/KubeX/Tools/KubeCleanup.d.ts +9 -0
  258. package/KubeX/Tools/KubeCleanup.js +34 -0
  259. package/KubeX/Tools/NoIp.d.ts +13 -0
  260. package/KubeX/Tools/NoIp.js +24 -0
  261. package/KubeX/Tools/OpenLDAP/index.d.ts +12 -0
  262. package/KubeX/Tools/OpenLDAP/index.js +56 -0
  263. package/KubeX/Tools/OutlineVpn/index.d.ts +25 -0
  264. package/KubeX/Tools/OutlineVpn/index.js +256 -0
  265. package/KubeX/Tools/SqlPad.d.ts +29 -0
  266. package/KubeX/Tools/SqlPad.js +133 -0
  267. package/KubeX/Tools/ToolPod.d.ts +10 -0
  268. package/KubeX/Tools/ToolPod.js +40 -0
  269. package/KubeX/Tools/UptimeKuma.d.ts +6 -0
  270. package/KubeX/Tools/UptimeKuma.js +38 -0
  271. package/KubeX/Tools/index.d.ts +27 -0
  272. package/KubeX/Tools/index.js +35 -0
  273. package/KubeX/VairableResolvers/index.d.ts +15 -0
  274. package/KubeX/VairableResolvers/index.js +49 -0
  275. package/KubeX/kx/index.d.ts +114 -0
  276. package/KubeX/kx/index.js +423 -0
  277. package/KubeX/types.d.ts +49 -0
  278. package/KubeX/types.js +3 -0
  279. package/Logs/AppInsight.d.ts +16 -0
  280. package/Logs/AppInsight.js +48 -0
  281. package/Logs/Helpers.d.ts +50 -0
  282. package/Logs/Helpers.js +95 -0
  283. package/Logs/LogAnalytics.d.ts +17 -0
  284. package/Logs/LogAnalytics.js +54 -0
  285. package/Logs/WebTest.d.ts +13 -0
  286. package/Logs/WebTest.js +68 -0
  287. package/Logs/index.d.ts +42 -0
  288. package/Logs/index.js +69 -0
  289. package/MySql/index.d.ts +20 -0
  290. package/MySql/index.js +93 -0
  291. package/Postgresql/index.d.ts +20 -0
  292. package/Postgresql/index.js +93 -0
  293. package/ReadMe.md +36 -0
  294. package/RedisCache/index.d.ts +9 -0
  295. package/RedisCache/index.js +79 -0
  296. package/ServiceBus/ServiceBusHelper.d.ts +21 -0
  297. package/ServiceBus/ServiceBusHelper.js +35 -0
  298. package/ServiceBus/index.d.ts +98 -0
  299. package/ServiceBus/index.js +396 -0
  300. package/SignalR/index.d.ts +20 -0
  301. package/SignalR/index.js +114 -0
  302. package/Sql/Auditing.d.ts +0 -0
  303. package/Sql/Auditing.js +2 -0
  304. package/Sql/Helper.d.ts +9 -0
  305. package/Sql/Helper.js +11 -0
  306. package/Sql/SqlDb.d.ts +14 -0
  307. package/Sql/SqlDb.js +42 -0
  308. package/Sql/index.d.ts +44 -0
  309. package/Sql/index.js +236 -0
  310. package/Storage/CdnEndpoint.d.ts +12 -0
  311. package/Storage/CdnEndpoint.js +62 -0
  312. package/Storage/CdnRules.d.ts +6 -0
  313. package/Storage/CdnRules.js +134 -0
  314. package/Storage/Helper.d.ts +28 -0
  315. package/Storage/Helper.js +66 -0
  316. package/Storage/ManagementRules.d.ts +70 -0
  317. package/Storage/ManagementRules.js +32 -0
  318. package/Storage/index.d.ts +55 -0
  319. package/Storage/index.js +264 -0
  320. package/VM/index.d.ts +37 -0
  321. package/VM/index.js +138 -0
  322. package/VNet/Bastion.d.ts +8 -0
  323. package/VNet/Bastion.js +30 -0
  324. package/VNet/Firewall.d.ts +27 -0
  325. package/VNet/Firewall.js +87 -0
  326. package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +20 -0
  327. package/VNet/FirewallPolicies/AksFirewallPolicy.js +241 -0
  328. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +14 -0
  329. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +303 -0
  330. package/VNet/FirewallPolicy.d.ts +28 -0
  331. package/VNet/FirewallPolicy.js +110 -0
  332. package/VNet/FirewallRules/AksFirewallRules.d.ts +24 -0
  333. package/VNet/FirewallRules/AksFirewallRules.js +250 -0
  334. package/VNet/FirewallRules/DefaultRules.d.ts +2 -0
  335. package/VNet/FirewallRules/DefaultRules.js +23 -0
  336. package/VNet/FirewallRules/types.d.ts +20 -0
  337. package/VNet/FirewallRules/types.js +5 -0
  338. package/VNet/GlobalNetworkPeering.d.ts +9 -0
  339. package/VNet/GlobalNetworkPeering.js +17 -0
  340. package/VNet/Helper.d.ts +33 -0
  341. package/VNet/Helper.js +86 -0
  342. package/VNet/IpAddress.d.ts +17 -0
  343. package/VNet/IpAddress.js +38 -0
  344. package/VNet/IpAddressPrefix.d.ts +22 -0
  345. package/VNet/IpAddressPrefix.js +42 -0
  346. package/VNet/NSGRules/AzADService.d.ts +10 -0
  347. package/VNet/NSGRules/AzADService.js +45 -0
  348. package/VNet/NetworkPeering.d.ts +10 -0
  349. package/VNet/NetworkPeering.js +29 -0
  350. package/VNet/PrivateDns.d.ts +33 -0
  351. package/VNet/PrivateDns.js +64 -0
  352. package/VNet/PrivateEndpoint.d.ts +9 -0
  353. package/VNet/PrivateEndpoint.js +71 -0
  354. package/VNet/PublicDns.d.ts +21 -0
  355. package/VNet/PublicDns.js +59 -0
  356. package/VNet/RouteTable.d.ts +13 -0
  357. package/VNet/RouteTable.js +23 -0
  358. package/VNet/SecurityGroup.d.ts +8 -0
  359. package/VNet/SecurityGroup.js +13 -0
  360. package/VNet/Subnet.d.ts +26 -0
  361. package/VNet/Subnet.js +48 -0
  362. package/VNet/VirtualWAN.d.ts +25 -0
  363. package/VNet/VirtualWAN.js +40 -0
  364. package/VNet/Vnet.d.ts +51 -0
  365. package/VNet/Vnet.js +196 -0
  366. package/VNet/index.d.ts +65 -0
  367. package/VNet/index.js +198 -0
  368. package/Web/AppCertOrder.d.ts +16 -0
  369. package/Web/AppCertOrder.js +34 -0
  370. package/Web/AppConfig.d.ts +16 -0
  371. package/Web/AppConfig.js +79 -0
  372. package/Web/AppGateway.d.ts +15 -0
  373. package/Web/AppGateway.js +32 -0
  374. package/Web/FuncApp.d.ts +12 -0
  375. package/Web/FuncApp.js +24 -0
  376. package/Web/Helpers.d.ts +6 -0
  377. package/Web/Helpers.js +36 -0
  378. package/Web/WebAppPlan.d.ts +7 -0
  379. package/Web/WebAppPlan.js +26 -0
  380. package/Web/types.d.ts +169 -0
  381. package/Web/types.js +3 -0
  382. package/package.json +34 -0
  383. package/types.d.ts +69 -0
  384. package/types.js +3 -0
  385. package/z_tests/_tools/Mocks.d.ts +2 -0
  386. package/z_tests/_tools/Mocks.js +47 -0
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const k8s = require("@pulumi/kubernetes");
4
+ const Random_1 = require("../../../Core/Random");
5
+ const Namespace_1 = require("../../Core/Namespace");
6
+ exports.default = ({ name = 'openldap', namespace = 'openldap', vaultInfo, resources, replicas = 1, ldapDomain, storageClassName, ...others }) => {
7
+ //Admin Pass
8
+ const adminLogin = (0, Random_1.randomLogin)({
9
+ name: `${name}-admin`,
10
+ vaultInfo,
11
+ loginPrefix: 'admin',
12
+ maxUserNameLength: 10,
13
+ passwordOptions: { length: 20, policy: false },
14
+ });
15
+ const ns = (0, Namespace_1.default)({ name: namespace, ...others });
16
+ //https://github.com/jp-gouin/helm-openldap/blob/master/values.yaml
17
+ const openLDAP = new k8s.helm.v3.Chart(name, {
18
+ namespace,
19
+ chart: 'openldap-stack-ha',
20
+ fetchOpts: { repo: 'https://jp-gouin.github.io/helm-openldap' },
21
+ values: {
22
+ users: '',
23
+ userPasswords: '',
24
+ global: {
25
+ ldapDomain,
26
+ adminUser: adminLogin.userName,
27
+ adminPassword: adminLogin.password,
28
+ configUserEnabled: true,
29
+ configUser: adminLogin.userName,
30
+ configPassword: adminLogin.password,
31
+ },
32
+ replicaCount: replicas,
33
+ replication: { enabled: false },
34
+ initTLSSecret: {
35
+ enabled: false,
36
+ tls_enabled: false,
37
+ secret: undefined,
38
+ },
39
+ phpldapadmin: {
40
+ enabled: true,
41
+ ingress: { enabled: false, ingressClassName: 'nginx' },
42
+ },
43
+ 'ltb-passwd': {
44
+ enabled: false,
45
+ ingress: { enabled: false, ingressClassName: 'nginx' },
46
+ },
47
+ persistence: {
48
+ enabled: true,
49
+ storageClass: storageClassName,
50
+ },
51
+ resources,
52
+ },
53
+ }, { provider: others.provider, dependsOn: ns });
54
+ return openLDAP;
55
+ };
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvS3ViZVgvVG9vbHMvT3BlbkxEQVAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBMEM7QUFDMUMsaURBQW1EO0FBR25ELG9EQUE2QztBQVU3QyxrQkFBZSxDQUFDLEVBQ2QsSUFBSSxHQUFHLFVBQVUsRUFDakIsU0FBUyxHQUFHLFVBQVUsRUFDdEIsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEdBQUcsQ0FBQyxFQUNaLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsR0FBRyxNQUFNLEVBQ0ssRUFBRSxFQUFFO0lBQ2xCLFlBQVk7SUFDWixNQUFNLFVBQVUsR0FBRyxJQUFBLG9CQUFXLEVBQUM7UUFDN0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxRQUFRO1FBQ3JCLFNBQVM7UUFDVCxXQUFXLEVBQUUsT0FBTztRQUNwQixpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUMvQyxDQUFDLENBQUM7SUFFSCxNQUFNLEVBQUUsR0FBRyxJQUFBLG1CQUFTLEVBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVyRCxtRUFBbUU7SUFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQ3BDLElBQUksRUFDSjtRQUNFLFNBQVM7UUFDVCxLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSwwQ0FBMEMsRUFBRTtRQUUvRCxNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsRUFBRTtZQUNULGFBQWEsRUFBRSxFQUFFO1lBRWpCLE1BQU0sRUFBRTtnQkFDTixVQUFVO2dCQUNWLFNBQVMsRUFBRSxVQUFVLENBQUMsUUFBUTtnQkFDOUIsYUFBYSxFQUFFLFVBQVUsQ0FBQyxRQUFRO2dCQUNsQyxpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQy9CLGNBQWMsRUFBRSxVQUFVLENBQUMsUUFBUTthQUNwQztZQUVELFlBQVksRUFBRSxRQUFRO1lBQ3RCLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7WUFFL0IsYUFBYSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixNQUFNLEVBQUUsU0FBUzthQUNsQjtZQUVELFlBQVksRUFBRTtnQkFDWixPQUFPLEVBQUUsSUFBSTtnQkFDYixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRTthQUN2RDtZQUVELFlBQVksRUFBRTtnQkFDWixPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRTthQUN2RDtZQUVELFdBQVcsRUFBRTtnQkFDWCxPQUFPLEVBQUUsSUFBSTtnQkFDYixZQUFZLEVBQUUsZ0JBQWdCO2FBQy9CO1lBQ0QsU0FBUztTQUNWO0tBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FDN0MsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyJ9
@@ -0,0 +1,25 @@
1
+ import { K8sArgs, K8sResourceType } from '../../types';
2
+ import { KeyVaultInfo } from '../../../types';
3
+ import { Input } from '@pulumi/pulumi';
4
+ export interface OutlineProps extends K8sArgs {
5
+ vaultInfo?: KeyVaultInfo;
6
+ hostname: string;
7
+ apiPort?: number;
8
+ accessPort?: number;
9
+ priorityClassName?: string;
10
+ cert: {
11
+ certVaultName?: string;
12
+ certFolderName?: string;
13
+ cert?: {
14
+ cert: Input<string>;
15
+ ca?: Input<string>;
16
+ privateKey: Input<string>;
17
+ };
18
+ };
19
+ replicas?: number;
20
+ autoScale?: boolean;
21
+ resources?: K8sResourceType;
22
+ storageClassName: string;
23
+ }
24
+ declare const _default: ({ vaultInfo, hostname, apiPort, accessPort, cert, storageClassName, priorityClassName, replicas, resources, autoScale, ...others }: OutlineProps) => Promise<void>;
25
+ export default _default;
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Namespace_1 = require("../../Core/Namespace");
4
+ const CertImports_1 = require("../../CertImports");
5
+ const kubernetes = require("@pulumi/kubernetes");
6
+ const Storage_1 = require("../../Storage");
7
+ const Random_1 = require("../../../Core/Random");
8
+ const KsCertSecret_1 = require("../../Core/KsCertSecret");
9
+ const PodAutoscaler_1 = require("../../Deployment/PodAutoscaler");
10
+ exports.default = async ({ vaultInfo, hostname, apiPort = 65123, accessPort = 45123, cert, storageClassName, priorityClassName = 'system-cluster-critical', replicas = 1, resources = {
11
+ requests: { memory: '100Mi', cpu: '0.5' },
12
+ limits: { memory: '600Mi', cpu: '1' },
13
+ }, autoScale, ...others }) => {
14
+ const name = 'outline-vpn';
15
+ const namespace = 'outline-system';
16
+ const image = 'quay.io/outline/shadowbox:stable';
17
+ const id = (0, Random_1.randomUuId)(name).result;
18
+ const ns = (0, Namespace_1.default)({ name: namespace, ...others });
19
+ const defaultProps = {
20
+ namespace,
21
+ dependsOn: ns,
22
+ provider: others.provider,
23
+ };
24
+ //Cert
25
+ if (cert.cert) {
26
+ (0, KsCertSecret_1.default)({
27
+ name: `tls-${name}-imported`,
28
+ certInfo: cert.cert,
29
+ ...defaultProps,
30
+ });
31
+ }
32
+ else if (cert.certVaultName && vaultInfo) {
33
+ await (0, CertImports_1.certImportFromVault)({
34
+ certNames: [cert.certVaultName],
35
+ vaultInfo,
36
+ ...defaultProps,
37
+ });
38
+ }
39
+ else if (cert.certFolderName) {
40
+ (0, CertImports_1.certImportFromFolder)({
41
+ certName: name,
42
+ certFolder: cert.certFolderName,
43
+ namespaces: [namespace],
44
+ ...defaultProps,
45
+ });
46
+ }
47
+ //Config Map
48
+ // const configMap = new kx.ConfigMap(
49
+ // name,
50
+ // {
51
+ // metadata: { namespace },
52
+ // data: { 'config.yml': '' },
53
+ // },
54
+ // others
55
+ // );
56
+ //Storage
57
+ const persisVolume = (0, Storage_1.createPVCForStorageClass)({
58
+ name,
59
+ storageClassName,
60
+ ...defaultProps,
61
+ });
62
+ const serverConfig = {
63
+ rollouts: [{ id: 'single-port', enabled: true }],
64
+ portForNewAccessKeys: accessPort,
65
+ hostname,
66
+ };
67
+ //Deployment
68
+ const outlineDeployment = new kubernetes.apps.v1.Deployment(name, {
69
+ metadata: {
70
+ name,
71
+ namespace,
72
+ annotations: {
73
+ 'pulumi.com/skipAwait': 'true',
74
+ 'pulumi.com/patchForce': 'true',
75
+ },
76
+ },
77
+ spec: {
78
+ replicas,
79
+ selector: {
80
+ matchLabels: {
81
+ name,
82
+ app: name,
83
+ },
84
+ },
85
+ template: {
86
+ metadata: {
87
+ labels: {
88
+ name,
89
+ app: name,
90
+ },
91
+ },
92
+ spec: {
93
+ priorityClassName,
94
+ containers: [
95
+ {
96
+ name,
97
+ image,
98
+ //`echo '{"rollouts":[{"id":"single-port","enabled":true}],"portForNewAccessKeys":${accessPort}}' > /root/shadowbox/persisted-state/shadowbox_server_config.json; cat /opt/outline/shadowbox_config.json > /root/shadowbox/persisted-state/shadowbox_config.json; [ ! -f /root/shadowbox/persisted-state/outline-ss-server/config.yml ] && cat /opt/outline/outline-ss-server/config.yml > /root/shadowbox/persisted-state/outline-ss-server/config.yml; sleep 10; ln -sf /opt/outline/shadowbox_config.json /root/shadowbox/persisted-state/shadowbox_config.json; ln -sf /opt/outline/outline-ss-server/config.yml /root/shadowbox/persisted-state/outline-ss-server/config.yml; var='kill -SIGHUP $(pgrep -f outline-ss-server)'; echo "*/15 * * * * $var" > mycron; crontab mycron; rm mycron;`,
99
+ lifecycle: {
100
+ postStart: {
101
+ exec: {
102
+ command: [
103
+ '/bin/sh',
104
+ '-c',
105
+ `echo '${JSON.stringify(serverConfig)}' > /root/shadowbox/persisted-state/shadowbox_server_config.json;`,
106
+ ],
107
+ },
108
+ },
109
+ },
110
+ ports: [
111
+ { containerPort: accessPort },
112
+ { containerPort: apiPort },
113
+ ],
114
+ env: [
115
+ {
116
+ name: 'SB_API_PORT',
117
+ value: apiPort.toString(),
118
+ },
119
+ {
120
+ name: 'SB_API_PREFIX',
121
+ value: id,
122
+ },
123
+ {
124
+ name: 'SB_CERTIFICATE_FILE',
125
+ value: '/tmp/shadowbox-selfsigned-dev.crt',
126
+ },
127
+ {
128
+ name: 'SB_PRIVATE_KEY_FILE',
129
+ value: '/tmp/shadowbox-selfsigned-dev.key',
130
+ },
131
+ ],
132
+ volumeMounts: [
133
+ {
134
+ name: 'server-config-volume',
135
+ mountPath: '/cache',
136
+ },
137
+ {
138
+ name: 'shadowbox-config',
139
+ mountPath: '/opt/outline',
140
+ },
141
+ {
142
+ name: 'shadowbox-config',
143
+ mountPath: '/root/shadowbox',
144
+ },
145
+ {
146
+ name: 'tls',
147
+ mountPath: '/tmp/shadowbox-selfsigned-dev.crt',
148
+ subPath: 'shadowbox-selfsigned-dev.crt',
149
+ readOnly: true,
150
+ },
151
+ {
152
+ name: 'tls',
153
+ mountPath: '/tmp/shadowbox-selfsigned-dev.key',
154
+ subPath: 'shadowbox-selfsigned-dev.key',
155
+ readOnly: true,
156
+ },
157
+ ],
158
+ resources,
159
+ },
160
+ ],
161
+ volumes: [
162
+ {
163
+ name: 'server-config-volume',
164
+ emptyDir: {},
165
+ },
166
+ {
167
+ name: 'shadowbox-config',
168
+ persistentVolumeClaim: {
169
+ claimName: persisVolume.metadata.name,
170
+ },
171
+ },
172
+ // {
173
+ // name: 'config',
174
+ // configMap: { name: configMap.metadata.name },
175
+ // },
176
+ {
177
+ name: 'tls',
178
+ secret: {
179
+ secretName: `tls-${name}-imported`,
180
+ items: [
181
+ {
182
+ key: 'tls.crt',
183
+ path: 'shadowbox-selfsigned-dev.crt',
184
+ },
185
+ {
186
+ key: 'tls.key',
187
+ path: 'shadowbox-selfsigned-dev.key',
188
+ },
189
+ ],
190
+ },
191
+ },
192
+ ],
193
+ },
194
+ },
195
+ },
196
+ }, {
197
+ dependsOn: [ns, persisVolume],
198
+ provider: others.provider,
199
+ });
200
+ if (autoScale) {
201
+ (0, PodAutoscaler_1.default)({
202
+ name,
203
+ deployment: outlineDeployment,
204
+ minReplicas: replicas ?? 1,
205
+ maxReplicas: 3,
206
+ ...others,
207
+ });
208
+ }
209
+ //Services
210
+ new kubernetes.core.v1.Service(name, {
211
+ metadata: {
212
+ name,
213
+ namespace,
214
+ labels: {
215
+ app: name,
216
+ },
217
+ },
218
+ spec: {
219
+ //type: "LoadBalancer",
220
+ ports: [
221
+ {
222
+ name: 'apiport-tcp',
223
+ port: apiPort,
224
+ targetPort: apiPort,
225
+ protocol: 'TCP',
226
+ },
227
+ {
228
+ name: 'apiport-udp',
229
+ port: apiPort,
230
+ targetPort: apiPort,
231
+ protocol: 'UDP',
232
+ },
233
+ {
234
+ name: 'accessport-tcp',
235
+ port: accessPort,
236
+ targetPort: accessPort,
237
+ protocol: 'TCP',
238
+ },
239
+ {
240
+ name: 'accessport-udp',
241
+ port: accessPort,
242
+ targetPort: accessPort,
243
+ protocol: 'UDP',
244
+ },
245
+ ],
246
+ selector: {
247
+ app: name,
248
+ },
249
+ },
250
+ }, {
251
+ dependsOn: outlineDeployment,
252
+ provider: others.provider,
253
+ deleteBeforeReplace: true,
254
+ });
255
+ };
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvS3ViZVgvVG9vbHMvT3V0bGluZVZwbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLG9EQUE2QztBQUU3QyxtREFBOEU7QUFDOUUsaURBQWlEO0FBQ2pELDJDQUF5RDtBQUN6RCxpREFBa0Q7QUFFbEQsMERBQW1EO0FBQ25ELGtFQUEwRDtBQTBCMUQsa0JBQWUsS0FBSyxFQUFFLEVBQ3BCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsT0FBTyxHQUFHLEtBQUssRUFDZixVQUFVLEdBQUcsS0FBSyxFQUNsQixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUFHLHlCQUF5QixFQUM3QyxRQUFRLEdBQUcsQ0FBQyxFQUNaLFNBQVMsR0FBRztJQUNWLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUN6QyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7Q0FDdEMsRUFDRCxTQUFTLEVBQ1QsR0FBRyxNQUFNLEVBQ0ksRUFBRSxFQUFFO0lBQ2pCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUMzQixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUNuQyxNQUFNLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztJQUVqRCxNQUFNLEVBQUUsR0FBRyxJQUFBLG1CQUFVLEVBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ25DLE1BQU0sRUFBRSxHQUFHLElBQUEsbUJBQVMsRUFBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRXJELE1BQU0sWUFBWSxHQUFHO1FBQ25CLFNBQVM7UUFDVCxTQUFTLEVBQUUsRUFBRTtRQUNiLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtLQUMxQixDQUFDO0lB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
@@ -0,0 +1,29 @@
1
+ import * as k8s from '@pulumi/kubernetes';
2
+ import { Input } from '@pulumi/pulumi';
3
+ import { KeyVaultInfo } from '../../types';
4
+ import { DefaultKsAppArgs } from '../types';
5
+ export interface SqlPadProps extends Omit<DefaultKsAppArgs, 'name'> {
6
+ namespace: Input<string>;
7
+ useVirtualHost?: boolean;
8
+ provider: k8s.Provider;
9
+ /**The database configuration follow this instruction: https://getsqlpad.com/en/connections/ */
10
+ databases?: {
11
+ [key: string]: Input<string>;
12
+ };
13
+ auth: {
14
+ azureAd?: {
15
+ allowedDomain?: string;
16
+ vaultInfo: KeyVaultInfo;
17
+ };
18
+ admin?: {
19
+ email: Input<string>;
20
+ };
21
+ };
22
+ vaultInfo?: KeyVaultInfo;
23
+ }
24
+ declare const _default: ({ namespace, ingress, useVirtualHost, databases, auth, vaultInfo, ...others }: SqlPadProps) => Promise<{
25
+ deployment: import("../kx").Deployment | undefined;
26
+ service: import("../kx").Service | undefined;
27
+ jobs: (import("@pulumi/kubernetes/batch/v1/cronJob").CronJob | import("../kx").Job)[] | undefined;
28
+ }>;
29
+ export default _default;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Storage_1 = require("../Storage");
4
+ const Deployment_1 = require("../Deployment");
5
+ const Role_1 = require("../../AzAd/Role");
6
+ const Identity_1 = require("../../AzAd/Identity");
7
+ const pulumi_1 = require("@pulumi/pulumi");
8
+ const AzureEnv_1 = require("../../Common/AzureEnv");
9
+ const GraphDefinition_1 = require("../../AzAd/GraphDefinition");
10
+ const Random_1 = require("../../Core/Random");
11
+ const createIdentity = async ({ callbackUrl, name, vaultInfo, }) => {
12
+ await (0, Role_1.default)({
13
+ env: AzureEnv_1.currentEnv,
14
+ appName: name,
15
+ roleName: 'Admin',
16
+ });
17
+ //Create Azure AD Identity for Authentication
18
+ return (0, Identity_1.default)({
19
+ name,
20
+ appRoleAssignmentRequired: true,
21
+ appRoles: [
22
+ {
23
+ id: 'c8d15513-8409-4275-86d0-7f6cb8c54997',
24
+ allowedMemberTypes: ['User'],
25
+ description: 'Sql Pad Admin Role',
26
+ displayName: 'Sql Pad Admin Role',
27
+ enabled: true,
28
+ value: 'admin',
29
+ },
30
+ {
31
+ id: '64318876-2259-4e26-8f94-59be1e5232bf',
32
+ allowedMemberTypes: ['User'],
33
+ description: 'Sql Pad User Role',
34
+ displayName: 'Sql Pad User Role',
35
+ enabled: true,
36
+ value: 'editor',
37
+ },
38
+ ],
39
+ requiredResourceAccesses: [
40
+ (0, GraphDefinition_1.getGraphPermissions)({ name: 'User.Read', type: 'Scope' }),
41
+ ],
42
+ createClientSecret: true,
43
+ createPrincipal: true,
44
+ replyUrls: [callbackUrl],
45
+ vaultInfo,
46
+ });
47
+ };
48
+ exports.default = async ({ namespace, ingress, useVirtualHost, databases, auth, vaultInfo, ...others }) => {
49
+ const name = 'sql-pad';
50
+ const hostName = ingress?.hostNames ? ingress.hostNames[0] : '';
51
+ const port = 3000;
52
+ const image = 'sqlpad/sqlpad:latest';
53
+ const callbackUrl = `https://${hostName}/auth/oidc/callback`.toLowerCase();
54
+ const adIdentity = auth?.azureAd
55
+ ? await createIdentity({
56
+ name,
57
+ callbackUrl,
58
+ vaultInfo: auth.azureAd.vaultInfo,
59
+ })
60
+ : undefined;
61
+ const volume = {
62
+ name: 'sqlpad',
63
+ //secretName: 'azure-storage',
64
+ mountPath: '/var/lib/sqlpad',
65
+ };
66
+ (0, Storage_1.createPVCForStorageClass)({
67
+ name: volume.name,
68
+ namespace,
69
+ ...others,
70
+ });
71
+ const secrets = {
72
+ SQLPAD_PASSPHRASE: (0, Random_1.randomPassword)({ name, policy: false, vaultInfo })
73
+ .result,
74
+ //localhost used in dev
75
+ //SQLPAD_BASE_URL: '/',
76
+ PUBLIC_URL: hostName,
77
+ SQLPAD_DB_PATH: `/var/lib/sqlpad/sqlDb`,
78
+ // Enable/disable automigration on SQLPad process start. Disable by setting to `false`
79
+ SQLPAD_DB_AUTOMIGRATE: 'true',
80
+ SQLPAD_APP_LOG_LEVEL: 'warn',
81
+ SQLPAD_WEB_LOG_LEVEL: 'error',
82
+ };
83
+ // ======== Authentication =========================
84
+ if (auth.azureAd) {
85
+ //Disable UserName and Password login
86
+ secrets['SQLPAD_USERPASS_AUTH_DISABLED'] = 'true';
87
+ secrets['SQLPAD_OIDC_LINK_HTML'] = 'Sign in with Azure AD';
88
+ secrets['SQLPAD_OIDC_CLIENT_ID'] = adIdentity?.clientId ?? '';
89
+ secrets['SQLPAD_OIDC_CLIENT_SECRET'] = secrets['SQLPAD_OIDC_CLIENT_ID'] =
90
+ adIdentity?.clientId ?? '';
91
+ secrets['SQLPAD_OIDC_ISSUER'] = (0, pulumi_1.interpolate) `https://login.microsoftonline.com/${AzureEnv_1.tenantId}/v2.0`;
92
+ secrets['SQLPAD_OIDC_AUTHORIZATION_URL'] = (0, pulumi_1.interpolate) `https://login.microsoftonline.com/${AzureEnv_1.tenantId}/oauth2/v2.0/authorize`;
93
+ secrets['SQLPAD_OIDC_TOKEN_URL'] = (0, pulumi_1.interpolate) `https://login.microsoftonline.com/${AzureEnv_1.tenantId}/oauth2/v2.0/token`;
94
+ secrets['SQLPAD_OIDC_USER_INFO_URL'] = (0, pulumi_1.interpolate) `https://graph.microsoft.com/oidc/userinfo`;
95
+ secrets['SQLPAD_OIDC_SCOPE'] = 'openid profile email';
96
+ secrets['SQLPAD_ALLOWED_DOMAINS'] = auth.azureAd?.allowedDomain ?? '';
97
+ }
98
+ else {
99
+ secrets['SQLPAD_ADMIN'] = auth.admin?.email ?? '';
100
+ secrets['SQLPAD_ADMIN_PASSWORD'] = (0, Random_1.randomPassword)({
101
+ name: `${name}-admin`,
102
+ policy: false,
103
+ vaultInfo,
104
+ }).result;
105
+ }
106
+ // ======== Db Connection Strings =========================
107
+ if (databases) {
108
+ Object.keys(databases).map((k) => {
109
+ secrets[`SQLPAD_CONNECTIONS__${k}__name`] = databases[k];
110
+ });
111
+ }
112
+ return (0, Deployment_1.default)({
113
+ name,
114
+ namespace,
115
+ secrets,
116
+ podConfig: {
117
+ ports: { http: port },
118
+ image,
119
+ //securityContext: defaultSecurityContext,
120
+ //podSecurityContext: defaultPodSecurityContext,
121
+ volumes: [volume],
122
+ },
123
+ deploymentConfig: { replicas: 1, useVirtualHost },
124
+ ingressConfig: ingress
125
+ ? {
126
+ ...ingress,
127
+ hostNames: [hostName],
128
+ }
129
+ : undefined,
130
+ ...others,
131
+ });
132
+ };
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FsUGFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0t1YmVYL1Rvb2xzL1NxbFBhZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHdDQUFzRDtBQUN0RCw4Q0FBdUM7QUFDdkMsMENBQTBDO0FBQzFDLGtEQUFrRDtBQUNsRCwyQ0FBOEQ7QUFDOUQsb0RBQTZEO0FBQzdELGdFQUFpRTtBQUVqRSw4Q0FBbUQ7QUFVbkQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEVBQzVCLFdBQVcsRUFDWCxJQUFJLEVBQ0osU0FBUyxHQUNLLEVBQUUsRUFBRTtJQUNsQixNQUFNLElBQUEsY0FBVyxFQUFDO1FBQ2hCLEdBQUcsRUFBRSxxQkFBVTtRQUNmLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLE9BQU87S0FDbEIsQ0FBQyxDQUFDO0lBRUgsNkNBQTZDO0lBQzdDLE9BQU8sSUFBQSxrQkFBZSxFQUFDO1FBQ3JCLElBQUk7UUFFSix5QkFBeUIsRUFBRSxJQUFJO1FBQy9CLFFBQVEsRUFBRTtZQUNSO2dCQUNFLEVBQUUsRUFBRSxzQ0FBc0M7Z0JBQzFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUM1QixXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxPQUFPLEVBQUUsSUFBSTtnQkFDYixLQUFLLEVBQUUsT0FBTzthQUNmO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLHNDQUFzQztnQkFDMUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLFdBQVcsRUFBRSxtQkFBbUI7Z0JBQ2hDLFdBQVcsRUFBRSxtQkFBbUI7Z0JBQ2hDLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxRQUFRO2FBQ2hCO1NBQ0Y7UUFFRCx3QkFBd0IsRUFBRTtZQUN4QixJQUFBLHFDQUFtQixFQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFF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
@@ -0,0 +1,10 @@
1
+ import * as k8s from '@pulumi/kubernetes';
2
+ import { Input, Resource } from '@pulumi/pulumi';
3
+ export interface ToolPodProps {
4
+ namespace: Input<string>;
5
+ provider: k8s.Provider;
6
+ useVirtualHost?: boolean;
7
+ dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
8
+ }
9
+ declare const _default: ({ namespace, useVirtualHost, ...others }: ToolPodProps) => void;
10
+ export default _default;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const k8s = require("@pulumi/kubernetes");
4
+ const SecurityRules_1 = require("../Core/SecurityRules");
5
+ const Deployment_1 = require("../Deployment");
6
+ exports.default = ({ namespace, useVirtualHost, ...others }) => {
7
+ const name = 'tool-pod';
8
+ const image = 'baoduy2412/toolbox:latest'; // 'aguasjmsft/toolpod';
9
+ new k8s.apps.v1.Deployment(name, {
10
+ metadata: {
11
+ name,
12
+ namespace,
13
+ annotations: { 'pulumi.com/skipAwait': 'true' },
14
+ },
15
+ spec: {
16
+ selector: { matchLabels: { app: name } },
17
+ template: {
18
+ metadata: { labels: { app: name } },
19
+ spec: {
20
+ securityContext: SecurityRules_1.defaultSecurityContext,
21
+ automountServiceAccountToken: false,
22
+ containers: [
23
+ {
24
+ name,
25
+ image,
26
+ securityContext: SecurityRules_1.defaultPodSecurityContext,
27
+ },
28
+ ],
29
+ nodeSelector: useVirtualHost
30
+ ? Deployment_1.virtualHostConfig.nodeSelector
31
+ : undefined,
32
+ tolerations: useVirtualHost
33
+ ? Deployment_1.virtualHostConfig.tolerations
34
+ : undefined,
35
+ },
36
+ },
37
+ },
38
+ }, others);
39
+ };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbFBvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9LdWJlWC9Ub29scy9Ub29sUG9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMENBQTBDO0FBRTFDLHlEQUcrQjtBQUMvQiw4Q0FBa0Q7QUFRbEQsa0JBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLEVBQWdCLEVBQUUsRUFBRTtJQUN4RSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUM7SUFDeEIsTUFBTSxLQUFLLEdBQUcsMkJBQTJCLENBQUMsQ0FBQyx3QkFBd0I7SUFFbkUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQ3hCLElBQUksRUFDSjtRQUNFLFFBQVEsRUFBRTtZQUNSLElBQUk7WUFDSixTQUFTO1lBQ1QsV0FBVyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFO1NBQ2hEO1FBQ0QsSUFBSSxFQUFFO1lBQ0osUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3hDLFFBQVEsRUFBRTtnQkFDUixRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ25DLElBQUksRUFBRTtvQkFDSixlQUFlLEVBQUUsc0NBQXNCO29CQUN2Qyw0QkFBNEIsRUFBRSxLQUFLO29CQUNuQyxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSTs0QkFDSixLQUFLOzRCQUNMLGVBQWUsRUFBRSx5Q0FBeUI7eUJBQzNDO3FCQUNGO29CQUVELFlBQVksRUFBRSxjQUFjO3dCQUMxQixDQUFDLENBQUMsOEJBQWlCLENBQUMsWUFBWTt3QkFDaEMsQ0FBQyxDQUFDLFNBQVM7b0JBQ2IsV0FBVyxFQUFFLGNBQWM7d0JBQ3pCLENBQUMsQ0FBQyw4QkFBaUIsQ0FBQyxXQUFXO3dCQUMvQixDQUFDLENBQUMsU0FBUztpQkFDZDthQUNGO1NBQ0Y7S0FDRixFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ import { DefaultKsAppArgs } from '../types';
2
+ export interface UptimeKumaProps extends DefaultKsAppArgs {
3
+ storageClassName?: string;
4
+ }
5
+ declare const _default: ({ namespace, ingress, storageClassName, ...others }: UptimeKumaProps) => void;
6
+ export default _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Deployment_1 = require("../Deployment");
4
+ const Storage_1 = require("../Storage");
5
+ exports.default = ({ namespace, ingress, storageClassName, ...others }) => {
6
+ const name = 'uptime-kuma';
7
+ const image = 'louislam/uptime-kuma:latest';
8
+ const port = 3001;
9
+ const persisVolume = (0, Storage_1.createPVCForStorageClass)({
10
+ name,
11
+ namespace,
12
+ storageClassName,
13
+ ...others,
14
+ });
15
+ (0, Deployment_1.default)({
16
+ name,
17
+ namespace,
18
+ podConfig: {
19
+ image,
20
+ ports: { http: port },
21
+ resources: { requests: { memory: '1Mi', cpu: '1m' } },
22
+ volumes: [
23
+ {
24
+ name: 'data',
25
+ mountPath: '/app/data',
26
+ subPath: 'data',
27
+ persistentVolumeClaim: persisVolume.metadata.name,
28
+ readOnly: false,
29
+ },
30
+ ],
31
+ //securityContext: { runAsUser: 1001, runAsGroup: 1001 },
32
+ },
33
+ deploymentConfig: { replicas: 1 },
34
+ ingressConfig: ingress,
35
+ ...others,
36
+ });
37
+ };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXB0aW1lS3VtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9LdWJlWC9Ub29scy9VcHRpbWVLdW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsOENBQXVDO0FBRXZDLHdDQUFzRDtBQU10RCxrQkFBZSxDQUFDLEVBQ2QsU0FBUyxFQUNULE9BQU8sRUFDUCxnQkFBZ0IsRUFDaEIsR0FBRyxNQUFNLEVBQ08sRUFBRSxFQUFFO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUMzQixNQUFNLEtBQUssR0FBRyw2QkFBNkIsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxZQUFZLEdBQUcsSUFBQSxrQ0FBd0IsRUFBQztRQUM1QyxJQUFJO1FBQ0osU0FBUztRQUNULGdCQUFnQjtRQUNoQixHQUFHLE1BQU07S0FDVixDQUFDLENBQUM7SUFFSCxJQUFBLG9CQUFVLEVBQUM7UUFDVCxJQUFJO1FBQ0osU0FBUztRQUVULFNBQVMsRUFBRTtZQUNULEtBQUs7WUFDTCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3JCLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3JELE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTTtvQkFDWixTQUFTLEVBQUUsV0FBVztvQkFDdEIsT0FBTyxFQUFFLE1BQU07b0JBQ2YscUJBQXFCLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJO29CQUNqRCxRQUFRLEVBQUUsS0FBSztpQkFDaEI7YUFDRjtZQUNELHlEQUF5RDtTQUMxRDtRQUNELGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRTtRQUNqQyxhQUFhLEVBQUUsT0FBTztRQUV0QixHQUFHLE1BQU07S0FDVixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMifQ==
@@ -0,0 +1,27 @@
1
+ import * as k8s from '@pulumi/kubernetes';
2
+ import { Input, Resource } from '@pulumi/pulumi';
3
+ import { ToolPodProps } from './ToolPod';
4
+ import { SqlPadProps } from './SqlPad';
5
+ import { OutlineProps } from './OutlineVpn';
6
+ import { NoIpProps } from './NoIp';
7
+ import { AppHealthMonitorProps } from './AppHealthzMonitor';
8
+ import { UptimeKumaProps } from './UptimeKuma';
9
+ import { OpenLDAPProps } from './OpenLDAP';
10
+ import { DefaultKsAppArgs } from '../types';
11
+ interface Props {
12
+ namespace: Input<string>;
13
+ provider: k8s.Provider;
14
+ helloWorld?: Omit<DefaultKsAppArgs, 'namespace' | 'provider' | 'dependsOn'>;
15
+ echo?: Omit<DefaultKsAppArgs, 'namespace' | 'provider' | 'dependsOn'>;
16
+ noIp?: Omit<NoIpProps, 'namespace' | 'provider' | 'dependsOn'>;
17
+ sqlPad?: Omit<SqlPadProps, 'namespace' | 'provider' | 'dependsOn'>;
18
+ toolPod?: Omit<ToolPodProps, 'namespace' | 'provider' | 'dependsOn'>;
19
+ outlineVpn?: Omit<OutlineProps, 'provider' | 'dependsOn'>;
20
+ openLdap?: Omit<OpenLDAPProps, 'provider' | 'dependsOn'>;
21
+ appHealthMonitor?: Omit<AppHealthMonitorProps, 'namespace' | 'provider' | 'dependsOn'>;
22
+ uptimeKuma?: Omit<UptimeKumaProps, 'namespace' | 'provider' | 'dependsOn'>;
23
+ enableKubeCleanup?: boolean;
24
+ dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
25
+ }
26
+ declare const _default: ({ helloWorld, echo, enableKubeCleanup, toolPod, noIp, sqlPad, outlineVpn, openLdap, appHealthMonitor, uptimeKuma, namespace, ...others }: Props) => Promise<void>;
27
+ export default _default;