@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,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyDeploymentRules = exports.defaultResources = exports.defaultPodSecurityContext = exports.defaultSecurityContext = exports.defaultResponseHeaders = void 0;
4
- var Conts_1 = require("../Ingress/Conts");
5
- Object.defineProperty(exports, "defaultResponseHeaders", { enumerable: true, get: function () { return Conts_1.defaultResponseHeaders; } });
6
- exports.defaultSecurityContext = {
7
- runAsUser: 1000,
8
- runAsGroup: 3000,
9
- fsGroup: 2000,
10
- };
11
- exports.defaultPodSecurityContext = {
12
- readOnlyRootFilesystem: false,
13
- privileged: false,
14
- runAsNonRoot: true,
15
- allowPrivilegeEscalation: false,
16
- fsGroupChangePolicy: 'OnRootMismatch',
17
- capabilities: {
18
- add: ['NET_ADMIN', 'SYS_TIME'],
19
- drop: ['ALL'],
20
- },
21
- };
22
- exports.defaultResources = {
23
- limits: { cpu: '500m', memory: '500Mi' },
24
- requests: { cpu: '10m', memory: '100Mi' },
25
- };
26
- const disableAutoMountServiceAccount = (obj) => {
27
- //Update Auto mount Service Account
28
- obj.spec.template.spec.automountServiceAccountToken = false;
29
- };
30
- const applySecurity = (obj) => {
31
- //Update Security Context
32
- if (obj.spec.template.spec.securityContext)
33
- obj.spec.template.spec.securityContext = {
34
- ...exports.defaultSecurityContext,
35
- ...obj.spec.template.spec.securityContext,
36
- };
37
- else
38
- obj.spec.template.spec.securityContext = exports.defaultSecurityContext;
39
- const containers = obj.spec.template.spec.containers;
40
- containers.forEach((c) => {
41
- //Update Pod Security Context
42
- if (c.securityContext)
43
- c.securityContext = {
44
- ...exports.defaultPodSecurityContext,
45
- ...c.securityContext,
46
- };
47
- else
48
- c.securityContext = exports.defaultPodSecurityContext;
49
- });
50
- };
51
- const applyResourceLimits = (obj) => {
52
- //Update the resources
53
- const containers = obj.spec.template.spec.containers;
54
- containers.forEach((c) => {
55
- //Update the resources
56
- if (c.resources)
57
- c.resources = {
58
- ...exports.defaultResources,
59
- ...c.resources,
60
- };
61
- else
62
- c.resources = exports.defaultResources;
63
- });
64
- };
65
- const updateRevisionHistoryLimit = (obj) => {
66
- if (!obj.spec.revisionHistoryLimit) {
67
- obj.spec.revisionHistoryLimit = 1;
68
- }
69
- };
70
- //Apply Security Context and Resources
71
- const applyDeploymentRules = (obj, options = { disableServiceAccount: true }) => {
72
- if (!['DaemonSet', 'Deployment', 'StatefulSet', 'Job', 'CronJob'].includes(obj.kind))
73
- return obj;
74
- if (options.ignoredKinds?.includes(obj.kind)) {
75
- console.warn('applyDeploymentRules ignored:', `${obj.kind}-${obj.metadata.name}`);
76
- return obj;
77
- }
78
- //Update the resources
79
- applyResourceLimits(obj);
80
- updateRevisionHistoryLimit(obj);
81
- // disableAutoMountServiceAccount
82
- if (options.disableServiceAccount &&
83
- ['Deployment', 'Job', 'CronJob'].includes(obj.kind)) {
84
- disableAutoMountServiceAccount(obj);
85
- }
86
- if (!options.ignoreSecurityContext) {
87
- //Update Security Context
88
- applySecurity(obj);
89
- }
90
- return obj;
91
- };
92
- exports.applyDeploymentRules = applyDeploymentRules;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlSdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9LdWJlWC9Db3JlL1NlY3VyaXR5UnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMENBQTBEO0FBQWpELCtHQUFBLHNCQUFzQixPQUFBO0FBRWxCLFFBQUEsc0JBQXNCLEdBQUc7SUFDcEMsU0FBUyxFQUFFLElBQUk7SUFDZixVQUFVLEVBQUUsSUFBSTtJQUNoQixPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFVyxRQUFBLHlCQUF5QixHQUFHO0lBQ3ZDLHNCQUFzQixFQUFFLEtBQUs7SUFDN0IsVUFBVSxFQUFFLEtBQUs7SUFDakIsWUFBWSxFQUFFLElBQUk7SUFDbEIsd0JBQXdCLEVBQUUsS0FBSztJQUMvQixtQkFBbUIsRUFBRSxnQkFBZ0I7SUFDckMsWUFBWSxFQUFFO1FBQ1osR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQztRQUM5QixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7S0FDZDtDQUNGLENBQUM7QUFFVyxRQUFBLGdCQUFnQixHQUFHO0lBQzlCLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUN4QyxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7Q0FDMUMsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtJQUNsRCxtQ0FBbUM7SUFDbkMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLEtBQUssQ0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO0lBQ2pDLHlCQUF5QjtJQUN6QixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FB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
@@ -1,20 +0,0 @@
1
- import { DefaultK8sArgs } from '../../types';
2
- import { Input } from '@pulumi/pulumi';
3
- export declare const defaultBlobFuseMountOptions: string[];
4
- export declare const defaultBlobNfsMountOptions: string[];
5
- export interface AzureBlobStorageClassProps extends Omit<DefaultK8sArgs, 'name' | 'namespace'> {
6
- isDefault?: boolean;
7
- skuName: 'Premium_LRS' | 'Standard_LRS' | 'StandardSSD_LRS';
8
- storageAccount: Input<string>;
9
- fuse?: {
10
- mountOptions?: Input<string>[];
11
- };
12
- nfs?: {
13
- mountOptions?: Input<string>[];
14
- };
15
- }
16
- declare const _default: ({ fuse, nfs, storageAccount, skuName, isDefault, ...others }: AzureBlobStorageClassProps) => {
17
- fuseStorageClass: import("@pulumi/kubernetes/storage/v1/storageClass").StorageClass | undefined;
18
- nfsStorageClass: import("@pulumi/kubernetes/storage/v1/storageClass").StorageClass | undefined;
19
- };
20
- export default _default;
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultBlobNfsMountOptions = exports.defaultBlobFuseMountOptions = void 0;
4
- const k8s = require("@pulumi/kubernetes");
5
- const StackEnv_1 = require("../../../Common/StackEnv");
6
- exports.defaultBlobFuseMountOptions = [
7
- '-o allow_other',
8
- '--file-cache-timeout-in-seconds=120',
9
- '--use-attr-cache=true',
10
- '--cancel-list-on-mount-seconds=10',
11
- '-o attr_timeout=120',
12
- '-o entry_timeout=120',
13
- '-o negative_timeout=120',
14
- '--log-level=LOG_WARNING',
15
- '--cache-size-mb=1000',
16
- ];
17
- exports.defaultBlobNfsMountOptions = [
18
- '-o allow_other',
19
- '--file-cache-timeout-in-seconds=120',
20
- '--use-attr-cache=true',
21
- '--cancel-list-on-mount-seconds=10',
22
- '-o attr_timeout=120',
23
- '-o entry_timeout=120',
24
- '-o negative_timeout=120',
25
- '--log-level=LOG_WARNING',
26
- '--cache-size-mb=1000',
27
- ];
28
- exports.default = ({ fuse, nfs, storageAccount, skuName, isDefault, ...others }) => {
29
- const nfsname = `${StackEnv_1.organization}-azureblob-nfs-${skuName.replace('_', '-')}`.toLowerCase();
30
- const fusename = `${StackEnv_1.organization}-azureblob-fuse-${skuName.replace('_', '-')}`.toLowerCase();
31
- const provisioner = 'blob.csi.azure.com';
32
- let fuseStorageClass = undefined;
33
- let nfsStorageClass = undefined;
34
- if (fuse)
35
- fuseStorageClass = new k8s.storage.v1.StorageClass(fusename, {
36
- metadata: {
37
- name: fusename,
38
- annotations: isDefault
39
- ? {
40
- 'storageclass.kubernetes.io/is-default-class': 'true',
41
- }
42
- : undefined,
43
- },
44
- provisioner,
45
- allowVolumeExpansion: true,
46
- reclaimPolicy: 'Delete',
47
- volumeBindingMode: 'Immediate',
48
- parameters: {
49
- storageAccount,
50
- skuName,
51
- },
52
- mountOptions: exports.defaultBlobFuseMountOptions,
53
- }, others);
54
- if (nfs)
55
- nfsStorageClass = new k8s.storage.v1.StorageClass(nfsname, {
56
- metadata: {
57
- name: nfsname,
58
- annotations: isDefault
59
- ? {
60
- 'storageclass.kubernetes.io/is-default-class': 'true',
61
- }
62
- : undefined,
63
- },
64
- provisioner,
65
- allowVolumeExpansion: true,
66
- reclaimPolicy: 'Delete',
67
- volumeBindingMode: 'Immediate',
68
- parameters: {
69
- protocol: 'nfs',
70
- storageAccount,
71
- skuName,
72
- },
73
- //mountOptions: defaultBlobFuseMountOptions,
74
- }, others);
75
- return { fuseStorageClass, nfsStorageClass };
76
- };
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmVCbG9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0t1YmVYL0NvcmUvU3RvcmFnZUNsYXNzL2F6dXJlQmxvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwQ0FBMEM7QUFHMUMsdURBQXdEO0FBRTNDLFFBQUEsMkJBQTJCLEdBQUc7SUFDekMsZ0JBQWdCO0lBQ2hCLHFDQUFxQztJQUNyQyx1QkFBdUI7SUFDdkIsbUNBQW1DO0lBQ25DLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixzQkFBc0I7Q0FDdkIsQ0FBQztBQUVXLFFBQUEsMEJBQTBCLEdBQUc7SUFDeEMsZ0JBQWdCO0lBQ2hCLHFDQUFxQztJQUNyQyx1QkFBdUI7SUFDdkIsbUNBQW1DO0lBQ25DLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixzQkFBc0I7Q0FDdkIsQ0FBQztBQWVGLGtCQUFlLENBQUMsRUFDZCxJQUFJLEVBQ0osR0FBRyxFQUNILGNBQWMsRUFDZCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsTUFBTSxFQUNrQixFQUFFLEVBQUU7SUFDL0IsTUFBTSxPQUFPLEdBQUcsR0FBRyx1QkFBWSxrQkFBa0IsT0FBTyxDQUFDLE9BQU8sQ0FDOUQsR0FBRyxFQUNILEdBQUcsQ0FDSixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEIsTUFBTSxRQUFRLEdBQUcsR0FBRyx1QkFBWSxtQkFBbUIsT0FBTyxDQUFDLE9BQU8sQ0FDaEUsR0FBRyxFQUNILEdBQUcsQ0FDSixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFbEIsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUM7SUFFekMsSUFBSSxnQkFBZ0IsR0FBNEMsU0FBUyxDQUFDO0lBQzFFLElBQUksZUFBZSxHQUE0QyxTQUFTLENBQUM7SUFFekUsSUFBSSxJQUFJO1FBQ04sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQ2hELFFBQVEsRUFDUjtZQUNFLFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsU0FBUztvQkFDcEIsQ0FBQyxDQUFDO3dCQUNFLDZDQUE2QyxFQUFFLE1BQU07cUJBQ3REO29CQUNILENBQUMsQ0FBQyxTQUFTO2FBQ2Q7WUFDRCxXQUFXO1lBQ1gsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixhQUFhLEVBQUUsUUFBUTtZQUN2QixpQkFBaUIsRUFBRSxXQUFXO1lBQzlCLFVBQVUsRUFBRTtnQkFDVixjQUFjO2dCQUNkLE9BQU87YUFDUjtZQUNELFlBQVksRUFBRSxtQ0FBMkI7U0FDMUMsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUVKLElBQUksR0FBRztRQUNMLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FDL0MsT0FBTyxFQUNQO1lBQ0UsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxPQUFPO2dCQUNiLFdBQVcsRUFBRSxTQUFTO29CQUNwQixDQUFDLENBQUM7d0JBQ0UsNkNBQTZDLEVBQUUsTUFBTTtxQkFDdEQ7b0JBQ0gsQ0FBQyxDQUFDLFNBQVM7YUFDZDtZQUNELFdBQVc7WUFDWCxvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLGlCQUFpQixFQUFFLFdBQVc7WUFDOUIsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxLQUFLO2dCQUNmLGNBQWM7Z0JBQ2QsT0FBTzthQUNSO1lBQ0QsNENBQTRDO1NBQzdDLEVBQ0QsTUFBTSxDQUNQLENBQUM7SUFFSixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDL0MsQ0FBQyxDQUFDIn0=
@@ -1,17 +0,0 @@
1
- import { DefaultK8sArgs } from '../../types';
2
- import { Input } from '@pulumi/pulumi';
3
- /** Sample mount options of the AzureFile*/
4
- export type RunAsType = {
5
- runAsUser: number;
6
- runAsGroup: number;
7
- };
8
- export declare const defaultAzureFileMountOptions: string[];
9
- export declare const getAzureFileMountOptions: ({ runAsUser, runAsGroup, }: RunAsType) => string[];
10
- export interface AzureFileStorageClassProps extends Omit<DefaultK8sArgs, 'name' | 'namespace'> {
11
- isDefault?: boolean;
12
- storageAccount: Input<string>;
13
- skuName: 'Premium_LRS' | 'Standard_LRS' | 'StandardSSD_LRS';
14
- mountOptions?: RunAsType;
15
- }
16
- declare const _default: ({ skuName, mountOptions, storageAccount, isDefault, ...others }: AzureFileStorageClassProps) => import("@pulumi/kubernetes/storage/v1/storageClass").StorageClass;
17
- export default _default;
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAzureFileMountOptions = exports.defaultAzureFileMountOptions = void 0;
4
- const k8s = require("@pulumi/kubernetes");
5
- const StackEnv_1 = require("../../../Common/StackEnv");
6
- exports.defaultAzureFileMountOptions = [
7
- 'mfsymlinks',
8
- 'cache=strict',
9
- 'nosharesock',
10
- ];
11
- const getAzureFileMountOptions = ({ runAsUser, runAsGroup, }) => [
12
- 'dir_mode=0777',
13
- 'file_mode=0777',
14
- `uid=${runAsUser}`,
15
- `gid=${runAsGroup}`,
16
- 'mfsymlinks',
17
- 'cache=strict',
18
- 'nosharesock',
19
- ];
20
- exports.getAzureFileMountOptions = getAzureFileMountOptions;
21
- exports.default = ({ skuName, mountOptions, storageAccount, isDefault, ...others }) => {
22
- const name = `${StackEnv_1.organization}-azurefile-${skuName.replace('_', '-')}`.toLowerCase();
23
- return new k8s.storage.v1.StorageClass(name, {
24
- metadata: {
25
- name,
26
- annotations: isDefault
27
- ? {
28
- 'storageclass.kubernetes.io/is-default-class': 'true',
29
- }
30
- : undefined,
31
- },
32
- provisioner: 'file.csi.azure.com',
33
- allowVolumeExpansion: true,
34
- reclaimPolicy: 'Delete',
35
- volumeBindingMode: 'Immediate',
36
- parameters: {
37
- storageAccount,
38
- skuName,
39
- },
40
- mountOptions: mountOptions
41
- ? (0, exports.getAzureFileMountOptions)(mountOptions)
42
- : exports.defaultAzureFileMountOptions,
43
- }, others);
44
- };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmVGaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0t1YmVYL0NvcmUvU3RvcmFnZUNsYXNzL2F6dXJlRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwQ0FBMEM7QUFHMUMsdURBQXdEO0FBUTNDLFFBQUEsNEJBQTRCLEdBQUc7SUFDMUMsWUFBWTtJQUNaLGNBQWM7SUFDZCxhQUFhO0NBQ2QsQ0FBQztBQUNLLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUN2QyxTQUFTLEVBQ1QsVUFBVSxHQUNBLEVBQUUsRUFBRSxDQUFDO0lBQ2YsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixPQUFPLFNBQVMsRUFBRTtJQUNsQixPQUFPLFVBQVUsRUFBRTtJQUNuQixZQUFZO0lBQ1osY0FBYztJQUNkLGFBQWE7Q0FDZCxDQUFDO0FBWFcsUUFBQSx3QkFBd0IsNEJBV25DO0FBVUYsa0JBQWUsQ0FBQyxFQUNkLE9BQU8sRUFDUCxZQUFZLEVBQ1osY0FBYyxFQUNkLFNBQVMsRUFDVCxHQUFHLE1BQU0sRUFDa0IsRUFBRSxFQUFFO0lBQy9CLE1BQU0sSUFBSSxHQUFHLEdBQUcsdUJBQVksY0FBYyxPQUFPLENBQUMsT0FBTyxDQUN2RCxHQUFHLEVBQ0gsR0FBRyxDQUNKLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVsQixPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNwQyxJQUFJLEVBQ0o7UUFDRSxRQUFRLEVBQUU7WUFDUixJQUFJO1lBQ0osV0FBVyxFQUFFLFNBQVM7Z0JBQ3BCLENBQUMsQ0FBQztvQkFDRSw2Q0FBNkMsRUFBRSxNQUFNO2lCQUN0RDtnQkFDSCxDQUFDLENBQUMsU0FBUztTQUNkO1FBQ0QsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLGFBQWEsRUFBRSxRQUFRO1FBQ3ZCLGlCQUFpQixFQUFFLFdBQVc7UUFDOUIsVUFBVSxFQUFFO1lBQ1YsY0FBYztZQUNkLE9BQU87U0FDUjtRQUNELFlBQVksRUFBRSxZQUFZO1lBQ3hCLENBQUMsQ0FBQyxJQUFBLGdDQUF3QixFQUFDLFlBQVksQ0FBQztZQUN4QyxDQUFDLENBQUMsb0NBQTRCO0tBQ2pDLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -1,13 +0,0 @@
1
- import { AzureFileStorageClassProps, RunAsType } from './azureFile';
2
- import { AzureBlobStorageClassProps } from './azureBlob';
3
- export interface StorageClassProps extends Omit<AzureFileStorageClassProps, 'mountOptions'>, Pick<AzureBlobStorageClassProps, 'fuse' | 'nfs'> {
4
- azureFile?: {
5
- mountOptions?: RunAsType;
6
- };
7
- }
8
- declare const _default: ({ azureFile, fuse, nfs, ...others }: StorageClassProps) => {
9
- azureFileStorageClass: import("@pulumi/kubernetes/storage/v1/storageClass").StorageClass | undefined;
10
- azureBlobFuseStorageClass: import("@pulumi/kubernetes/storage/v1/storageClass").StorageClass | undefined;
11
- azureBlobNfsStorageClass: import("@pulumi/kubernetes/storage/v1/storageClass").StorageClass | undefined;
12
- };
13
- export default _default;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const azureFile_1 = require("./azureFile");
4
- const azureBlob_1 = require("./azureBlob");
5
- exports.default = ({ azureFile, fuse, nfs, ...others }) => {
6
- let azureFileStorageClass = undefined;
7
- let azureBlobFuseStorageClass = undefined;
8
- let azureBlobNfsStorageClass = undefined;
9
- if (azureFile)
10
- azureFileStorageClass = (0, azureFile_1.default)({
11
- ...others,
12
- mountOptions: azureFile.mountOptions,
13
- });
14
- if (fuse || nfs) {
15
- const rs = (0, azureBlob_1.default)({ ...others, fuse, nfs });
16
- azureBlobFuseStorageClass = rs.fuseStorageClass;
17
- azureBlobNfsStorageClass = rs.nfsStorageClass;
18
- }
19
- return {
20
- azureFileStorageClass,
21
- azureBlobFuseStorageClass,
22
- azureBlobNfsStorageClass,
23
- };
24
- };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvS3ViZVgvQ29yZS9TdG9yYWdlQ2xhc3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwyQ0FBZ0Q7QUFDaEQsMkNBQWdEO0FBV2hELGtCQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBcUIsRUFBRSxFQUFFO0lBQ3hFLElBQUkscUJBQXFCLEdBQ3ZCLFNBQVMsQ0FBQztJQUNaLElBQUkseUJBQXlCLEdBQzNCLFNBQVMsQ0FBQztJQUNaLElBQUksd0JBQXdCLEdBQzFCLFNBQVMsQ0FBQztJQUVaLElBQUksU0FBUztRQUNYLHFCQUFxQixHQUFHLElBQUEsbUJBQXFCLEVBQUM7WUFDNUMsR0FBRyxNQUFNO1lBQ1QsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZO1NBQ3JDLENBQUMsQ0FBQztJQUVMLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sRUFBRSxHQUFHLElBQUEsbUJBQXFCLEVBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzRCx5QkFBeUIsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDaEQsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsT0FBTztRQUNMLHFCQUFxQjtRQUNyQix5QkFBeUI7UUFDekIsd0JBQXdCO0tBQ3pCLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -1,57 +0,0 @@
1
- import { MonitoringProps } from './Monitoring';
2
- import { CertManagerProps } from './CertManager';
3
- import { Input, Resource } from '@pulumi/pulumi';
4
- import { StorageClassProps } from './StorageClass';
5
- import { K8sArgs } from '../types';
6
- import { MetalLBProps } from './LoadBalancer/MetalLB';
7
- import { LonghornProps } from '../Storage/Longhorn';
8
- interface NginxItemProps {
9
- name: string;
10
- publicIpAddress?: string;
11
- /**Use this in case the ingress behind a firewall*/
12
- internalIpAddress?: string;
13
- /**Expose TCP Ports {port: dnsName} */
14
- tcp?: {
15
- [key: number]: string;
16
- };
17
- /**Expose UDP ports {port: dnsName} */
18
- udp?: {
19
- [key: number]: string;
20
- };
21
- }
22
- interface NginxProps {
23
- namespace: string;
24
- version?: string;
25
- replicaCount?: number;
26
- vnetResourceGroup?: string;
27
- internalIngress?: boolean;
28
- allowSnippetAnnotations?: boolean;
29
- public?: NginxItemProps & {
30
- forceUseIngressClass?: boolean;
31
- };
32
- private?: Omit<NginxItemProps, 'publicIpAddress'>;
33
- }
34
- interface Props extends K8sArgs {
35
- namespaces: Array<{
36
- name: string;
37
- labels?: {
38
- [key: string]: string;
39
- };
40
- }>;
41
- metalLb?: Omit<MetalLBProps, 'provider' | 'dependsOn'>;
42
- longhorn?: Omit<LonghornProps, 'provider' | 'dependsOn'>;
43
- nginx?: NginxProps;
44
- monitoring?: Omit<MonitoringProps, 'provider' | 'dependsOn'>;
45
- certManager?: Omit<CertManagerProps, 'namespace' | 'provider' | 'dependsOn'>;
46
- storageClasses?: {
47
- [key: string]: Omit<StorageClassProps, 'provider' | 'name'>;
48
- };
49
- enableStaticIpEgress?: {
50
- publicIpAddress?: Input<string>;
51
- };
52
- }
53
- declare const _default: ({ namespaces, provider, dependsOn, metalLb, longhorn, nginx, monitoring, certManager, storageClasses, }: Props) => Promise<{
54
- namespacesList: import("@pulumi/kubernetes/core/v1/namespace").Namespace[];
55
- resources: Resource[];
56
- }>;
57
- export default _default;
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Namespace_1 = require("./Namespace");
4
- const Nginx_1 = require("./Nginx");
5
- const Monitoring_1 = require("./Monitoring");
6
- const CertManager_1 = require("./CertManager");
7
- const StorageClass_1 = require("./StorageClass");
8
- const MetalLB_1 = require("./LoadBalancer/MetalLB");
9
- const Longhorn_1 = require("../Storage/Longhorn");
10
- exports.default = async ({ namespaces, provider, dependsOn, metalLb, longhorn, nginx, monitoring, certManager, storageClasses, }) => {
11
- //Create Namespaces
12
- const namespacesList = namespaces.map((n) => (0, Namespace_1.default)({ ...n, provider }));
13
- const resources = new Array();
14
- if (metalLb) {
15
- const lb = (0, MetalLB_1.default)({ ...metalLb, provider, dependsOn });
16
- resources.push(lb);
17
- }
18
- if (nginx) {
19
- const rs = nginxCreator({ ...nginx, provider, dependsOn: resources });
20
- if (rs.publicIngress)
21
- resources.push(rs.publicIngress);
22
- if (rs.privateIngress)
23
- resources.push(rs.privateIngress);
24
- }
25
- if (storageClasses) {
26
- Object.keys(storageClasses).forEach((k) => {
27
- const c = storageClasses[k];
28
- if (!c)
29
- return undefined;
30
- return (0, StorageClass_1.default)({ provider, ...c });
31
- });
32
- }
33
- if (certManager) {
34
- resources.push((0, CertManager_1.default)({
35
- ...certManager,
36
- provider,
37
- dependsOn: resources,
38
- }));
39
- }
40
- if (monitoring) {
41
- resources.push(await (0, Monitoring_1.default)({ ...monitoring, provider, dependsOn }));
42
- }
43
- if (longhorn) {
44
- resources.push((0, Longhorn_1.default)({ ...longhorn, provider, dependsOn }));
45
- }
46
- return { namespacesList, resources };
47
- };
48
- const nginxCreator = ({ namespace, version, replicaCount, vnetResourceGroup, internalIngress, allowSnippetAnnotations, provider, ...info }) => {
49
- //Namespace
50
- const ns = (0, Namespace_1.default)({ name: namespace, provider });
51
- let privateIngress;
52
- let publicIngress;
53
- if (info.public) {
54
- //Public
55
- publicIngress = (0, Nginx_1.default)({
56
- name: info.public.name,
57
- version,
58
- namespace,
59
- replicaCount,
60
- allowSnippetAnnotations,
61
- useIngressClassOnly: info.public.forceUseIngressClass || info.private !== undefined,
62
- tcp: info.public.tcp,
63
- udp: info.public.udp,
64
- network: {
65
- internalIngress,
66
- vnetResourceGroup,
67
- loadBalancerIP: info.public.publicIpAddress || info.public.internalIpAddress,
68
- },
69
- provider,
70
- dependsOn: ns,
71
- });
72
- }
73
- if (info.private) {
74
- //Private
75
- privateIngress = (0, Nginx_1.default)({
76
- name: info.private.name,
77
- version,
78
- namespace,
79
- useIngressClassOnly: true,
80
- allowSnippetAnnotations,
81
- tcp: info.private.tcp,
82
- udp: info.private.udp,
83
- network: {
84
- internalIngress,
85
- vnetResourceGroup,
86
- loadBalancerIP: info.private.internalIpAddress,
87
- },
88
- provider,
89
- dependsOn: ns,
90
- });
91
- }
92
- return { publicIngress, privateIngress };
93
- };
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvS3ViZVgvQ29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUFvQztBQUNwQyxtQ0FBNEI7QUFDNUIsNkNBQTJEO0FBQzNELCtDQUE4RDtBQUU5RCxpREFBaUU7QUFFakUsb0RBQStEO0FBQy9ELGtEQUE4RDtBQTJDOUQsa0JBQWUsS0FBSyxFQUFFLEVBQ3BCLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixXQUFXLEVBQ1gsY0FBYyxHQUNSLEVBQUUsRUFBRTtJQUNWLG1CQUFtQjtJQUNuQixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLG1CQUFTLEVBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztJQUV4QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osTUFBTSxFQUFFLEdBQUcsSUFBQSxpQkFBTyxFQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDeEQsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLEVBQUUsQ0FBQyxhQUFhO1lBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxFQUFFLENBQUMsY0FBYztZQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxDQUFDO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1lBQ3pCLE9BQU8sSUFBQSxzQkFBWSxFQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQ1osSUFBQSxxQkFBVyxFQUFDO1lBQ1YsR0FBRyxXQUFXO1lBQ2QsUUFBUTtZQUNSLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBQSxvQkFBVSxFQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBQSxrQkFBUSxFQUFDLEVBQUUsR0FBRyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLEVBQ3BCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFFUixHQUFHLElBQUksRUFDYyxFQUFFLEVBQUU7SUFDekIsV0FBVztJQUNYLE1BQU0sRUFBRSxHQUFHLElBQUEsbUJBQVMsRUFBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRCxJQUFJLGNBQW9DLENBQUM7SUFDekMsSUFBSSxhQUFtQyxDQUFDO0lBRXhDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLFFBQVE7UUFDUixhQUFhLEdBQUcsSUFBQSxlQUFLLEVBQUM7WUFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUN0QixPQUFPO1lBQ1AsU0FBUztZQUNULFlBQVk7WUFDWix1QkFBdUI7WUFDdkIsbUJBQW1CLEVBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTO1lBRWhFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRztZQUVwQixPQUFPLEVBQUU7Z0JBQ1AsZUFBZTtnQkFDZixpQkFBaUI7Z0JBQ2pCLGNBQWMsRUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQjthQUMvRDtZQUNELFFBQVE7WUFDUixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixTQUFTO1FBQ1QsY0FBYyxHQUFHLElBQUEsZUFBSyxFQUFDO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDdkIsT0FBTztZQUNQLFNBQVM7WUFDVCxtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLHVCQUF1QjtZQUV2QixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO1lBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7WUFFckIsT0FBTyxFQUFFO2dCQUNQLGVBQWU7Z0JBQ2YsaUJBQWlCO2dCQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUI7YUFDL0M7WUFDRCxRQUFRO1lBQ1IsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUMifQ==
@@ -1,11 +0,0 @@
1
- import { MySqlProps } from '../types';
2
- import * as k8s from '@pulumi/kubernetes';
3
- interface MariaDbProps extends MySqlProps {
4
- }
5
- declare const _default: ({ name, namespace, version, vaultInfo, auth, storageClassName, provider, }: MariaDbProps) => {
6
- mariadb: k8s.helm.v3.Chart;
7
- host: import("@pulumi/pulumi").Output<string>;
8
- username: string;
9
- password: import("@pulumi/pulumi").Input<string>;
10
- };
11
- export default _default;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Random_1 = require("../../Core/Random");
4
- const k8s = require("@pulumi/kubernetes");
5
- const pulumi_1 = require("@pulumi/pulumi");
6
- exports.default = ({ name = 'mariadb', namespace, version, vaultInfo, auth, storageClassName, provider, }) => {
7
- const password = auth?.rootPass
8
- ? auth.rootPass
9
- : (0, Random_1.randomPassword)({
10
- name,
11
- length: 25,
12
- options: { special: false },
13
- vaultInfo,
14
- }).result;
15
- const mariadb = new k8s.helm.v3.Chart(name, {
16
- namespace,
17
- chart: 'mariadb',
18
- fetchOpts: { repo: 'https://charts.bitnami.com/bitnami' },
19
- values: {
20
- global: {
21
- storageClass: storageClassName,
22
- },
23
- image: { tag: version },
24
- auth: {
25
- rootPassword: password,
26
- password,
27
- username: name,
28
- database: name,
29
- },
30
- },
31
- }, { provider });
32
- return {
33
- mariadb,
34
- host: (0, pulumi_1.interpolate) `${name}.${namespace}.svc.cluster.local`,
35
- username: name,
36
- password,
37
- };
38
- };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFyaWFEYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9LdWJlWC9EYXRhYmFzZXMvTWFyaWFEYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhDQUFtRDtBQUNuRCwwQ0FBMEM7QUFDMUMsMkNBQTZDO0FBSTdDLGtCQUFlLENBQUMsRUFDZCxJQUFJLEdBQUcsU0FBUyxFQUNoQixTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLFFBQVEsR0FDSyxFQUFFLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxFQUFFLFFBQVE7UUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRO1FBQ2YsQ0FBQyxDQUFDLElBQUEsdUJBQWMsRUFBQztZQUNiLElBQUk7WUFDSixNQUFNLEVBQUUsRUFBRTtZQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7WUFDM0IsU0FBUztTQUNWLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFZCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FDbkMsSUFBSSxFQUNKO1FBQ0UsU0FBUztRQUNULEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxvQ0FBb0MsRUFBRTtRQUV6RCxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLGdCQUFnQjthQUMvQjtZQUNELEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUU7WUFDdkIsSUFBSSxFQUFFO2dCQUNKLFlBQVksRUFBRSxRQUFRO2dCQUN0QixRQUFRO2dCQUNSLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7U0FDRjtLQUNGLEVBQ0QsRUFBRSxRQUFRLEVBQUUsQ0FDYixDQUFDO0lBRUYsT0FBTztRQUNMLE9BQU87UUFDUCxJQUFJLEVBQUUsSUFBQSxvQkFBVyxFQUFBLEdBQUcsSUFBSSxJQUFJLFNBQVMsb0JBQW9CO1FBQ3pELFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -1,11 +0,0 @@
1
- import { MySqlProps } from '../types';
2
- import * as k8s from '@pulumi/kubernetes';
3
- interface MariaDbProps extends MySqlProps {
4
- }
5
- declare const _default: ({ name, namespace, version, auth, vaultInfo, storageClassName, provider, }: MariaDbProps) => {
6
- mysql: k8s.helm.v3.Chart;
7
- host: import("@pulumi/pulumi").Output<string>;
8
- username: string;
9
- password: import("@pulumi/pulumi").Input<string>;
10
- };
11
- export default _default;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Random_1 = require("../../Core/Random");
4
- const k8s = require("@pulumi/kubernetes");
5
- const pulumi_1 = require("@pulumi/pulumi");
6
- exports.default = ({ name = 'mysql', namespace, version, auth, vaultInfo, storageClassName, provider, }) => {
7
- const password = auth?.rootPass
8
- ? auth.rootPass
9
- : (0, Random_1.randomPassword)({
10
- name,
11
- length: 25,
12
- options: { special: false },
13
- policy: false,
14
- vaultInfo,
15
- }).result;
16
- const mysql = new k8s.helm.v3.Chart(name, {
17
- namespace,
18
- chart: 'mysql',
19
- fetchOpts: { repo: 'https://charts.bitnami.com/bitnami' },
20
- values: {
21
- global: {
22
- storageClass: storageClassName,
23
- },
24
- image: { tag: version },
25
- auth: {
26
- rootPassword: password,
27
- password,
28
- username: name,
29
- database: name,
30
- },
31
- },
32
- }, { provider });
33
- return {
34
- mysql,
35
- host: (0, pulumi_1.interpolate) `${name}.${namespace}.svc.cluster.local`,
36
- username: name,
37
- password,
38
- };
39
- };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlTcWwuVjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvS3ViZVgvRGF0YWJhc2VzL015U3FsLlYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsOENBQW1EO0FBQ25ELDBDQUEwQztBQUMxQywyQ0FBNkM7QUFJN0Msa0JBQWUsQ0FBQyxFQUNkLElBQUksR0FBRyxPQUFPLEVBQ2QsU0FBUyxFQUNULE9BQU8sRUFDUCxJQUFJLEVBQ0osU0FBUyxFQUNULGdCQUFnQixFQUNoQixRQUFRLEdBQ0ssRUFBRSxFQUFFO0lBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksRUFBRSxRQUFRO1FBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtRQUNmLENBQUMsQ0FBQyxJQUFBLHVCQUFjLEVBQUM7WUFDYixJQUFJO1lBQ0osTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQzNCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsU0FBUztTQUNWLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFZCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FDakMsSUFBSSxFQUNKO1FBQ0UsU0FBUztRQUNULEtBQUssRUFBRSxPQUFPO1FBQ2QsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLG9DQUFvQyxFQUFFO1FBRXpELE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsZ0JBQWdCO2FBQy9CO1lBQ0QsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtZQUN2QixJQUFJLEVBQUU7Z0JBQ0osWUFBWSxFQUFFLFFBQVE7Z0JBQ3RCLFFBQVE7Z0JBQ1IsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsUUFBUSxFQUFFLElBQUk7YUFDZjtTQUNGO0tBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxDQUNiLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSztRQUNMLElBQUksRUFBRSxJQUFBLG9CQUFXLEVBQUEsR0FBRyxJQUFJLElBQUksU0FBUyxvQkFBb0I7UUFDekQsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRO0tBQ1QsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
@@ -1,13 +0,0 @@
1
- import { MySqlProps } from '../types';
2
- declare const _default: ({ name, namespace, version, customPort, useClusterIP, vaultInfo, storageClassName, auth, ...others }: MySqlProps) => {
3
- mysql: {
4
- deployment: import("../kx").Deployment | undefined;
5
- service: import("../kx").Service | undefined;
6
- jobs: (import("@pulumi/kubernetes/batch/v1/cronJob").CronJob | import("../kx").Job)[] | undefined;
7
- };
8
- host: import("@pulumi/pulumi").Output<string>;
9
- port: number;
10
- username: string;
11
- password: import("@pulumi/pulumi").Input<string>;
12
- };
13
- export default _default;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Random_1 = require("../../Core/Random");
4
- const pulumi_1 = require("@pulumi/pulumi");
5
- const Deployment_1 = require("../Deployment");
6
- const Storage_1 = require("../Storage");
7
- exports.default = ({ name = 'mysql', namespace, version = 'latest', customPort, useClusterIP, vaultInfo, storageClassName, auth, ...others }) => {
8
- const password = auth?.rootPass ||
9
- (0, Random_1.randomPassword)({
10
- name,
11
- length: 25,
12
- policy: false,
13
- options: { special: false },
14
- vaultInfo,
15
- }).result;
16
- const persisVolume = (0, Storage_1.createPVCForStorageClass)({
17
- name,
18
- namespace,
19
- accessMode: 'ReadWriteMany',
20
- ...others,
21
- storageClassName,
22
- });
23
- const port = 3306;
24
- const mysql = (0, Deployment_1.default)({
25
- name,
26
- namespace,
27
- ...others,
28
- secrets: { MYSQL_ROOT_PASSWORD: password },
29
- podConfig: {
30
- ports: { http: port },
31
- image: `mysql:${version}`,
32
- volumes: [
33
- {
34
- name: 'mysql-data',
35
- persistentVolumeClaim: persisVolume.metadata.name,
36
- mountPath: '/var/lib/mysql',
37
- readOnly: false,
38
- },
39
- ],
40
- podSecurityContext: { runAsGroup: 1001, runAsUser: 1001 },
41
- },
42
- deploymentConfig: {
43
- args: ['--default-authentication-plugin=mysql_native_password'],
44
- },
45
- //serviceConfig: { port: customPort || port, useClusterIP },
46
- });
47
- return {
48
- mysql,
49
- host: (0, pulumi_1.interpolate) `${name}.${namespace}.svc.cluster.local`,
50
- port,
51
- username: 'root',
52
- password,
53
- };
54
- };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlTcWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvS3ViZVgvRGF0YWJhc2VzL015U3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsOENBQW1EO0FBQ25ELDJDQUE2QztBQUM3Qyw4Q0FBdUM7QUFDdkMsd0NBQXNEO0FBR3RELGtCQUFlLENBQUMsRUFDZCxJQUFJLEdBQUcsT0FBTyxFQUNkLFNBQVMsRUFDVCxPQUFPLEdBQUcsUUFBUSxFQUNsQixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLEdBQUcsTUFBTSxFQUNFLEVBQUUsRUFBRTtJQUNmLE1BQU0sUUFBUSxHQUNaLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBQSx1QkFBYyxFQUFDO1lBQ2IsSUFBSTtZQUNKLE1BQU0sRUFBRSxFQUFFO1lBQ1YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQzNCLFNBQVM7U0FDVixDQUFDLENBQUMsTUFBTSxDQUFDO0lBRVosTUFBTSxZQUFZLEdBQUcsSUFBQSxrQ0FBd0IsRUFBQztRQUM1QyxJQUFJO1FBQ0osU0FBUztRQUNULFVBQVUsRUFBRSxlQUFlO1FBQzNCLEdBQUcsTUFBTTtRQUNULGdCQUFnQjtLQUNqQixDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBVSxFQUFDO1FBQ3ZCLElBQUk7UUFDSixTQUFTO1FBQ1QsR0FBRyxNQUFNO1FBQ1QsT0FBTyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFO1FBQzFDLFNBQVMsRUFBRTtZQUNULEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDckIsS0FBSyxFQUFFLFNBQVMsT0FBTyxFQUFFO1lBQ3pCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsWUFBWTtvQkFDbEIscUJBQXFCLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJO29CQUNqRCxTQUFTLEVBQUUsZ0JBQWdCO29CQUMzQixRQUFRLEVBQUUsS0FBSztpQkFDaEI7YUFDRjtZQUNELGtCQUFrQixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO1NBQzFEO1FBQ0QsZ0JBQWdCLEVBQUU7WUFDaEIsSUFBSSxFQUFFLENBQUMsdURBQXVELENBQUM7U0FDaEU7UUFDRCw0REFBNEQ7S0FDN0QsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEtBQUs7UUFDTCxJQUFJLEVBQUUsSUFBQSxvQkFBVyxFQUFBLEdBQUcsSUFBSSxJQUFJLFNBQVMsb0JBQW9CO1FBQ3pELElBQUk7UUFDSixRQUFRLEVBQUUsTUFBTTtRQUNoQixRQUFRO0tBQ1QsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9