cdk8s-plus-31 2.0.0

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 (114) hide show
  1. package/.backportrc.json +17 -0
  2. package/.jsii +90235 -0
  3. package/CODE_OF_CONDUCT.md +3 -0
  4. package/CONTRIBUTING.md +185 -0
  5. package/DCO +34 -0
  6. package/LICENSE +202 -0
  7. package/NOTICE +1 -0
  8. package/OWNERS.md +5 -0
  9. package/README.md +32 -0
  10. package/SECURITY.md +5 -0
  11. package/cdk8s.yaml +8 -0
  12. package/docs/java.md +23855 -0
  13. package/docs/plus/config-map.md +98 -0
  14. package/docs/plus/container.md +133 -0
  15. package/docs/plus/cronjob.md +67 -0
  16. package/docs/plus/deployment.md +232 -0
  17. package/docs/plus/horizontal-pod-autoscaler.md +226 -0
  18. package/docs/plus/ingress.md +68 -0
  19. package/docs/plus/job.md +48 -0
  20. package/docs/plus/namespace.md +58 -0
  21. package/docs/plus/network-policy.md +341 -0
  22. package/docs/plus/pod.md +455 -0
  23. package/docs/plus/pv.md +82 -0
  24. package/docs/plus/pvc.md +77 -0
  25. package/docs/plus/rbac.md +104 -0
  26. package/docs/plus/secret.md +32 -0
  27. package/docs/plus/service-account.md +35 -0
  28. package/docs/plus/service.md +41 -0
  29. package/docs/plus/volume.md +38 -0
  30. package/docs/python.md +26079 -0
  31. package/docs/typescript.md +19565 -0
  32. package/git-hooks/README.md +9 -0
  33. package/git-hooks/prepare-commit-msg +18 -0
  34. package/git-hooks/setup.sh +10 -0
  35. package/lib/_action.d.ts +21 -0
  36. package/lib/_action.js +32 -0
  37. package/lib/api-resource.d.ts +298 -0
  38. package/lib/api-resource.js +430 -0
  39. package/lib/base.d.ts +79 -0
  40. package/lib/base.js +92 -0
  41. package/lib/config-map.d.ts +126 -0
  42. package/lib/config-map.js +159 -0
  43. package/lib/container.d.ts +1057 -0
  44. package/lib/container.js +845 -0
  45. package/lib/cron-job.d.ts +138 -0
  46. package/lib/cron-job.js +103 -0
  47. package/lib/daemon-set.d.ts +45 -0
  48. package/lib/daemon-set.js +55 -0
  49. package/lib/deployment.d.ts +223 -0
  50. package/lib/deployment.js +214 -0
  51. package/lib/handler.d.ts +62 -0
  52. package/lib/handler.js +54 -0
  53. package/lib/horizontal-pod-autoscaler.d.ts +500 -0
  54. package/lib/horizontal-pod-autoscaler.js +569 -0
  55. package/lib/imports/k8s.d.ts +21534 -0
  56. package/lib/imports/k8s.js +16496 -0
  57. package/lib/index.d.ts +26 -0
  58. package/lib/index.js +39 -0
  59. package/lib/ingress.d.ts +230 -0
  60. package/lib/ingress.js +246 -0
  61. package/lib/job.d.ts +64 -0
  62. package/lib/job.js +54 -0
  63. package/lib/namespace.d.ts +128 -0
  64. package/lib/namespace.js +109 -0
  65. package/lib/network-policy.d.ts +311 -0
  66. package/lib/network-policy.js +344 -0
  67. package/lib/pod.d.ts +1080 -0
  68. package/lib/pod.js +1139 -0
  69. package/lib/probe.d.ts +141 -0
  70. package/lib/probe.js +77 -0
  71. package/lib/pv.d.ts +375 -0
  72. package/lib/pv.js +273 -0
  73. package/lib/pvc.d.ts +163 -0
  74. package/lib/pvc.js +152 -0
  75. package/lib/role-binding.d.ts +138 -0
  76. package/lib/role-binding.js +165 -0
  77. package/lib/role.d.ts +268 -0
  78. package/lib/role.js +401 -0
  79. package/lib/secret.d.ts +195 -0
  80. package/lib/secret.js +185 -0
  81. package/lib/service-account.d.ts +83 -0
  82. package/lib/service-account.js +105 -0
  83. package/lib/service.d.ts +289 -0
  84. package/lib/service.js +182 -0
  85. package/lib/stateful-set.d.ts +169 -0
  86. package/lib/stateful-set.js +174 -0
  87. package/lib/utils.d.ts +4 -0
  88. package/lib/utils.js +34 -0
  89. package/lib/volume.d.ts +573 -0
  90. package/lib/volume.js +371 -0
  91. package/lib/workload.d.ts +121 -0
  92. package/lib/workload.js +122 -0
  93. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  94. package/node_modules/balanced-match/LICENSE.md +21 -0
  95. package/node_modules/balanced-match/README.md +97 -0
  96. package/node_modules/balanced-match/index.js +62 -0
  97. package/node_modules/balanced-match/package.json +48 -0
  98. package/node_modules/concat-map/.travis.yml +4 -0
  99. package/node_modules/concat-map/LICENSE +18 -0
  100. package/node_modules/concat-map/README.markdown +62 -0
  101. package/node_modules/concat-map/example/map.js +6 -0
  102. package/node_modules/concat-map/index.js +13 -0
  103. package/node_modules/concat-map/package.json +43 -0
  104. package/node_modules/concat-map/test/map.js +39 -0
  105. package/node_modules/minimatch/LICENSE +15 -0
  106. package/node_modules/minimatch/README.md +230 -0
  107. package/node_modules/minimatch/minimatch.js +947 -0
  108. package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
  109. package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
  110. package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
  111. package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
  112. package/node_modules/minimatch/package.json +33 -0
  113. package/package.json +186 -0
  114. package/rotate.md +84 -0
