@drunk-pulumi/azure 0.0.19 → 0.0.21

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 (162) hide show
  1. package/Aks/Helper.d.ts +0 -18
  2. package/Aks/Helper.js +50 -32
  3. package/Common/AutoTags.js +2 -1
  4. package/package.json +3 -6
  5. package/KubeX/AcrSecret.d.ts +0 -15
  6. package/KubeX/AcrSecret.js +0 -31
  7. package/KubeX/Apps/AstroPage.d.ts +0 -12
  8. package/KubeX/Apps/AstroPage.js +0 -33
  9. package/KubeX/Apps/KafKa.d.ts +0 -6
  10. package/KubeX/Apps/KafKa.js +0 -13
  11. package/KubeX/Apps/Nobelium.d.ts +0 -13
  12. package/KubeX/Apps/Nobelium.js +0 -37
  13. package/KubeX/Apps/Wikijs.d.ts +0 -30
  14. package/KubeX/Apps/Wikijs.js +0 -54
  15. package/KubeX/Apps/WordPress.d.ts +0 -24
  16. package/KubeX/Apps/WordPress.js +0 -55
  17. package/KubeX/Apps/YarpProxy/index.d.ts +0 -17
  18. package/KubeX/Apps/YarpProxy/index.js +0 -107
  19. package/KubeX/Apps/YarpProxy/type.d.ts +0 -55
  20. package/KubeX/Apps/YarpProxy/type.js +0 -3
  21. package/KubeX/CertHelper.d.ts +0 -1
  22. package/KubeX/CertHelper.js +0 -9
  23. package/KubeX/CertImports.d.ts +0 -19
  24. package/KubeX/CertImports.js +0 -70
  25. package/KubeX/CloudFlare/CertCreator.d.ts +0 -19
  26. package/KubeX/CloudFlare/CertCreator.js +0 -90
  27. package/KubeX/CloudFlare/CertImports.d.ts +0 -17
  28. package/KubeX/CloudFlare/CertImports.js +0 -34
  29. package/KubeX/CloudFlare/DynamicDns.d.ts +0 -21
  30. package/KubeX/CloudFlare/DynamicDns.js +0 -39
  31. package/KubeX/CloudFlare/Tunnel-Helm.d.ts +0 -17
  32. package/KubeX/CloudFlare/Tunnel-Helm.js +0 -12
  33. package/KubeX/CloudFlare/Tunnel.d.ts +0 -23
  34. package/KubeX/CloudFlare/Tunnel.js +0 -54
  35. package/KubeX/CloudFlare/index.d.ts +0 -13
  36. package/KubeX/CloudFlare/index.js +0 -36
  37. package/KubeX/Clusters/K3s/AutoUpgradeController/index.d.ts +0 -6
  38. package/KubeX/Clusters/K3s/AutoUpgradeController/index.js +0 -60
  39. package/KubeX/ConfigSecret.d.ts +0 -24
  40. package/KubeX/ConfigSecret.js +0 -38
  41. package/KubeX/Core/CertManager/index.d.ts +0 -24
  42. package/KubeX/Core/CertManager/index.js +0 -96
  43. package/KubeX/Core/KsCertSecret.d.ts +0 -12
  44. package/KubeX/Core/KsCertSecret.js +0 -22
  45. package/KubeX/Core/KsSecret.d.ts +0 -9
  46. package/KubeX/Core/KsSecret.js +0 -12
  47. package/KubeX/Core/LoadBalancer/MetalLB.d.ts +0 -7
  48. package/KubeX/Core/LoadBalancer/MetalLB.js +0 -21
  49. package/KubeX/Core/Monitoring/index.d.ts +0 -22
  50. package/KubeX/Core/Monitoring/index.js +0 -322
  51. package/KubeX/Core/Namespace.d.ts +0 -12
  52. package/KubeX/Core/Namespace.js +0 -41
  53. package/KubeX/Core/Nginx/index.d.ts +0 -60
  54. package/KubeX/Core/Nginx/index.js +0 -109
  55. package/KubeX/Core/OAuthProxy/index.d.ts +0 -0
  56. package/KubeX/Core/OAuthProxy/index.js +0 -3
  57. package/KubeX/Core/ResourceQuota.d.ts +0 -12
  58. package/KubeX/Core/ResourceQuota.js +0 -13
  59. package/KubeX/Core/SecurityRules.d.ts +0 -34
  60. package/KubeX/Core/SecurityRules.js +0 -93
  61. package/KubeX/Core/StorageClass/azureBlob.d.ts +0 -20
  62. package/KubeX/Core/StorageClass/azureBlob.js +0 -77
  63. package/KubeX/Core/StorageClass/azureFile.d.ts +0 -17
  64. package/KubeX/Core/StorageClass/azureFile.js +0 -45
  65. package/KubeX/Core/StorageClass/index.d.ts +0 -13
  66. package/KubeX/Core/StorageClass/index.js +0 -25
  67. package/KubeX/Core/index.d.ts +0 -57
  68. package/KubeX/Core/index.js +0 -94
  69. package/KubeX/Databases/MariaDb.d.ts +0 -11
  70. package/KubeX/Databases/MariaDb.js +0 -39
  71. package/KubeX/Databases/MySql.V2.d.ts +0 -11
  72. package/KubeX/Databases/MySql.V2.js +0 -40
  73. package/KubeX/Databases/MySql.d.ts +0 -13
  74. package/KubeX/Databases/MySql.js +0 -55
  75. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.d.ts +0 -10
  76. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.js +0 -47
  77. package/KubeX/Databases/PostgreSql/PostgreSQL.d.ts +0 -10
  78. package/KubeX/Databases/PostgreSql/PostgreSQL.js +0 -51
  79. package/KubeX/Databases/PostgreSql/PostgreSql.v1.d.ts +0 -13
  80. package/KubeX/Databases/PostgreSql/PostgreSql.v1.js +0 -56
  81. package/KubeX/Databases/PostgreSql/index.d.ts +0 -17
  82. package/KubeX/Databases/PostgreSql/index.js +0 -6
  83. package/KubeX/Databases/RedisCache.d.ts +0 -14
  84. package/KubeX/Databases/RedisCache.js +0 -65
  85. package/KubeX/Databases/SqlServer.d.ts +0 -15
  86. package/KubeX/Databases/SqlServer.js +0 -77
  87. package/KubeX/Deployment/PodAutoscaler.d.ts +0 -14
  88. package/KubeX/Deployment/PodAutoscaler.js +0 -51
  89. package/KubeX/Deployment/index.d.ts +0 -136
  90. package/KubeX/Deployment/index.js +0 -306
  91. package/KubeX/Helpers.d.ts +0 -4
  92. package/KubeX/Helpers.js +0 -17
  93. package/KubeX/Ingress/AppGatewayIngress.d.ts +0 -2
  94. package/KubeX/Ingress/AppGatewayIngress.js +0 -4
  95. package/KubeX/Ingress/Conts.d.ts +0 -13
  96. package/KubeX/Ingress/Conts.js +0 -18
  97. package/KubeX/Ingress/NginxIngress.d.ts +0 -3
  98. package/KubeX/Ingress/NginxIngress.js +0 -186
  99. package/KubeX/Ingress/NginxProxy.d.ts +0 -21
  100. package/KubeX/Ingress/NginxProxy.js +0 -43
  101. package/KubeX/Ingress/TraefikIngress/CustomHeader.d.ts +0 -15
  102. package/KubeX/Ingress/TraefikIngress/CustomHeader.js +0 -15
  103. package/KubeX/Ingress/TraefikIngress/index.d.ts +0 -11
  104. package/KubeX/Ingress/TraefikIngress/index.js +0 -95
  105. package/KubeX/Ingress/index.d.ts +0 -5
  106. package/KubeX/Ingress/index.js +0 -12
  107. package/KubeX/Ingress/type.d.ts +0 -82
  108. package/KubeX/Ingress/type.js +0 -3
  109. package/KubeX/Providers/index.d.ts +0 -8
  110. package/KubeX/Providers/index.js +0 -15
  111. package/KubeX/Storage/Longhorn/index.d.ts +0 -15
  112. package/KubeX/Storage/Longhorn/index.js +0 -54
  113. package/KubeX/Storage/index.d.ts +0 -25
  114. package/KubeX/Storage/index.js +0 -79
  115. package/KubeX/Tools/AWS/LocalStack.d.ts +0 -7
  116. package/KubeX/Tools/AWS/LocalStack.js +0 -29
  117. package/KubeX/Tools/AWS/S3.d.ts +0 -6
  118. package/KubeX/Tools/AWS/S3.js +0 -44
  119. package/KubeX/Tools/AWS/index.d.ts +0 -7
  120. package/KubeX/Tools/AWS/index.js +0 -14
  121. package/KubeX/Tools/AppHealthzMonitor.d.ts +0 -18
  122. package/KubeX/Tools/AppHealthzMonitor.js +0 -52
  123. package/KubeX/Tools/ArgoCD/index.d.ts +0 -17
  124. package/KubeX/Tools/ArgoCD/index.js +0 -131
  125. package/KubeX/Tools/Dapr/Storage.d.ts +0 -66
  126. package/KubeX/Tools/Dapr/Storage.js +0 -70
  127. package/KubeX/Tools/Dapr/index.d.ts +0 -10
  128. package/KubeX/Tools/Dapr/index.js +0 -31
  129. package/KubeX/Tools/Echo-App.d.ts +0 -3
  130. package/KubeX/Tools/Echo-App.js +0 -21
  131. package/KubeX/Tools/Gitea/GiteaRepo.d.ts +0 -72
  132. package/KubeX/Tools/Gitea/GiteaRepo.js +0 -184
  133. package/KubeX/Tools/Gitea/GiteaRunner.d.ts +0 -11
  134. package/KubeX/Tools/Gitea/GiteaRunner.js +0 -37
  135. package/KubeX/Tools/Gitea/GiteaRunner.v1.d.ts +0 -11
  136. package/KubeX/Tools/Gitea/GiteaRunner.v1.js +0 -123
  137. package/KubeX/Tools/HarborRepo.d.ts +0 -29
  138. package/KubeX/Tools/HarborRepo.js +0 -78
  139. package/KubeX/Tools/HelloWorld.d.ts +0 -3
  140. package/KubeX/Tools/HelloWorld.js +0 -21
  141. package/KubeX/Tools/KubeCleanup.d.ts +0 -9
  142. package/KubeX/Tools/KubeCleanup.js +0 -34
  143. package/KubeX/Tools/NoIp.d.ts +0 -13
  144. package/KubeX/Tools/NoIp.js +0 -24
  145. package/KubeX/Tools/OpenLDAP/index.d.ts +0 -12
  146. package/KubeX/Tools/OpenLDAP/index.js +0 -56
  147. package/KubeX/Tools/OutlineVpn/index.d.ts +0 -25
  148. package/KubeX/Tools/OutlineVpn/index.js +0 -256
  149. package/KubeX/Tools/SqlPad.d.ts +0 -29
  150. package/KubeX/Tools/SqlPad.js +0 -133
  151. package/KubeX/Tools/ToolPod.d.ts +0 -10
  152. package/KubeX/Tools/ToolPod.js +0 -40
  153. package/KubeX/Tools/UptimeKuma.d.ts +0 -6
  154. package/KubeX/Tools/UptimeKuma.js +0 -38
  155. package/KubeX/Tools/index.d.ts +0 -27
  156. package/KubeX/Tools/index.js +0 -35
  157. package/KubeX/VairableResolvers/index.d.ts +0 -15
  158. package/KubeX/VairableResolvers/index.js +0 -49
  159. package/KubeX/kx/index.d.ts +0 -114
  160. package/KubeX/kx/index.js +0 -423
  161. package/KubeX/types.d.ts +0 -49
  162. package/KubeX/types.js +0 -3
