@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,306 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.virtualHostConfig = exports.defaultResources = void 0;
4
- const k8s = require("@pulumi/kubernetes");
5
- const kx = require("../kx");
6
- const Ingress_1 = require("../Ingress");
7
- const pulumi_1 = require("@pulumi/pulumi");
8
- const Helpers_1 = require("../../Common/Helpers");
9
- const CertHelper_1 = require("../CertHelper");
10
- const PodAutoscaler_1 = require("./PodAutoscaler");
11
- const ConfigSecret_1 = require("../ConfigSecret");
12
- exports.defaultResources = {
13
- limits: { memory: '0.5Gi', cpu: '500m' },
14
- requests: { memory: '10Mi', cpu: '1m' },
15
- };
16
- exports.virtualHostConfig = {
17
- nodeSelector: {
18
- 'kubernetes.io/role': 'agent',
19
- 'beta.kubernetes.io/os': 'linux',
20
- type: 'virtual-kubelet',
21
- },
22
- tolerations: [
23
- {
24
- effect: 'NoSchedule',
25
- key: 'virtual-kubelet.io/provider',
26
- value: 'azure',
27
- },
28
- ],
29
- };
30
- const buildPod = ({ name, envFrom, podConfig, useVirtualHost, restartPolicy, args, }) => {
31
- //console.log('buildPod', podConfig);
32
- if (useVirtualHost) {
33
- podConfig.nodeSelector = exports.virtualHostConfig.nodeSelector;
34
- podConfig.tolerations = exports.virtualHostConfig.tolerations;
35
- if (!podConfig.resources)
36
- podConfig.resources = false;
37
- }
38
- //else if (!podConfig.nodeSelector) podConfig.nodeSelector = { app: name };
39
- const resources = podConfig.resources === false
40
- ? undefined
41
- : podConfig.resources || exports.defaultResources;
42
- return new kx.PodBuilder({
43
- terminationGracePeriodSeconds: 30,
44
- securityContext: podConfig.securityContext,
45
- automountServiceAccountToken: false,
46
- volumes: podConfig.volumes
47
- ? podConfig.volumes.map((v) => ({
48
- name: v.name.toLowerCase(),
49
- emptyDir: v.emptyDir ? {} : undefined,
50
- hostPath: v.hostPath ? { path: v.hostPath } : undefined,
51
- csi: v.secretName && v.type === 'azureFile'
52
- ? {
53
- driver: 'file.csi.azure.com',
54
- volumeAttributes: {
55
- secretName: v.secretName,
56
- shareName: v.name.toLowerCase(),
57
- // mountOptions:
58
- // 'dir_mode=0777,file_mode=0777,cache=strict,actimeo=30',
59
- },
60
- }
61
- : undefined,
62
- persistentVolumeClaim: v.persistentVolumeClaim
63
- ? { claimName: v.persistentVolumeClaim }
64
- : undefined,
65
- configMap: v.configMapName ? { name: v.configMapName } : undefined,
66
- secret: v.secretName && v.type === undefined
67
- ? { secretName: v.secretName }
68
- : undefined,
69
- }))
70
- : undefined,
71
- containers: [
72
- {
73
- name,
74
- image: podConfig.image,
75
- imagePullPolicy: podConfig.imagePullPolicy,
76
- ports: podConfig.ports,
77
- command: podConfig.command,
78
- envFrom,
79
- securityContext: podConfig.podSecurityContext,
80
- resources,
81
- args,
82
- volumeMounts: podConfig.volumes
83
- ? podConfig.volumes.map((v) => ({
84
- name: v.name,
85
- mountPath: v.mountPath,
86
- subPath: v.subPath,
87
- readOnly: v.readOnly ?? false,
88
- }))
89
- : undefined,
90
- livenessProbe: podConfig.probes?.liveness
91
- ? {
92
- initialDelaySeconds: podConfig.probes.liveness.initialDelaySeconds || 30,
93
- periodSeconds: podConfig.probes.liveness.periodSeconds || 300,
94
- timeoutSeconds: podConfig.probes.liveness.timeoutSeconds || 5,
95
- failureThreshold: podConfig.probes.liveness.failureThreshold || 2,
96
- httpGet: podConfig.probes.liveness.httpGet
97
- ? {
98
- path: podConfig.probes.liveness.httpGet,
99
- port: podConfig.probes.liveness.port,
100
- }
101
- : undefined,
102
- }
103
- : undefined,
104
- lifecycle: podConfig.probes?.lifecycle?.postStart
105
- ? {
106
- postStart: {
107
- exec: { command: podConfig.probes.lifecycle.postStart },
108
- },
109
- }
110
- : undefined,
111
- },
112
- ],
113
- imagePullSecrets: podConfig.imagePullSecret
114
- ? [
115
- {
116
- name: podConfig.imagePullSecret,
117
- },
118
- ]
119
- : undefined,
120
- restartPolicy,
121
- tolerations: podConfig.tolerations,
122
- nodeSelector: podConfig.nodeSelector,
123
- });
124
- };
125
- exports.default = ({ name, namespace, configMap, secrets, mapSecretsToVolume, mapConfigToVolume, podConfig, deploymentConfig, serviceConfig, jobConfigs, ingressConfig, enableHA, provider, dependsOn, }) => {
126
- const deploymentTime = typeof deploymentConfig === 'object' && deploymentConfig.enforceReDeployment
127
- ? new Date().getTime().toString()
128
- : '';
129
- if (!podConfig.volumes)
130
- podConfig.volumes = [];
131
- const configSecret = (0, ConfigSecret_1.default)({
132
- name,
133
- namespace,
134
- configMap,
135
- secrets,
136
- provider,
137
- dependsOn,
138
- });
139
- const envFrom = new Array();
140
- if (configSecret.config) {
141
- envFrom.push({
142
- configMapRef: { name: configSecret.config.metadata.name },
143
- });
144
- }
145
- if (configSecret.secret) {
146
- //Create Secrets
147
- envFrom.push({ secretRef: { name: configSecret.secret.metadata.name } });
148
- }
149
- if (mapConfigToVolume && configSecret.config) {
150
- podConfig.volumes.push({
151
- name: mapConfigToVolume.name,
152
- mountPath: mapConfigToVolume.path,
153
- subPath: mapConfigToVolume.subPath,
154
- configMapName: configSecret.config.metadata.name,
155
- });
156
- }
157
- if (mapSecretsToVolume && configSecret.secret) {
158
- podConfig.volumes.push({
159
- name: mapSecretsToVolume.name,
160
- mountPath: mapSecretsToVolume.path,
161
- subPath: mapSecretsToVolume.subPath,
162
- secretName: configSecret.secret.metadata.name,
163
- });
164
- }
165
- if (!podConfig.ports)
166
- podConfig.ports = { http: 8080 };
167
- const deployment = deploymentConfig == false
168
- ? undefined
169
- : new kx.Deployment(name, {
170
- metadata: {
171
- namespace,
172
- annotations: { 'pulumi.com/skipAwait': 'true' },
173
- labels: { app: name, time: deploymentTime },
174
- },
175
- spec: buildPod({
176
- name,
177
- podConfig,
178
- envFrom,
179
- args: deploymentConfig?.args,
180
- useVirtualHost: deploymentConfig?.useVirtualHost,
181
- }).asDeploymentSpec({
182
- replicas: deploymentConfig?.replicas ?? 1,
183
- revisionHistoryLimit: 1,
184
- // strategy: {
185
- // type: deploymentConfig?.strategy,
186
- // rollingUpdate: undefined,
187
- // },
188
- }),
189
- }, {
190
- provider,
191
- dependsOn,
192
- deleteBeforeReplace: true,
193
- replaceOnChanges: deploymentConfig?.enforceReDeployment
194
- ? ['*']
195
- : undefined,
196
- customTimeouts: { create: '1m', update: '1m' },
197
- });
198
- let jobs = undefined;
199
- //Jobs
200
- if (jobConfigs) {
201
- jobs = jobConfigs.map((job) => {
202
- if (!job.useVirtualHost && deploymentConfig !== false)
203
- job.useVirtualHost = Boolean(deploymentConfig?.useVirtualHost);
204
- if (job.cron)
205
- return new k8s.batch.v1.CronJob(job.name, {
206
- metadata: { namespace },
207
- spec: buildPod({
208
- name,
209
- podConfig,
210
- envFrom,
211
- useVirtualHost: job.useVirtualHost,
212
- args: job.args,
213
- restartPolicy: job.restartPolicy || 'Never',
214
- }).asCronJobSpec({
215
- failedJobsHistoryLimit: 1,
216
- successfulJobsHistoryLimit: 1,
217
- ...job.cron,
218
- }),
219
- }, { provider, deleteBeforeReplace: true });
220
- return new kx.Job(job.name, {
221
- metadata: {
222
- namespace,
223
- annotations: { 'pulumi.com/skipAwait': 'true' },
224
- },
225
- spec: buildPod({
226
- name,
227
- podConfig,
228
- envFrom,
229
- useVirtualHost: job.useVirtualHost,
230
- args: job.args,
231
- restartPolicy: job.restartPolicy || 'Never',
232
- }).asJobSpec({
233
- ttlSecondsAfterFinished: job.ttlSecondsAfterFinished || 604800, //7 days
234
- }),
235
- }, { provider, deleteBeforeReplace: true });
236
- });
237
- }
238
- let service = undefined;
239
- if (deployment && serviceConfig !== false) {
240
- // const servicePort: any = {
241
- // name: 'http',
242
- // port: 80,
243
- // targetPort: podConfig.port,
244
- // protocol: 'TCP',
245
- // };
246
- //
247
- // if (serviceConfig?.usePodPort) {
248
- // servicePort.port = podConfig.port;
249
- // //servicePort.targetPort = podConfig.port;
250
- // } else if (serviceConfig?.port) {
251
- // servicePort.port = serviceConfig.port;
252
- // //servicePort.targetPort = podConfig.port;
253
- // }
254
- const portKeys = Object.keys(podConfig.ports);
255
- //Service
256
- service = deployment.createService({
257
- name,
258
- ports: portKeys.length == 1
259
- ? [
260
- {
261
- name: 'http',
262
- port: serviceConfig?.usePodPort
263
- ? podConfig.ports[portKeys[0]]
264
- : 80,
265
- targetPort: podConfig.ports[portKeys[0]],
266
- protocol: 'TCP',
267
- },
268
- ]
269
- : portKeys.map((k) => ({
270
- name: k,
271
- port: podConfig.ports[k],
272
- //targetPort: podConfig.ports[k],
273
- protocol: 'TCP',
274
- })),
275
- type: serviceConfig?.useClusterIP ? 'LoadBalancer' : undefined,
276
- });
277
- }
278
- //Ingress
279
- if (ingressConfig && service) {
280
- const ingressProps = {
281
- ...ingressConfig,
282
- className: ingressConfig.className || 'nginx',
283
- name: `${name}-ingress`.toLowerCase(),
284
- hostNames: ingressConfig.hostNames.map((host) => (0, pulumi_1.output)(host).apply((h) => h.toLowerCase().replace('https://', ''))),
285
- tlsSecretName: ingressConfig.allowHttp
286
- ? undefined
287
- : ingressConfig.tlsSecretName ||
288
- (0, pulumi_1.output)(ingressConfig.hostNames).apply((h) => (0, CertHelper_1.getTlsName)(ingressConfig.certManagerIssuer
289
- ? (0, Helpers_1.getDomainFromUrl)(h[0])
290
- : (0, Helpers_1.getRootDomainFromUrl)(h[0]), Boolean(ingressConfig.certManagerIssuer))),
291
- service,
292
- provider,
293
- dependsOn: [service],
294
- };
295
- if (ingressConfig.type === 'nginx') {
296
- (0, Ingress_1.NginxIngress)(ingressProps);
297
- }
298
- else
299
- (0, Ingress_1.TraefikIngress)(ingressProps);
300
- }
301
- if (enableHA && deployment) {
302
- (0, PodAutoscaler_1.PodAutoScale)({ ...enableHA, deployment, provider });
303
- }
304
- return { deployment, service, jobs };
305
- };
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvS3ViZVgvRGVwbG95bWVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQ0FBMEM7QUFDMUMsNEJBQTRCO0FBQzVCLHdDQUEwRDtBQUUxRCwyQ0FBeUQ7QUFDekQsa0RBQThFO0FBQzlFLDhDQUEyQztBQUczQyxtREFBa0U7QUFDbEUsa0RBQTJDO0FBSTlCLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0lBQ3hDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtDQUN4QyxDQUFDO0FBRVcsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixZQUFZLEVBQUU7UUFDWixvQkFBb0IsRUFBRSxPQUFPO1FBQzdCLHVCQUF1QixFQUFFLE9BQU87UUFDaEMsSUFBSSxFQUFFLGlCQUFpQjtLQUN4QjtJQUNELFdBQVcsRUFBRTtRQUNYO1lBQ0UsTUFBTSxFQUFFLFlBQVk7WUFDcEIsR0FBRyxFQUFFLDZCQUE2QjtZQUNsQyxLQUFLLEVBQUUsT0FBTztTQUNmO0tBQ0Y7Q0FDRixDQUFDO0FBcURGLE1BQU0sUUFBUSxHQUFHLENBQUMsRUFDaEIsSUFBSSxFQUNKLE9BQU8sRUFDUCxTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixJQUFJLEdBQ1ksRUFBRSxFQUFFO0lBQ3BCLHFDQUFxQztJQUNyQyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ25CLFNBQVMsQ0FBQyxZQUFZLEdBQUcseUJBQWlCLENBQUMsWUFBWSxDQUFDO1FBQ3hELFNBQVMsQ0FBQyxXQUFXLEdBQUcseUJBQWlCLENBQUMsV0FBVyxDQUFDO1FBRXRELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUztZQUFFLFNBQVMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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
@@ -1,4 +0,0 @@
1
- export declare const getKubeDomainCert: (domain: string) => Promise<{
2
- cert: string;
3
- privateKey: string;
4
- } | undefined>;
package/KubeX/Helpers.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getKubeDomainCert = void 0;
4
- const Helpers_1 = require("../Web/Helpers");
5
- const Certificate_1 = require("../Certificate");
6
- const getKubeDomainCert = async (domain) => {
7
- //Get cert from CertOrder.
8
- const cert = await (0, Helpers_1.getCertificateForDomain)(domain);
9
- //Convert to K8s cert
10
- return cert
11
- ? (0, Certificate_1.convertPfxToPem)({
12
- base64Cert: cert.base64CertData,
13
- })
14
- : undefined;
15
- };
16
- exports.getKubeDomainCert = getKubeDomainCert;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9LdWJlWC9IZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUF5RDtBQUN6RCxnREFBaUQ7QUFFMUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDeEQsMEJBQTBCO0lBQzFCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxpQ0FBdUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxxQkFBcUI7SUFDckIsT0FBTyxJQUFJO1FBQ1QsQ0FBQyxDQUFDLElBQUEsNkJBQWUsRUFBQztZQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYztTQUNoQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFUVyxRQUFBLGlCQUFpQixxQkFTNUIifQ==
@@ -1,2 +0,0 @@
1
- declare const _default: () => void;
2
- export default _default;
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = () => { };
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwR2F0ZXdheUluZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvS3ViZVgvSW5ncmVzcy9BcHBHYXRld2F5SW5ncmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyJ9
@@ -1,13 +0,0 @@
1
- export declare const defaultResponseHeaders: {
2
- server: string;
3
- 'X-Powered-By': string;
4
- 'X-AspNet-Version': string;
5
- 'Strict-Transport-Security': string;
6
- 'X-XSS-Protection': string;
7
- 'X-Frame-Options': string;
8
- 'Content-Security-Policy': string;
9
- 'X-Content-Type-Options': string;
10
- 'Expect-Ct': string;
11
- 'Cache-Control': string;
12
- };
13
- export declare const corsDefaultHeaders = "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization";
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.corsDefaultHeaders = exports.defaultResponseHeaders = void 0;
4
- const StackEnv_1 = require("../../Common/StackEnv");
5
- exports.defaultResponseHeaders = {
6
- server: StackEnv_1.organization,
7
- 'X-Powered-By': StackEnv_1.organization,
8
- 'X-AspNet-Version': StackEnv_1.organization,
9
- 'Strict-Transport-Security': 'max-age=86400; includeSubDomains',
10
- 'X-XSS-Protection': '1; mode=block',
11
- 'X-Frame-Options': `SAMEORIGIN`,
12
- 'Content-Security-Policy': `default-src 'self' data: 'unsafe-inline' 'unsafe-eval'; frame-ancestors 'self'`,
13
- 'X-Content-Type-Options': 'nosniff',
14
- 'Expect-Ct': 'max-age=604800,enforce',
15
- 'Cache-Control': 'max-age=10', //10 second only
16
- };
17
- exports.corsDefaultHeaders = 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvS3ViZVgvSW5ncmVzcy9Db250cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBcUQ7QUFFeEMsUUFBQSxzQkFBc0IsR0FBRztJQUNwQyxNQUFNLEVBQUUsdUJBQVk7SUFDcEIsY0FBYyxFQUFFLHVCQUFZO0lBQzVCLGtCQUFrQixFQUFFLHVCQUFZO0lBQ2hDLDJCQUEyQixFQUFFLGtDQUFrQztJQUMvRCxrQkFBa0IsRUFBRSxlQUFlO0lBQ25DLGlCQUFpQixFQUFFLFlBQVk7SUFDL0IseUJBQXlCLEVBQUUsZ0ZBQWdGO0lBQzNHLHdCQUF3QixFQUFFLFNBQVM7SUFDbkMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxlQUFlLEVBQUUsWUFBWSxFQUFFLGdCQUFnQjtDQUNoRCxDQUFDO0FBRVcsUUFBQSxrQkFBa0IsR0FDN0Isc0hBQXNILENBQUMifQ==
@@ -1,3 +0,0 @@
1
- import { IngressProps } from './type';
2
- declare const _default: ({ name, className, hostNames, maxUploadSizeMb, allowHttp, internalIngress, tlsSecretName, canary, proxy, auth, responseHeaders, whitelistIps, enableModSecurity, cors, certManagerIssuer, pathType, services, service, provider, dependsOn, }: IngressProps) => import("@pulumi/kubernetes/networking/v1/ingress").Ingress;
3
- export default _default;
@@ -1,186 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const k8s = require("@pulumi/kubernetes");
4
- const Conts_1 = require("./Conts");
5
- exports.default = ({ name, className = 'nginx', hostNames, maxUploadSizeMb = 10, allowHttp, internalIngress, tlsSecretName, canary, proxy, auth, responseHeaders, whitelistIps, enableModSecurity, cors, certManagerIssuer, pathType = 'ImplementationSpecific', services, service, provider, dependsOn, }) => {
6
- if (!service && !services)
7
- throw new Error('Either "service" or "services" is must be provided.');
8
- const annotations = {
9
- 'pulumi.com/skipAwait': 'true',
10
- 'nginx.ingress.kubernetes.io/body-size': '1024m',
11
- 'nginx.ingress.kubernetes.io/client-body-buffer-size': '50m',
12
- 'nginx.ingress.kubernetes.io/client-max-body-size': '50m',
13
- };
14
- if (maxUploadSizeMb) {
15
- annotations['nginx.ingress.kubernetes.io/proxy-body-size'] = `${maxUploadSizeMb}m`;
16
- }
17
- if (certManagerIssuer) {
18
- if (typeof certManagerIssuer === 'string')
19
- annotations['cert-manager.io/cluster-issuer'] = certManagerIssuer;
20
- else
21
- annotations['kubernetes.io/tls-acme'] = 'true';
22
- }
23
- if (internalIngress) {
24
- annotations['service.beta.kubernetes.io/azure-load-balancer-internal'] =
25
- 'true';
26
- }
27
- if (canary) {
28
- annotations['nginx.ingress.kubernetes.io/canary'] = 'true';
29
- annotations['nginx.ingress.kubernetes.io/canary-weight'] = '100';
30
- if (canary.headerKey)
31
- annotations['nginx.ingress.kubernetes.io/canary-by-header'] =
32
- canary.headerKey;
33
- if (canary.headerValue)
34
- annotations['nginx.ingress.kubernetes.io/canary-by-header-value'] =
35
- canary.headerValue;
36
- if (canary.headerPattern)
37
- annotations['nginx.ingress.kubernetes.io/canary-by-header-pattern'] =
38
- canary.headerPattern;
39
- }
40
- if (proxy?.backendProtocol) {
41
- //annotations['nginx.ingress.kubernetes.io/ssl-passthrough'] = 'true';
42
- annotations['nginx.ingress.kubernetes.io/backend-protocol'] =
43
- proxy.backendProtocol;
44
- }
45
- if (proxy?.backendUrl) {
46
- const vhost = proxy.backendUrl
47
- .replace('https://', '')
48
- .replace('http://', '');
49
- annotations['nginx.ingress.kubernetes.io/upstream-vhost'] = vhost;
50
- annotations['nginx.ingress.kubernetes.io/server-snippet'] = `proxy_ssl_name ${vhost};proxy_ssl_server_name on`;
51
- annotations['nginx.ingress.kubernetes.io/use-proxy-protocol'] = 'true';
52
- annotations['nginx.ingress.kubernetes.io/proxy-ssl-verify'] =
53
- proxy.sslVerify ? 'on' : 'off';
54
- annotations['nginx.ingress.kubernetes.io/proxy-ssl-verify-depth'] = '1';
55
- annotations['nginx.ingress.kubernetes.io/proxy-connect-timeout'] = '3600';
56
- annotations['nginx.ingress.kubernetes.io/proxy-read-timeout'] = '3600';
57
- annotations['nginx.ingress.kubernetes.io/proxy-send-timeout'] = '3600';
58
- if (proxy.tlsSecretName) {
59
- annotations['nginx.ingress.kubernetes.io/proxy-ssl-secret'] =
60
- proxy.tlsSecretName;
61
- }
62
- }
63
- if (auth?.enableClientTls === true) {
64
- // Enable client certificate authentication
65
- annotations['nginx.ingress.kubernetes.io/auth-tls-verify-client'] =
66
- auth.alwaysRequireCert ? 'on' : 'optional';
67
- // Create the secret containing the trusted ca certificates
68
- if (auth.caSecret)
69
- annotations['nginx.ingress.kubernetes.io/auth-tls-secret'] =
70
- auth.caSecret;
71
- // Specify the verification depth in the client certificates chain
72
- annotations['nginx.ingress.kubernetes.io/auth-tls-verify-depth'] = '1';
73
- // Specify an error page to be redirected to verification errors
74
- if (auth.errorPage)
75
- annotations['nginx.ingress.kubernetes.io/auth-tls-error-page'] =
76
- auth.errorPage;
77
- // Specify if certificates are passed to upstream server
78
- annotations['nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream'] = 'true';
79
- annotations['nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream-header'] = auth.upstreamHeaderKey ?? 'ssl-client-cert';
80
- }
81
- const responseSecurity = responseHeaders === true
82
- ? Conts_1.defaultResponseHeaders
83
- : responseHeaders === false
84
- ? undefined
85
- : {
86
- ...Conts_1.defaultResponseHeaders,
87
- ...responseHeaders,
88
- };
89
- if (responseSecurity) {
90
- annotations['nginx.ingress.kubernetes.io/configuration-snippet'] = `${Object.keys(responseSecurity)
91
- .map((k) => `more_set_headers "${k}: ${responseSecurity[k]}";`)
92
- .join('')}`;
93
- }
94
- //Force Https
95
- annotations['kubernetes.io/ingress.allow-http'] = allowHttp
96
- ? 'true'
97
- : 'false';
98
- annotations['ingress.kubernetes.io/force-ssl-redirect'] = allowHttp
99
- ? 'false'
100
- : 'true';
101
- if (cors) {
102
- annotations['nginx.ingress.kubernetes.io/cors-allow-origin'] =
103
- cors.origins.join(',');
104
- annotations['nginx.ingress.kubernetes.io/cors-allow-headers'] = cors.headers
105
- ? Conts_1.corsDefaultHeaders + ',' + cors.headers.join(',')
106
- : Conts_1.corsDefaultHeaders;
107
- }
108
- //Whitelist IP Address
109
- if (whitelistIps && whitelistIps.length > 0) {
110
- annotations['nginx.ingress.kubernetes.io/whitelist-source-range'] =
111
- whitelistIps.join(',');
112
- }
113
- //Mode Security
114
- if (enableModSecurity) {
115
- annotations['nginx.ingress.kubernetes.io/enable-owasp-core-rules'] = 'true';
116
- annotations['nginx.ingress.kubernetes.io/enable-modsecurity'] = 'true';
117
- annotations['nginx.ingress.kubernetes.io/modsecurity-transaction-id'] =
118
- '$request_id';
119
- // annotations[
120
- // 'nginx.ingress.kubernetes.io/modsecurity-snippet'
121
- // ] = `Include /etc/nginx/owasp-modsecurity-crs/nginx-modsecurity.conf`;
122
- }
123
- else {
124
- annotations['nginx.ingress.kubernetes.io/enable-owasp-core-rules'] =
125
- 'false';
126
- annotations['nginx.ingress.kubernetes.io/enable-modsecurity'] = 'false';
127
- }
128
- if (services) {
129
- annotations['nginx.ingress.kubernetes.io/rewrite-target'] = '/$1';
130
- annotations['nginx.ingress.kubernetes.io/use-regex'] = 'true';
131
- }
132
- const servicePaths = services
133
- ? services.paths.map((s) => ({
134
- backend: {
135
- service: {
136
- name: s.metadata.name,
137
- port: {
138
- number: s.spec.ports[0].port,
139
- },
140
- },
141
- },
142
- path: `${s.path}/(.*)`,
143
- pathType,
144
- }))
145
- : [
146
- {
147
- backend: {
148
- service: {
149
- name: service.metadata.name,
150
- port: {
151
- number: service.spec.ports[0].port,
152
- name: service.spec.ports[0].port
153
- ? undefined
154
- : service.spec.ports[0].name,
155
- },
156
- },
157
- },
158
- path: '/',
159
- pathType, //Prefix or ImplementationSpecific
160
- },
161
- ];
162
- return new k8s.networking.v1.Ingress(name, {
163
- metadata: {
164
- name,
165
- namespace: services?.metadata.namespace || service?.metadata.namespace,
166
- labels: services?.metadata.labels || service?.metadata.labels,
167
- annotations,
168
- },
169
- spec: {
170
- ingressClassName: className,
171
- rules: hostNames.map((hostName) => ({
172
- host: hostName,
173
- http: { paths: servicePaths },
174
- })),
175
- tls: allowHttp
176
- ? undefined
177
- : [
178
- {
179
- hosts: hostNames,
180
- secretName: tlsSecretName,
181
- },
182
- ],
183
- },
184
- }, { provider, dependsOn });
185
- };
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmdpbnhJbmdyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0t1YmVYL0luZ3Jlc3MvTmdpbnhJbmdyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMENBQTBDO0FBRzFDLG1DQUFxRTtBQUdyRSxrQkFBZSxDQUFDLEVBQ2QsSUFBSSxFQUNKLFNBQVMsR0FBRyxPQUFPLEVBQ25CLFNBQVMsRUFDVCxlQUFlLEdBQUcsRUFBRSxFQUNwQixTQUFTLEVBQ1QsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sS0FBSyxFQUNMLElBQUksRUFDSixlQUFlLEVBQ2YsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLFFBQVEsR0FBRyx3QkFBd0IsRUFDbkMsUUFBUSxFQUNSLE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxHQUNJLEVBQUUsRUFBRTtJQUNqQixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUTtRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFFekUsTUFBTSxXQUFXLEdBQXFDO1FBQ3BELHNCQUFzQixFQUFFLE1BQU07UUFDOUIsdUNBQXVDLEVBQUUsT0FBTztRQUNoRCxxREFBcUQsRUFBRSxLQUFLO1FBQzVELGtEQUFrRCxFQUFFLEtBQUs7S0FDMUQsQ0FBQztJQUVGLElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEIsV0FBVyxDQUNULDZDQUE2QyxDQUM5QyxHQUFHLEdBQUcsZUFBZSxHQUFHLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixJQUFJLE9BQU8saUJBQWlCLEtBQUssUUFBUTtZQUN2QyxXQUFXLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQzs7WUFDL0QsV0FBVyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGVB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
@@ -1,21 +0,0 @@
1
- import * as k8s from '@pulumi/kubernetes';
2
- import { Input, Resource } from '@pulumi/pulumi';
3
- import { IngressCanary, IngressClassName } from './type';
4
- interface Props {
5
- name: string;
6
- namespace: Input<string>;
7
- ingressClass?: IngressClassName;
8
- host: string;
9
- port?: number;
10
- proxyUrl: string;
11
- proxyTlsSecretName?: string;
12
- certManagerIssuer?: boolean;
13
- canary?: IngressCanary;
14
- whitelistIps?: Array<Input<string>>;
15
- enableModSecurity?: boolean;
16
- cors?: string[];
17
- provider: k8s.Provider;
18
- dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
19
- }
20
- declare const _default: ({ name, namespace, host, certManagerIssuer, cors, proxyUrl, proxyTlsSecretName, ingressClass, port, dependsOn, provider, ...others }: Props) => import("@pulumi/kubernetes/networking/v1/ingress").Ingress;
21
- export default _default;