@@ -0,0 +1,138 @@
1
+ import { ApiObject, Duration, Cron } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ import * as k8s from './imports/k8s';
4
+ import { JobProps } from './job';
5
+ import * as workload from './workload';
6
+ /**
7
+ * Concurrency policy for CronJobs.
8
+ */
9
+ export declare enum ConcurrencyPolicy {
10
+ /**
11
+ * This policy allows to run job concurrently.
12
+ */
13
+ ALLOW = "Allow",
14
+ /**
15
+ * This policy does not allow to run job concurrently. It does not let a new job to be scheduled if the previous one is not finished yet.
16
+ */
17
+ FORBID = "Forbid",
18
+ /**
19
+ * This policy replaces the currently running job if a new job is being scheduled.
20
+ */
21
+ REPLACE = "Replace"
22
+ }
23
+ /**
24
+ * Properties for `CronJob`.
25
+ */
26
+ export interface CronJobProps extends JobProps {
27
+ /**
28
+ * Specifies the time in which the job would run again. This is defined as a cron expression in the CronJob resource.
29
+ */
30
+ readonly schedule: Cron;
31
+ /**
32
+ * Specifies the timezone for the job. This helps aligining the schedule to follow the specified timezone.
33
+ *
34
+ * @see {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones} for list of valid timezone values.
35
+ *
36
+ * @default - Timezone of kube-controller-manager process.
37
+ */
38
+ readonly timeZone?: string;
39
+ /**
40
+ * Specifies the concurrency policy for the job.
41
+ *
42
+ * @default ConcurrencyPolicy.Forbid
43
+ */
44
+ readonly concurrencyPolicy?: ConcurrencyPolicy;
45
+ /**
46
+ * Kubernetes attempts to start cron jobs at its schedule time, but this is not guaranteed. This deadline specifies
47
+ * how much time can pass after a schedule point, for which kubernetes can still start the job.
48
+ * For example, if this is set to 100 seconds, kubernetes is allowed to start the job at a maximum 100 seconds after
49
+ * the scheduled time.
50
+ *
51
+ * Note that the Kubernetes CronJobController checks for things every 10 seconds, for this reason, a deadline below 10
52
+ * seconds is not allowed, as it may cause your job to never be scheduled.
53
+ *
54
+ * In addition, kubernetes will stop scheduling jobs if more than 100 schedules were missed (for any reason).
55
+ * This property also controls what time interval should kubernetes consider when counting for missed schedules.
56
+ *
57
+ * For example, suppose a CronJob is set to schedule a new Job every one minute beginning at 08:30:00,
58
+ * and its `startingDeadline` field is not set. If the CronJob controller happens to be down from 08:29:00 to 10:21:00,
59
+ * the job will not start as the number of missed jobs which missed their schedule is greater than 100.
60
+ * However, if `startingDeadline` is set to 200 seconds, kubernetes will only count 3 missed schedules, and thus
61
+ * start a new execution at 10:22:00.
62
+ *
63
+ * @default Duration.seconds(10)
64
+ */
65
+ readonly startingDeadline?: Duration;
66
+ /**
67
+ * Specifies if the cron job should be suspended. Only applies to future executions, current ones are remained untouched.
68
+ *
69
+ * @default false
70
+ */
71
+ readonly suspend?: boolean;
72
+ /**
73
+ * Specifies the number of successful jobs history retained. This would retain the Job and the associated Pod resource and can be useful for debugging.
74
+ *
75
+ * @default 3
76
+ */
77
+ readonly successfulJobsRetained?: number;
78
+ /**
79
+ * Specifies the number of failed jobs history retained. This would retain the Job and the associated Pod resource and can be useful for debugging.
80
+ *
81
+ * @default 1
82
+ */
83
+ readonly failedJobsRetained?: number;
84
+ }
85
+ /**
86
+ * A CronJob is responsible for creating a Job and scheduling it based on provided cron schedule. This helps running Jobs in a recurring manner.
87
+ */
88
+ export declare class CronJob extends workload.Workload {
89
+ /**
90
+ * The schedule this cron job is scheduled to run in.
91
+ */
92
+ readonly schedule: Cron;
93
+ /**
94
+ * The timezone which this cron job would follow to schedule jobs.
95
+ */
96
+ readonly timeZone?: string;
97
+ /**
98
+ * The policy used by this cron job to determine the concurrency mode in which to schedule jobs.
99
+ */
100
+ readonly concurrencyPolicy: string;
101
+ /**
102
+ * The time by which the running cron job needs to schedule the next job execution. The job is considered as failed if it misses this deadline.
103
+ */
104
+ readonly startingDeadline: Duration;
105
+ /**
106
+ * Whether or not the cron job is currently suspended or not.
107
+ */
108
+ readonly suspend: boolean;
109
+ /**
110
+ * The number of successful jobs retained by this cron job.
111
+ */
112
+ readonly successfulJobsRetained: number;
113
+ /**
114
+ * The number of failed jobs retained by this cron job.
115
+ */
116
+ readonly failedJobsRetained: number;
117
+ /**
118
+ * The properties of the recurring `Job` that this cronjob will schedule.
119
+ */
120
+ private readonly jobProperties;
121
+ /**
122
+ * @see base.Resource.apiObject
123
+ */
124
+ protected readonly apiObject: ApiObject;
125
+ /**
126
+ * Represents the resource type.
127
+ */
128
+ readonly resourceType = "cronjob";
129
+ constructor(scope: Construct, id: string, props: CronJobProps);
130
+ /**
131
+ * @internal
132
+ */
133
+ _toKube(): k8s.CronJobSpec;
134
+ /**
135
+ * Returns the job spec.
136
+ */
137
+ private _toJobSpec;
138
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CronJob = exports.ConcurrencyPolicy = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdk8s_1 = require("cdk8s");
7
+ const k8s = require("./imports/k8s");
8
+ const pod_1 = require("./pod");
9
+ const workload = require("./workload");
10
+ /**
11
+ * Concurrency policy for CronJobs.
12
+ */
13
+ var ConcurrencyPolicy;
14
+ (function (ConcurrencyPolicy) {
15
+ /**
16
+ * This policy allows to run job concurrently.
17
+ */
18
+ ConcurrencyPolicy["ALLOW"] = "Allow";
19
+ /**
20
+ * This policy does not allow to run job concurrently. It does not let a new job to be scheduled if the previous one is not finished yet.
21
+ */
22
+ ConcurrencyPolicy["FORBID"] = "Forbid";
23
+ /**
24
+ * This policy replaces the currently running job if a new job is being scheduled.
25
+ */
26
+ ConcurrencyPolicy["REPLACE"] = "Replace";
27
+ })(ConcurrencyPolicy = exports.ConcurrencyPolicy || (exports.ConcurrencyPolicy = {}));
28
+ /**
29
+ * A CronJob is responsible for creating a Job and scheduling it based on provided cron schedule. This helps running Jobs in a recurring manner.
30
+ */
31
+ class CronJob extends workload.Workload {
32
+ constructor(scope, id, props) {
33
+ super(scope, id, {
34
+ restartPolicy: pod_1.RestartPolicy.NEVER,
35
+ select: false,
36
+ ...props,
37
+ });
38
+ /**
39
+ * Represents the resource type.
40
+ */
41
+ this.resourceType = 'cronjob';
42
+ this.apiObject = new k8s.KubeCronJob(this, 'Resource', {
43
+ metadata: props.metadata,
44
+ spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
45
+ });
46
+ if (props.startingDeadline != undefined && props.startingDeadline.toSeconds() < 10) {
47
+ throw new Error(`The 'startingDeadline' property cannot be less than 10 seconds since the Kubernetes CronJobController checks things every 10 seconds and hence the CronJob may not be scheduled. The value passed is: ${props.startingDeadline}`);
48
+ }
49
+ if (props.ttlAfterFinished != undefined && (props.successfulJobsRetained != undefined || props.failedJobsRetained != undefined)) {
50
+ throw new Error('The \'ttlAfterFinished\' property cannot be set if \'successfulJobsRetained\' property or \'failedJobsRetained\' property is set. This would cause the retention of jobs to not work properly since it would delete the job based on its value.');
51
+ }
52
+ if (this.isolate) {
53
+ this.connections.isolate();
54
+ }
55
+ this.schedule = props.schedule;
56
+ this.timeZone = props.timeZone;
57
+ this.concurrencyPolicy = props.concurrencyPolicy ?? ConcurrencyPolicy.FORBID;
58
+ this.startingDeadline = props.startingDeadline ?? cdk8s_1.Duration.seconds(10);
59
+ this.suspend = props.suspend ?? false;
60
+ this.successfulJobsRetained = props.successfulJobsRetained ?? 3;
61
+ this.failedJobsRetained = props.failedJobsRetained ?? 1;
62
+ this.jobProperties = {
63
+ activeDeadline: props.activeDeadline,
64
+ backoffLimit: props.backoffLimit,
65
+ ttlAfterFinished: props.ttlAfterFinished,
66
+ };
67
+ }
68
+ /**
69
+ * @internal
70
+ */
71
+ _toKube() {
72
+ return {
73
+ concurrencyPolicy: this.concurrencyPolicy,
74
+ failedJobsHistoryLimit: this.failedJobsRetained,
75
+ jobTemplate: {
76
+ spec: this._toJobSpec(),
77
+ },
78
+ schedule: this.schedule.expressionString,
79
+ startingDeadlineSeconds: this.startingDeadline.toSeconds(),
80
+ successfulJobsHistoryLimit: this.successfulJobsRetained,
81
+ suspend: this.suspend,
82
+ timeZone: this.timeZone,
83
+ };
84
+ }
85
+ /**
86
+ * Returns the job spec.
87
+ */
88
+ _toJobSpec() {
89
+ return {
90
+ template: {
91
+ metadata: this.podMetadata.toJson(),
92
+ spec: this._toPodSpec(),
93
+ },
94
+ activeDeadlineSeconds: this.jobProperties.activeDeadline?.toSeconds(),
95
+ backoffLimit: this.jobProperties.backoffLimit,
96
+ ttlSecondsAfterFinished: this.jobProperties.ttlAfterFinished?.toSeconds(),
97
+ };
98
+ }
99
+ }
100
+ exports.CronJob = CronJob;
101
+ _a = JSII_RTTI_SYMBOL_1;
102
+ CronJob[_a] = { fqn: "cdk8s-plus-31.CronJob", version: "2.0.0" };
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1qb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3Jvbi1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBd0Q7QUFFeEQscUNBQXFDO0FBRXJDLCtCQUFzQztBQUN0Qyx1Q0FBdUM7QUFFdkM7O0dBRUc7QUFDSCxJQUFZLGlCQWFYO0FBYkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxvQ0FBZSxDQUFBO0lBQ2Y7O09BRUc7SUFDSCxzQ0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILHdDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFiVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQWE1QjtBQXVFRDs7R0FFRztBQUNILE1BQWEsT0FBUSxTQUFRLFFBQVEsQ0FBQyxRQUFRO0lBbUQ1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1CO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsYUFBYSxFQUFFLG1CQUFhLENBQUMsS0FBSztZQUNsQyxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQVZMOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxTQUFTLENBQUM7UUFTdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNyRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsSUFBSSxFQUFFLFlBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksU0FBUyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbEYsTUFBTSxJQUFJLEtBQUssQ0FBQyx5TUFBeU0sS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztTQUNwUDtRQUVELElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQy9ILE1BQU0sSUFBSSxLQUFLLENBQUMsaVBBQWlQLENBQUMsQ0FBQztTQUNwUTtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUM3RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLGdCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDcEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7U0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQy9DLFdBQVcsRUFBRTtnQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUN4QjtZQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtZQUN4Qyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO1lBQzFELDBCQUEwQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDdkQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVTtRQUNoQixPQUFPO1lBQ0wsUUFBUSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtnQkFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDeEI7WUFDRCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7WUFDckUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWTtZQUM3Qyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRTtTQUMxRSxDQUFDO0lBQ0osQ0FBQzs7QUF4SEgsMEJBeUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0LCBEdXJhdGlvbiwgTGF6eSwgQ3JvbiB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgazhzIGZyb20gJy4vaW1wb3J0cy9rOHMnO1xuaW1wb3J0IHsgSm9iUHJvcHMgfSBmcm9tICcuL2pvYic7XG5pbXBvcnQgeyBSZXN0YXJ0UG9saWN5IH0gZnJvbSAnLi9wb2QnO1xuaW1wb3J0ICogYXMgd29ya2xvYWQgZnJvbSAnLi93b3JrbG9hZCc7XG5cbi8qKlxuICogQ29uY3VycmVuY3kgcG9saWN5IGZvciBDcm9uSm9icy5cbiAqL1xuZXhwb3J0IGVudW0gQ29uY3VycmVuY3lQb2xpY3kge1xuICAvKipcbiAgICogVGhpcyBwb2xpY3kgYWxsb3dzIHRvIHJ1biBqb2IgY29uY3VycmVudGx5LlxuICAgKi9cbiAgQUxMT1cgPSAnQWxsb3cnLFxuICAvKipcbiAgICogVGhpcyBwb2xpY3kgZG9lcyBub3QgYWxsb3cgdG8gcnVuIGpvYiBjb25jdXJyZW50bHkuIEl0IGRvZXMgbm90IGxldCBhIG5ldyBqb2IgdG8gYmUgc2NoZWR1bGVkIGlmIHRoZSBwcmV2aW91cyBvbmUgaXMgbm90IGZpbmlzaGVkIHlldC5cbiAgICovXG4gIEZPUkJJRCA9ICdGb3JiaWQnLFxuICAvKipcbiAgICogVGhpcyBwb2xpY3kgcmVwbGFjZXMgdGhlIGN1cnJlbnRseSBydW5uaW5nIGpvYiBpZiBhIG5ldyBqb2IgaXMgYmVpbmcgc2NoZWR1bGVkLlxuICAgKi9cbiAgUkVQTEFDRSA9ICdSZXBsYWNlJyxcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgQ3JvbkpvYmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JvbkpvYlByb3BzIGV4dGVuZHMgSm9iUHJvcHMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0aW1lIGluIHdoaWNoIHRoZSBqb2Igd291bGQgcnVuIGFnYWluLiBUaGlzIGlzIGRlZmluZWQgYXMgYSBjcm9uIGV4cHJlc3Npb24gaW4gdGhlIENyb25Kb2IgcmVzb3VyY2UuXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZTogQ3JvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0aW1lem9uZSBmb3IgdGhlIGpvYi4gVGhpcyBoZWxwcyBhbGlnaW5pbmcgdGhlIHNjaGVkdWxlIHRvIGZvbGxvdyB0aGUgc3BlY2lmaWVkIHRpbWV6b25lLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX3R6X2RhdGFiYXNlX3RpbWVfem9uZXN9IGZvciBsaXN0IG9mIHZhbGlkIHRpbWV6b25lIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaW1lem9uZSBvZiBrdWJlLWNvbnRyb2xsZXItbWFuYWdlciBwcm9jZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZVpvbmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgY29uY3VycmVuY3kgcG9saWN5IGZvciB0aGUgam9iLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb25jdXJyZW5jeVBvbGljeS5Gb3JiaWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5UG9saWN5PzogQ29uY3VycmVuY3lQb2xpY3k7XG5cbiAgLyoqXG4gICAqIEt1YmVybmV0ZXMgYXR0ZW1wdHMgdG8gc3RhcnQgY3JvbiBqb2JzIGF0IGl0cyBzY2hlZHVsZSB0aW1lLCBidXQgdGhpcyBpcyBub3QgZ3VhcmFudGVlZC4gVGhpcyBkZWFkbGluZSBzcGVjaWZpZXNcbiAgICogaG93IG11Y2ggdGltZSBjYW4gcGFzcyBhZnRlciBhIHNjaGVkdWxlIHBvaW50LCBmb3Igd2hpY2gga3ViZXJuZXRlcyBjYW4gc3RpbGwgc3RhcnQgdGhlIGpvYi5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgc2V0IHRvIDEwMCBzZWNvbmRzLCBrdWJlcm5ldGVzIGlzIGFsbG93ZWQgdG8gc3RhcnQgdGhlIGpvYiBhdCBhIG1heGltdW0gMTAwIHNlY29uZHMgYWZ0ZXJcbiAgICogdGhlIHNjaGVkdWxlZCB0aW1lLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIEt1YmVybmV0ZXMgQ3JvbkpvYkNvbnRyb2xsZXIgY2hlY2tzIGZvciB0aGluZ3MgZXZlcnkgMTAgc2Vjb25kcywgZm9yIHRoaXMgcmVhc29uLCBhIGRlYWRsaW5lIGJlbG93IDEwXG4gICAqIHNlY29uZHMgaXMgbm90IGFsbG93ZWQsIGFzIGl0IG1heSBjYXVzZSB5b3VyIGpvYiB0byBuZXZlciBiZSBzY2hlZHVsZWQuXG4gICAqXG4gICAqIEluIGFkZGl0aW9uLCBrdWJlcm5ldGVzIHdpbGwgc3RvcCBzY2hlZHVsaW5nIGpvYnMgaWYgbW9yZSB0aGFuIDEwMCBzY2hlZHVsZXMgd2VyZSBtaXNzZWQgKGZvciBhbnkgcmVhc29uKS5cbiAgICogVGhpcyBwcm9wZXJ0eSBhbHNvIGNvbnRyb2xzIHdoYXQgdGltZSBpbnRlcnZhbCBzaG91bGQga3ViZXJuZXRlcyBjb25zaWRlciB3aGVuIGNvdW50aW5nIGZvciBtaXNzZWQgc2NoZWR1bGVzLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgc3VwcG9zZSBhIENyb25Kb2IgaXMgc2V0IHRvIHNjaGVkdWxlIGEgbmV3IEpvYiBldmVyeSBvbmUgbWludXRlIGJlZ2lubmluZyBhdCAwODozMDowMCxcbiAgICogYW5kIGl0cyBgc3RhcnRpbmdEZWFkbGluZWAgZmllbGQgaXMgbm90IHNldC4gSWYgdGhlIENyb25Kb2IgY29udHJvbGxlciBoYXBwZW5zIHRvIGJlIGRvd24gZnJvbSAwODoyOTowMCB0byAxMDoyMTowMCxcbiAgICogdGhlIGpvYiB3aWxsIG5vdCBzdGFydCBhcyB0aGUgbnVtYmVyIG9mIG1pc3NlZCBqb2JzIHdoaWNoIG1pc3NlZCB0aGVpciBzY2hlZHVsZSBpcyBncmVhdGVyIHRoYW4gMTAwLlxuICAgKiBIb3dldmVyLCBpZiBgc3RhcnRpbmdEZWFkbGluZWAgaXMgc2V0IHRvIDIwMCBzZWNvbmRzLCBrdWJlcm5ldGVzIHdpbGwgb25seSBjb3VudCAzIG1pc3NlZCBzY2hlZHVsZXMsIGFuZCB0aHVzXG4gICAqIHN0YXJ0IGEgbmV3IGV4ZWN1dGlvbiBhdCAxMDoyMjowMC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygxMClcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0aW5nRGVhZGxpbmU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIHRoZSBjcm9uIGpvYiBzaG91bGQgYmUgc3VzcGVuZGVkLiBPbmx5IGFwcGxpZXMgdG8gZnV0dXJlIGV4ZWN1dGlvbnMsIGN1cnJlbnQgb25lcyBhcmUgcmVtYWluZWQgdW50b3VjaGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VzcGVuZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgam9icyBoaXN0b3J5IHJldGFpbmVkLiBUaGlzIHdvdWxkIHJldGFpbiB0aGUgSm9iIGFuZCB0aGUgYXNzb2NpYXRlZCBQb2QgcmVzb3VyY2UgYW5kIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAgICpcbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2Vzc2Z1bEpvYnNSZXRhaW5lZD86IG51bWJlcjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZmFpbGVkIGpvYnMgaGlzdG9yeSByZXRhaW5lZC4gVGhpcyB3b3VsZCByZXRhaW4gdGhlIEpvYiBhbmQgdGhlIGFzc29jaWF0ZWQgUG9kIHJlc291cmNlIGFuZCBjYW4gYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxlZEpvYnNSZXRhaW5lZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIENyb25Kb2IgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGEgSm9iIGFuZCBzY2hlZHVsaW5nIGl0IGJhc2VkIG9uIHByb3ZpZGVkIGNyb24gc2NoZWR1bGUuIFRoaXMgaGVscHMgcnVubmluZyBKb2JzIGluIGEgcmVjdXJyaW5nIG1hbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIENyb25Kb2IgZXh0ZW5kcyB3b3JrbG9hZC5Xb3JrbG9hZCB7XG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGUgdGhpcyBjcm9uIGpvYiBpcyBzY2hlZHVsZWQgdG8gcnVuIGluLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlOiBDcm9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZXpvbmUgd2hpY2ggdGhpcyBjcm9uIGpvYiB3b3VsZCBmb2xsb3cgdG8gc2NoZWR1bGUgam9icy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0aW1lWm9uZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvbGljeSB1c2VkIGJ5IHRoaXMgY3JvbiBqb2IgdG8gZGV0ZXJtaW5lIHRoZSBjb25jdXJyZW5jeSBtb2RlIGluIHdoaWNoIHRvIHNjaGVkdWxlIGpvYnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uY3VycmVuY3lQb2xpY3k6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRpbWUgYnkgd2hpY2ggdGhlIHJ1bm5pbmcgY3JvbiBqb2IgbmVlZHMgdG8gc2NoZWR1bGUgdGhlIG5leHQgam9iIGV4ZWN1dGlvbi4gVGhlIGpvYiBpcyBjb25zaWRlcmVkIGFzIGZhaWxlZCBpZiBpdCBtaXNzZXMgdGhpcyBkZWFkbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGFydGluZ0RlYWRsaW5lOiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGNyb24gam9iIGlzIGN1cnJlbnRseSBzdXNwZW5kZWQgb3Igbm90LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1c3BlbmQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBqb2JzIHJldGFpbmVkIGJ5IHRoaXMgY3JvbiBqb2IuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VjY2Vzc2Z1bEpvYnNSZXRhaW5lZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZhaWxlZCBqb2JzIHJldGFpbmVkIGJ5IHRoaXMgY3JvbiBqb2IuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmFpbGVkSm9ic1JldGFpbmVkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZWN1cnJpbmcgYEpvYmAgdGhhdCB0aGlzIGNyb25qb2Igd2lsbCBzY2hlZHVsZS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgam9iUHJvcGVydGllczogSm9iUHJvcHM7XG5cbiAgLyoqXG4gICAqIEBzZWUgYmFzZS5SZXNvdXJjZS5hcGlPYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlPYmplY3Q6IEFwaU9iamVjdDtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgcmVzb3VyY2UgdHlwZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGUgPSAnY3JvbmpvYic7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENyb25Kb2JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcmVzdGFydFBvbGljeTogUmVzdGFydFBvbGljeS5ORVZFUixcbiAgICAgIHNlbGVjdDogZmFsc2UsXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlQ3JvbkpvYih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBtZXRhZGF0YTogcHJvcHMubWV0YWRhdGEsXG4gICAgICBzcGVjOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuX3RvS3ViZSgpIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnN0YXJ0aW5nRGVhZGxpbmUgIT0gdW5kZWZpbmVkICYmIHByb3BzLnN0YXJ0aW5nRGVhZGxpbmUudG9TZWNvbmRzKCkgPCAxMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJ3N0YXJ0aW5nRGVhZGxpbmUnIHByb3BlcnR5IGNhbm5vdCBiZSBsZXNzIHRoYW4gMTAgc2Vjb25kcyBzaW5jZSB0aGUgS3ViZXJuZXRlcyBDcm9uSm9iQ29udHJvbGxlciBjaGVja3MgdGhpbmdzIGV2ZXJ5IDEwIHNlY29uZHMgYW5kIGhlbmNlIHRoZSBDcm9uSm9iIG1heSBub3QgYmUgc2NoZWR1bGVkLiBUaGUgdmFsdWUgcGFzc2VkIGlzOiAke3Byb3BzLnN0YXJ0aW5nRGVhZGxpbmV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnR0bEFmdGVyRmluaXNoZWQgIT0gdW5kZWZpbmVkICYmIChwcm9wcy5zdWNjZXNzZnVsSm9ic1JldGFpbmVkICE9IHVuZGVmaW5lZCB8fCBwcm9wcy5mYWlsZWRKb2JzUmV0YWluZWQgIT0gdW5kZWZpbmVkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgXFwndHRsQWZ0ZXJGaW5pc2hlZFxcJyBwcm9wZXJ0eSBjYW5ub3QgYmUgc2V0IGlmIFxcJ3N1Y2Nlc3NmdWxKb2JzUmV0YWluZWRcXCcgcHJvcGVydHkgb3IgXFwnZmFpbGVkSm9ic1JldGFpbmVkXFwnIHByb3BlcnR5IGlzIHNldC4gVGhpcyB3b3VsZCBjYXVzZSB0aGUgcmV0ZW50aW9uIG9mIGpvYnMgdG8gbm90IHdvcmsgcHJvcGVybHkgc2luY2UgaXQgd291bGQgZGVsZXRlIHRoZSBqb2IgYmFzZWQgb24gaXRzIHZhbHVlLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzb2xhdGUpIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbnMuaXNvbGF0ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuc2NoZWR1bGUgPSBwcm9wcy5zY2hlZHVsZTtcbiAgICB0aGlzLnRpbWVab25lID0gcHJvcHMudGltZVpvbmU7XG4gICAgdGhpcy5jb25jdXJyZW5jeVBvbGljeSA9IHByb3BzLmNvbmN1cnJlbmN5UG9saWN5ID8/IENvbmN1cnJlbmN5UG9saWN5LkZPUkJJRDtcbiAgICB0aGlzLnN0YXJ0aW5nRGVhZGxpbmUgPSBwcm9wcy5zdGFydGluZ0RlYWRsaW5lID8/IER1cmF0aW9uLnNlY29uZHMoMTApO1xuICAgIHRoaXMuc3VzcGVuZCA9IHByb3BzLnN1c3BlbmQgPz8gZmFsc2U7XG4gICAgdGhpcy5zdWNjZXNzZnVsSm9ic1JldGFpbmVkID0gcHJvcHMuc3VjY2Vzc2Z1bEpvYnNSZXRhaW5lZCA/PyAzO1xuICAgIHRoaXMuZmFpbGVkSm9ic1JldGFpbmVkID0gcHJvcHMuZmFpbGVkSm9ic1JldGFpbmVkID8/IDE7XG4gICAgdGhpcy5qb2JQcm9wZXJ0aWVzID0ge1xuICAgICAgYWN0aXZlRGVhZGxpbmU6IHByb3BzLmFjdGl2ZURlYWRsaW5lLFxuICAgICAgYmFja29mZkxpbWl0OiBwcm9wcy5iYWNrb2ZmTGltaXQsXG4gICAgICB0dGxBZnRlckZpbmlzaGVkOiBwcm9wcy50dGxBZnRlckZpbmlzaGVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvS3ViZSgpOiBrOHMuQ3JvbkpvYlNwZWMge1xuICAgIHJldHVybiB7XG4gICAgICBjb25jdXJyZW5jeVBvbGljeTogdGhpcy5jb25jdXJyZW5jeVBvbGljeSxcbiAgICAgIGZhaWxlZEpvYnNIaXN0b3J5TGltaXQ6IHRoaXMuZmFpbGVkSm9ic1JldGFpbmVkLFxuICAgICAgam9iVGVtcGxhdGU6IHtcbiAgICAgICAgc3BlYzogdGhpcy5fdG9Kb2JTcGVjKCksXG4gICAgICB9LFxuICAgICAgc2NoZWR1bGU6IHRoaXMuc2NoZWR1bGUuZXhwcmVzc2lvblN0cmluZyxcbiAgICAgIHN0YXJ0aW5nRGVhZGxpbmVTZWNvbmRzOiB0aGlzLnN0YXJ0aW5nRGVhZGxpbmUudG9TZWNvbmRzKCksXG4gICAgICBzdWNjZXNzZnVsSm9ic0hpc3RvcnlMaW1pdDogdGhpcy5zdWNjZXNzZnVsSm9ic1JldGFpbmVkLFxuICAgICAgc3VzcGVuZDogdGhpcy5zdXNwZW5kLFxuICAgICAgdGltZVpvbmU6IHRoaXMudGltZVpvbmUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBqb2Igc3BlYy5cbiAgICovXG4gIHByaXZhdGUgX3RvSm9iU3BlYygpOiBrOHMuSm9iU3BlYyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIG1ldGFkYXRhOiB0aGlzLnBvZE1ldGFkYXRhLnRvSnNvbigpLFxuICAgICAgICBzcGVjOiB0aGlzLl90b1BvZFNwZWMoKSxcbiAgICAgIH0sXG4gICAgICBhY3RpdmVEZWFkbGluZVNlY29uZHM6IHRoaXMuam9iUHJvcGVydGllcy5hY3RpdmVEZWFkbGluZT8udG9TZWNvbmRzKCksXG4gICAgICBiYWNrb2ZmTGltaXQ6IHRoaXMuam9iUHJvcGVydGllcy5iYWNrb2ZmTGltaXQsXG4gICAgICB0dGxTZWNvbmRzQWZ0ZXJGaW5pc2hlZDogdGhpcy5qb2JQcm9wZXJ0aWVzLnR0bEFmdGVyRmluaXNoZWQ/LnRvU2Vjb25kcygpLFxuICAgIH07XG4gIH1cbn0iXX0=
@@ -0,0 +1,45 @@
1
+ import { ApiObject } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ import * as k8s from './imports/k8s';
4
+ import * as workload from './workload';
5
+ /**
6
+ * Properties for `DaemonSet`.
7
+ */
8
+ export interface DaemonSetProps extends workload.WorkloadProps {
9
+ /**
10
+ * Minimum number of seconds for which a newly created pod should
11
+ * be ready without any of its container crashing, for it to be considered available.
12
+ *
13
+ * @default 0
14
+ */
15
+ readonly minReadySeconds?: number;
16
+ }
17
+ /**
18
+ * A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.
19
+ * As nodes are added to the cluster, Pods are added to them.
20
+ * As nodes are removed from the cluster, those Pods are garbage collected.
21
+ * Deleting a DaemonSet will clean up the Pods it created.
22
+ *
23
+ * Some typical uses of a DaemonSet are:
24
+ *
25
+ * - running a cluster storage daemon on every node
26
+ * - running a logs collection daemon on every node
27
+ * - running a node monitoring daemon on every node
28
+ *
29
+ * In a simple case, one DaemonSet, covering all nodes, would be used for each type of daemon.
30
+ * A more complex setup might use multiple DaemonSets for a single type of daemon,
31
+ * but with different flags and/or different memory and cpu requests for different hardware types.
32
+ */
33
+ export declare class DaemonSet extends workload.Workload {
34
+ /**
35
+ * @see base.Resource.apiObject
36
+ */
37
+ protected readonly apiObject: ApiObject;
38
+ readonly resourceType = "daemonsets";
39
+ readonly minReadySeconds: number;
40
+ constructor(scope: Construct, id: string, props?: DaemonSetProps);
41
+ /**
42
+ * @internal
43
+ */
44
+ _toKube(): k8s.DaemonSetSpec;
45
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DaemonSet = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdk8s_1 = require("cdk8s");
7
+ const k8s = require("./imports/k8s");
8
+ const workload = require("./workload");
9
+ /**
10
+ * A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.
11
+ * As nodes are added to the cluster, Pods are added to them.
12
+ * As nodes are removed from the cluster, those Pods are garbage collected.
13
+ * Deleting a DaemonSet will clean up the Pods it created.
14
+ *
15
+ * Some typical uses of a DaemonSet are:
16
+ *
17
+ * - running a cluster storage daemon on every node
18
+ * - running a logs collection daemon on every node
19
+ * - running a node monitoring daemon on every node
20
+ *
21
+ * In a simple case, one DaemonSet, covering all nodes, would be used for each type of daemon.
22
+ * A more complex setup might use multiple DaemonSets for a single type of daemon,
23
+ * but with different flags and/or different memory and cpu requests for different hardware types.
24
+ */
25
+ class DaemonSet extends workload.Workload {
26
+ constructor(scope, id, props = {}) {
27
+ super(scope, id, props);
28
+ this.resourceType = 'daemonsets';
29
+ this.apiObject = new k8s.KubeDaemonSet(this, 'Resource', {
30
+ metadata: props.metadata,
31
+ spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
32
+ });
33
+ this.minReadySeconds = props.minReadySeconds ?? 0;
34
+ if (this.isolate) {
35
+ this.connections.isolate();
36
+ }
37
+ }
38
+ /**
39
+ * @internal
40
+ */
41
+ _toKube() {
42
+ return {
43
+ minReadySeconds: this.minReadySeconds,
44
+ template: {
45
+ metadata: this.podMetadata.toJson(),
46
+ spec: this._toPodSpec(),
47
+ },
48
+ selector: this._toLabelSelector(),
49
+ };
50
+ }
51
+ }
52
+ exports.DaemonSet = DaemonSet;
53
+ _a = JSII_RTTI_SYMBOL_1;
54
+ DaemonSet[_a] = { fqn: "cdk8s-plus-31.DaemonSet", version: "2.0.0" };
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFlbW9uLXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kYWVtb24tc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQXdDO0FBRXhDLHFDQUFxQztBQUNyQyx1Q0FBdUM7QUFpQnZDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQWEsU0FBVSxTQUFRLFFBQVEsQ0FBQyxRQUFRO0lBVzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBd0IsRUFBRTtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUxWLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBTzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLElBQUksRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUN4QjtZQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7U0FDbEMsQ0FBQztJQUNKLENBQUM7O0FBdENILDhCQXdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaU9iamVjdCwgTGF6eSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgazhzIGZyb20gJy4vaW1wb3J0cy9rOHMnO1xuaW1wb3J0ICogYXMgd29ya2xvYWQgZnJvbSAnLi93b3JrbG9hZCc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYERhZW1vblNldGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGFlbW9uU2V0UHJvcHMgZXh0ZW5kcyB3b3JrbG9hZC5Xb3JrbG9hZFByb3BzIHtcblxuICAvKipcbiAgICogTWluaW11bSBudW1iZXIgb2Ygc2Vjb25kcyBmb3Igd2hpY2ggYSBuZXdseSBjcmVhdGVkIHBvZCBzaG91bGRcbiAgICogYmUgcmVhZHkgd2l0aG91dCBhbnkgb2YgaXRzIGNvbnRhaW5lciBjcmFzaGluZywgZm9yIGl0IHRvIGJlIGNvbnNpZGVyZWQgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBtaW5SZWFkeVNlY29uZHM/OiBudW1iZXI7XG5cbn1cblxuLyoqXG4gKiBBIERhZW1vblNldCBlbnN1cmVzIHRoYXQgYWxsIChvciBzb21lKSBOb2RlcyBydW4gYSBjb3B5IG9mIGEgUG9kLlxuICogQXMgbm9kZXMgYXJlIGFkZGVkIHRvIHRoZSBjbHVzdGVyLCBQb2RzIGFyZSBhZGRlZCB0byB0aGVtLlxuICogQXMgbm9kZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgY2x1c3RlciwgdGhvc2UgUG9kcyBhcmUgZ2FyYmFnZSBjb2xsZWN0ZWQuXG4gKiBEZWxldGluZyBhIERhZW1vblNldCB3aWxsIGNsZWFuIHVwIHRoZSBQb2RzIGl0IGNyZWF0ZWQuXG4gKlxuICogU29tZSB0eXBpY2FsIHVzZXMgb2YgYSBEYWVtb25TZXQgYXJlOlxuICpcbiAqIC0gcnVubmluZyBhIGNsdXN0ZXIgc3RvcmFnZSBkYWVtb24gb24gZXZlcnkgbm9kZVxuICogLSBydW5uaW5nIGEgbG9ncyBjb2xsZWN0aW9uIGRhZW1vbiBvbiBldmVyeSBub2RlXG4gKiAtIHJ1bm5pbmcgYSBub2RlIG1vbml0b3JpbmcgZGFlbW9uIG9uIGV2ZXJ5IG5vZGVcbiAqXG4gKiBJbiBhIHNpbXBsZSBjYXNlLCBvbmUgRGFlbW9uU2V0LCBjb3ZlcmluZyBhbGwgbm9kZXMsIHdvdWxkIGJlIHVzZWQgZm9yIGVhY2ggdHlwZSBvZiBkYWVtb24uXG4gKiBBIG1vcmUgY29tcGxleCBzZXR1cCBtaWdodCB1c2UgbXVsdGlwbGUgRGFlbW9uU2V0cyBmb3IgYSBzaW5nbGUgdHlwZSBvZiBkYWVtb24sXG4gKiBidXQgd2l0aCBkaWZmZXJlbnQgZmxhZ3MgYW5kL29yIGRpZmZlcmVudCBtZW1vcnkgYW5kIGNwdSByZXF1ZXN0cyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHR5cGVzLlxuICovXG5leHBvcnQgY2xhc3MgRGFlbW9uU2V0IGV4dGVuZHMgd29ya2xvYWQuV29ya2xvYWQge1xuXG4gIC8qKlxuICAgKiBAc2VlIGJhc2UuUmVzb3VyY2UuYXBpT2JqZWN0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpT2JqZWN0OiBBcGlPYmplY3Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZSA9ICdkYWVtb25zZXRzJztcblxuICBwdWJsaWMgcmVhZG9ubHkgbWluUmVhZHlTZWNvbmRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhZW1vblNldFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlRGFlbW9uU2V0KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG1ldGFkYXRhOiBwcm9wcy5tZXRhZGF0YSxcbiAgICAgIHNwZWM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5fdG9LdWJlKCkgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLm1pblJlYWR5U2Vjb25kcyA9IHByb3BzLm1pblJlYWR5U2Vjb25kcyA/PyAwO1xuXG4gICAgaWYgKHRoaXMuaXNvbGF0ZSkge1xuICAgICAgdGhpcy5jb25uZWN0aW9ucy5pc29sYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKTogazhzLkRhZW1vblNldFNwZWMge1xuICAgIHJldHVybiB7XG4gICAgICBtaW5SZWFkeVNlY29uZHM6IHRoaXMubWluUmVhZHlTZWNvbmRzLFxuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgbWV0YWRhdGE6IHRoaXMucG9kTWV0YWRhdGEudG9Kc29uKCksXG4gICAgICAgIHNwZWM6IHRoaXMuX3RvUG9kU3BlYygpLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdG9yOiB0aGlzLl90b0xhYmVsU2VsZWN0b3IoKSxcbiAgICB9O1xuICB9XG5cbn0iXX0=
@@ -0,0 +1,223 @@
1
+ import { ApiObject, Duration } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ import { IScalable, ScalingTarget } from './horizontal-pod-autoscaler';
4
+ import * as k8s from './imports/k8s';
5
+ import * as ingress from './ingress';
6
+ import * as service from './service';
7
+ import * as workload from './workload';
8
+ /**
9
+ * Properties for `Deployment`.
10
+ */
11
+ export interface DeploymentProps extends workload.WorkloadProps {
12
+ /**
13
+ * Number of desired pods.
14
+ *
15
+ * @default 2
16
+ */
17
+ readonly replicas?: number;
18
+ /**
19
+ * Specifies the strategy used to replace old Pods by new ones.
20
+ *
21
+ * @default - RollingUpdate with maxSurge and maxUnavailable set to 25%.
22
+ */
23
+ readonly strategy?: DeploymentStrategy;
24
+ /**
25
+ * Minimum duration for which a newly created pod should be ready without
26
+ * any of its container crashing, for it to be considered available.
27
+ *
28
+ * Zero means the pod will be considered available as soon as it is ready.
29
+ *
30
+ * @see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#min-ready-seconds
31
+ * @default Duration.seconds(0)
32
+ */
33
+ readonly minReady?: Duration;
34
+ /**
35
+ * The maximum duration for a deployment to make progress before it
36
+ * is considered to be failed. The deployment controller will continue
37
+ * to process failed deployments and a condition with a ProgressDeadlineExceeded
38
+ * reason will be surfaced in the deployment status.
39
+ *
40
+ * Note that progress will not be estimated during the time a deployment is paused.
41
+ *
42
+ * @see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#progress-deadline-seconds
43
+ * @default Duration.seconds(600)
44
+ */
45
+ readonly progressDeadline?: Duration;
46
+ }
47
+ /**
48
+ * Options for `Deployment.exposeViaService`.
49
+ */
50
+ export interface DeploymentExposeViaServiceOptions {
51
+ /**
52
+ * The ports that the service should bind to.
53
+ *
54
+ * @default - extracted from the deployment.
55
+ */
56
+ readonly ports?: service.ServicePort[];
57
+ /**
58
+ * The type of the exposed service.
59
+ *
60
+ * @default - ClusterIP.
61
+ */
62
+ readonly serviceType?: service.ServiceType;
63
+ /**
64
+ * The name of the service to expose.
65
+ * If you'd like to expose the deployment multiple times,
66
+ * you must explicitly set a name starting from the second expose call.
67
+ *
68
+ * @default - auto generated.
69
+ */
70
+ readonly name?: string;
71
+ }
72
+ /**
73
+ * Options for exposing a deployment via an ingress.
74
+ */
75
+ export interface ExposeDeploymentViaIngressOptions extends DeploymentExposeViaServiceOptions, service.ExposeServiceViaIngressOptions {
76
+ }
77
+ /**
78
+ *
79
+ * A Deployment provides declarative updates for Pods and ReplicaSets.
80
+ *
81
+ * You describe a desired state in a Deployment, and the Deployment Controller changes the actual
82
+ * state to the desired state at a controlled rate. You can define Deployments to create new ReplicaSets, or to remove
83
+ * existing Deployments and adopt all their resources with new Deployments.
84
+ *
85
+ * > Note: Do not manage ReplicaSets owned by a Deployment. Consider opening an issue in the main Kubernetes repository if your use case is not covered below.
86
+ *
87
+ * Use Case
88
+ *
89
+ * The following are typical use cases for Deployments:
90
+ *
91
+ * - Create a Deployment to rollout a ReplicaSet. The ReplicaSet creates Pods in the background.
92
+ * Check the status of the rollout to see if it succeeds or not.
93
+ * - Declare the new state of the Pods by updating the PodTemplateSpec of the Deployment.
94
+ * A new ReplicaSet is created and the Deployment manages moving the Pods from the old ReplicaSet to the new one at a controlled rate.
95
+ * Each new ReplicaSet updates the revision of the Deployment.
96
+ * - Rollback to an earlier Deployment revision if the current state of the Deployment is not stable.
97
+ * Each rollback updates the revision of the Deployment.
98
+ * - Scale up the Deployment to facilitate more load.
99
+ * - Pause the Deployment to apply multiple fixes to its PodTemplateSpec and then resume it to start a new rollout.
100
+ * - Use the status of the Deployment as an indicator that a rollout has stuck.
101
+ * - Clean up older ReplicaSets that you don't need anymore.
102
+ *
103
+ **/
104
+ export declare class Deployment extends workload.Workload implements IScalable {
105
+ /**
106
+ * Number of desired pods.
107
+ */
108
+ readonly replicas?: number;
109
+ /**
110
+ * Minimum duration for which a newly created pod should be ready without
111
+ * any of its container crashing, for it to be considered available.
112
+ */
113
+ readonly minReady: Duration;
114
+ /**
115
+ * The maximum duration for a deployment to make progress before it is considered to be failed.
116
+ */
117
+ readonly progressDeadline: Duration;
118
+ readonly strategy: DeploymentStrategy;
119
+ /**
120
+ * @see base.Resource.apiObject
121
+ */
122
+ protected readonly apiObject: ApiObject;
123
+ readonly resourceType = "deployments";
124
+ hasAutoscaler: boolean;
125
+ constructor(scope: Construct, id: string, props?: DeploymentProps);
126
+ /**
127
+ * Expose a deployment via a service.
128
+ *
129
+ * This is equivalent to running `kubectl expose deployment <deployment-name>`.
130
+ *
131
+ * @param options Options to determine details of the service and port exposed.
132
+ */
133
+ exposeViaService(options?: DeploymentExposeViaServiceOptions): service.Service;
134
+ /**
135
+ * Expose a deployment via an ingress.
136
+ *
137
+ * This will first expose the deployment with a service, and then expose the service via an ingress.
138
+ *
139
+ * @param path The ingress path to register under.
140
+ * @param options Additional options.
141
+ */
142
+ exposeViaIngress(path: string, options?: ExposeDeploymentViaIngressOptions): ingress.Ingress;
143
+ /**
144
+ * @internal
145
+ */
146
+ _toKube(): k8s.DeploymentSpec;
147
+ /**
148
+ * @see IScalable.markHasAutoscaler()
149
+ */
150
+ markHasAutoscaler(): void;
151
+ /**
152
+ * @see IScalable.toScalingTarget()
153
+ */
154
+ toScalingTarget(): ScalingTarget;
155
+ }
156
+ /**
157
+ * Options for `DeploymentStrategy.rollingUpdate`.
158
+ */
159
+ export interface DeploymentStrategyRollingUpdateOptions {
160
+ /**
161
+ * The maximum number of pods that can be scheduled above the desired number of pods.
162
+ * Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
163
+ * Absolute number is calculated from percentage by rounding up.
164
+ * This can not be 0 if `maxUnavailable` is 0.
165
+ *
166
+ * Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update
167
+ * starts, such that the total number of old and new pods do not exceed 130% of desired pods.
168
+ * Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that
169
+ * total number of pods running at any time during the update is at most 130% of desired pods.
170
+ *
171
+ * @default '25%'
172
+ */
173
+ readonly maxSurge?: PercentOrAbsolute;
174
+ /**
175
+ * The maximum number of pods that can be unavailable during the update.
176
+ * Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
177
+ * Absolute number is calculated from percentage by rounding down.
178
+ * This can not be 0 if `maxSurge` is 0.
179
+ *
180
+ * Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired
181
+ * pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can
182
+ * be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total
183
+ * number of pods available at all times during the update is at least 70% of desired pods.
184
+ *
185
+ * @default '25%'
186
+ */
187
+ readonly maxUnavailable?: PercentOrAbsolute;
188
+ }
189
+ /**
190
+ * Union like class repsenting either a ration in
191
+ * percents or an absolute number.
192
+ */
193
+ export declare class PercentOrAbsolute {
194
+ readonly value: any;
195
+ /**
196
+ * Percent ratio.
197
+ */
198
+ static percent(percent: number): PercentOrAbsolute;
199
+ /**
200
+ * Absolute number.
201
+ */
202
+ static absolute(num: number): PercentOrAbsolute;
203
+ private constructor();
204
+ isZero(): boolean;
205
+ }
206
+ /**
207
+ * Deployment strategies.
208
+ */
209
+ export declare class DeploymentStrategy {
210
+ private readonly strategy;
211
+ /**
212
+ * All existing Pods are killed before new ones are created.
213
+ *
214
+ * @see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#recreate-deployment
215
+ */
216
+ static recreate(): DeploymentStrategy;
217
+ static rollingUpdate(options?: DeploymentStrategyRollingUpdateOptions): DeploymentStrategy;
218
+ private constructor();
219
+ /**
220
+ * @internal
221
+ */
222
+ _toKube(): k8s.DeploymentStrategy;
223
+ }