@@ -1,56 +0,0 @@
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
@@ -1,25 +0,0 @@
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;
@@ -1,256 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvS3ViZVgvVG9vbHMvT3V0bGluZVZwbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLG9EQUE2QztBQUU3QyxtREFBOEU7QUFDOUUsaURBQWlEO0FBQ2pELDJDQUF5RDtBQUN6RCxpREFBa0Q7QUFFbEQsMERBQW1EO0FBQ25ELGtFQUEwRDtBQTBCMUQsa0JBQWUsS0FBSyxFQUFFLEVBQ3BCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsT0FBTyxHQUFHLEtBQUssRUFDZixVQUFVLEdBQUcsS0FBSyxFQUNsQixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUFHLHlCQUF5QixFQUM3QyxRQUFRLEdBQUcsQ0FBQyxFQUNaLFNBQVMsR0FBRztJQUNWLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUN6QyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7Q0FDdEMsRUFDRCxTQUFTLEVBQ1QsR0FBRyxNQUFNLEVBQ0ksRUFBRSxFQUFFO0lBQ2pCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUMzQixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUNuQyxNQUFNLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztJQUVqRCxNQUFNLEVBQUUsR0FBRyxJQUFBLG1CQUFVLEVBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ25DLE1BQU0sRUFBRSxHQUFHLElBQUEsbUJBQVMsRUFBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRXJELE1BQU0sWUFBWSxHQUFHO1FBQ25CLFNBQVM7UUFDVCxTQUFTLEVBQUUsRUFBRTtRQUNiLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtLQUMxQixDQUFDO0lBRUYsTUFBTTtJQUNOLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsSUFBQSxzQkFBWSxFQUFDO1lBQ1gsSUFBSSxFQUFFLE9BQU8sSUFBSSxXQUFXO1lBQzVCLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNuQixHQUFHLFlBQVk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztTQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUMzQyxNQUFNLElBQUEsaUNBQW1CLEVBQUM7WUFDeEIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMvQixTQUFTO1lBQ1QsR0FBRyxZQUFZO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQixJQUFBLGtDQUFvQixFQUFDO1lBQ25CLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQy9CLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN2QixHQUFHLFlBQVk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFDWixzQ0FBc0M7SUFDdEMsVUFBVTtJQUNWLE1BQU07SUFDTiwrQkFBK0I7SUFDL0Isa0NBQWtDO0lBQ2xDLE9BQU87SUFDUCxXQUFXO0lBQ1gsS0FBSztJQUVMLFNBQVM7SUFDVCxNQUFNLFlBQVksR0FBRyxJQUFBLGtDQUF3QixFQUFDO1FBQzVDLElBQUk7UUFDSixnQkFBZ0I7UUFDaEIsR0FBRyxZQUFZO0tBQ2hCLENBQUMsQ0FBQztJQUVILE1BQU0sWUFBWSxHQUFHO1FBQ25CLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEQsb0JBQW9CLEVBQUUsVUFBVTtRQUNoQyxRQUFRO0tBQ1QsQ0FBQztJQUVGLFlBQVk7SUFDWixNQUFNLGlCQUFpQixHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUN6RCxJQUFJLEVBQ0o7UUFDRSxRQUFRLEVBQUU7WUFDUixJQUFJO1lBQ0osU0FBUztZQUNULFdBQVcsRUFBRTtnQkFDWCxzQkFBc0IsRUFBRSxNQUFNO2dCQUM5Qix1QkFBdUIsRUFBRSxNQUFNO2FBQ2hDO1NBQ0Y7UUFDRCxJQUFJLEVBQUU7WUFDSixRQUFRO1lBQ1IsUUFBUSxFQUFFO2dCQUNSLFdBQVcsRUFBRTtvQkFDWCxJQUFJO29CQUNKLEdBQUcsRUFBRSxJQUFJO2lCQUNWO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFO29CQUNSLE1BQU0sRUFBRTt3QkFDTixJQUFJO3dCQUNKLEdBQUcsRUFBRSxJQUFJO3FCQUNWO2lCQUNGO2dCQUNELElBQUksRUFBRTtvQkFDSixpQkFBaUI7b0JBQ2pCLFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxJQUFJOzRCQUNKLEtBQUs7NEJBQ0wsb3dCQUFvd0I7NEJBQ3B3QixTQUFTLEVBQUU7Z0NBQ1QsU0FBUyxFQUFFO29DQUNULElBQUksRUFBRTt3Q0FDSixPQUFPLEVBQUU7NENBQ1AsU0FBUzs0Q0FDVCxJQUFJOzRDQUNKLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FDckIsWUFBWSxDQUNiLG1FQUFtRTt5Q0FDckU7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7NEJBQ0QsS0FBSyxFQUFFO2dDQUNMLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRTtnQ0FDN0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFOzZCQUMzQjs0QkFDRCxHQUFHLEVBQUU7Z0NBQ0g7b0NBQ0UsSUFBSSxFQUFFLGFBQWE7b0NBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFO2lDQUMxQjtnQ0FDRDtvQ0FDRSxJQUFJLEVBQUUsZUFBZTtvQ0FDckIsS0FBSyxFQUFFLEVBQUU7aUNBQ1Y7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLHFCQUFxQjtvQ0FDM0IsS0FBSyxFQUFFLG1DQUFtQztpQ0FDM0M7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLHFCQUFxQjtvQ0FDM0IsS0FBSyxFQUFFLG1DQUFtQztpQ0FDM0M7NkJBQ0Y7NEJBQ0QsWUFBWSxFQUFFO2dDQUNaO29DQUNFLElBQUksRUFBRSxzQkFBc0I7b0NBQzVCLFNBQVMsRUFBRSxRQUFRO2lDQUNwQjtnQ0FDRDtvQ0FDRSxJQUFJLEVBQUUsa0JBQWtCO29DQUN4QixTQUFTLEVBQUUsY0FBYztpQ0FDMUI7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLGtCQUFrQjtvQ0FDeEIsU0FBUyxFQUFFLGlCQUFpQjtpQ0FDN0I7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLEtBQUs7b0NBQ1gsU0FBUyxFQUFFLG1DQUFtQztvQ0FDOUMsT0FBTyxFQUFFLDhCQUE4QjtvQ0FDdkMsUUFBUSxFQUFFLElBQUk7aUNBQ2Y7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLEtBQUs7b0NBQ1gsU0FBUyxFQUFFLG1DQUFtQztvQ0FDOUMsT0FBTyxFQUFFLDhCQUE4QjtvQ0FDdkMsUUFBUSxFQUFFLElBQUk7aUNBQ2Y7NkJBQ0Y7NEJBRUQsU0FBUzt5QkFDVjtxQkFDRjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsSUFBSSxFQUFFLHNCQUFzQjs0QkFDNUIsUUFBUSxFQUFFLEVBQUU7eUJBQ2I7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGtCQUFrQjs0QkFDeEIscUJBQXFCLEVBQUU7Z0NBQ3JCLFNBQVMsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUk7NkJBQ3RDO3lCQUNGO3dCQUNELElBQUk7d0JBQ0osb0JBQW9CO3dCQUNwQixrREFBa0Q7d0JBQ2xELEtBQUs7d0JBQ0w7NEJBQ0UsSUFBSSxFQUFFLEtBQUs7NEJBQ1gsTUFBTSxFQUFFO2dDQUNOLFVBQVUsRUFBRSxPQUFPLElBQUksV0FBVztnQ0FDbEMsS0FBSyxFQUFFO29DQUNMO3dDQUNFLEdBQUcsRUFBRSxTQUFTO3dDQUNkLElBQUksRUFBRSw4QkFBOEI7cUNBQ3JDO29DQUNEO3dDQUNFLEdBQUcsRUFBRSxTQUFTO3dDQUNkLElBQUksRUFBRSw4QkFBOEI7cUNBQ3JDO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLEVBQ0Q7UUFDRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDO1FBQzdCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtLQUMxQixDQUNGLENBQUM7SUFFRixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsSUFBQSx1QkFBWSxFQUFDO1lBQ1gsSUFBSTtZQUNKLFVBQVUsRUFBRSxpQkFBaUI7WUFDN0IsV0FBVyxFQUFFLFFBQVEsSUFBSSxDQUFDO1lBQzFCLFdBQVcsRUFBRSxDQUFDO1lBQ2QsR0FBRyxNQUFNO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7SUFDVixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FDNUIsSUFBSSxFQUNKO1FBQ0UsUUFBUSxFQUFFO1lBQ1IsSUFBSTtZQUNKLFNBQVM7WUFFVCxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxFQUFFLElBQUk7YUFDVjtTQUNGO1FBQ0QsSUFBSSxFQUFFO1lBQ0osdUJBQXVCO1lBQ3ZCLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsYUFBYTtvQkFDbkIsSUFBSSxFQUFFLE9BQU87b0JBQ2IsVUFBVSxFQUFFLE9BQU87b0JBQ25CLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsYUFBYTtvQkFDbkIsSUFBSSxFQUFFLE9BQU87b0JBQ2IsVUFBVSxFQUFFLE9BQU87b0JBQ25CLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEdBQUcsRUFBRSxJQUFJO2FBQ1Y7U0FDRjtLQUNGLEVBQ0Q7UUFDRSxTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN6QixtQkFBbUIsRUFBRSxJQUFJO0tBQzFCLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
@@ -1,29 +0,0 @@
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;
@@ -1,133 +0,0 @@
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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
@@ -1,10 +0,0 @@
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;
@@ -1,40 +0,0 @@
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=
@@ -1,6 +0,0 @@
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;
@@ -1,38 +0,0 @@
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==
@@ -1,27 +0,0 @@
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;