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.
- package/.backportrc.json +17 -0
- package/.jsii +90235 -0
- package/CODE_OF_CONDUCT.md +3 -0
- package/CONTRIBUTING.md +185 -0
- package/DCO +34 -0
- package/LICENSE +202 -0
- package/NOTICE +1 -0
- package/OWNERS.md +5 -0
- package/README.md +32 -0
- package/SECURITY.md +5 -0
- package/cdk8s.yaml +8 -0
- package/docs/java.md +23855 -0
- package/docs/plus/config-map.md +98 -0
- package/docs/plus/container.md +133 -0
- package/docs/plus/cronjob.md +67 -0
- package/docs/plus/deployment.md +232 -0
- package/docs/plus/horizontal-pod-autoscaler.md +226 -0
- package/docs/plus/ingress.md +68 -0
- package/docs/plus/job.md +48 -0
- package/docs/plus/namespace.md +58 -0
- package/docs/plus/network-policy.md +341 -0
- package/docs/plus/pod.md +455 -0
- package/docs/plus/pv.md +82 -0
- package/docs/plus/pvc.md +77 -0
- package/docs/plus/rbac.md +104 -0
- package/docs/plus/secret.md +32 -0
- package/docs/plus/service-account.md +35 -0
- package/docs/plus/service.md +41 -0
- package/docs/plus/volume.md +38 -0
- package/docs/python.md +26079 -0
- package/docs/typescript.md +19565 -0
- package/git-hooks/README.md +9 -0
- package/git-hooks/prepare-commit-msg +18 -0
- package/git-hooks/setup.sh +10 -0
- package/lib/_action.d.ts +21 -0
- package/lib/_action.js +32 -0
- package/lib/api-resource.d.ts +298 -0
- package/lib/api-resource.js +430 -0
- package/lib/base.d.ts +79 -0
- package/lib/base.js +92 -0
- package/lib/config-map.d.ts +126 -0
- package/lib/config-map.js +159 -0
- package/lib/container.d.ts +1057 -0
- package/lib/container.js +845 -0
- package/lib/cron-job.d.ts +138 -0
- package/lib/cron-job.js +103 -0
- package/lib/daemon-set.d.ts +45 -0
- package/lib/daemon-set.js +55 -0
- package/lib/deployment.d.ts +223 -0
- package/lib/deployment.js +214 -0
- package/lib/handler.d.ts +62 -0
- package/lib/handler.js +54 -0
- package/lib/horizontal-pod-autoscaler.d.ts +500 -0
- package/lib/horizontal-pod-autoscaler.js +569 -0
- package/lib/imports/k8s.d.ts +21534 -0
- package/lib/imports/k8s.js +16496 -0
- package/lib/index.d.ts +26 -0
- package/lib/index.js +39 -0
- package/lib/ingress.d.ts +230 -0
- package/lib/ingress.js +246 -0
- package/lib/job.d.ts +64 -0
- package/lib/job.js +54 -0
- package/lib/namespace.d.ts +128 -0
- package/lib/namespace.js +109 -0
- package/lib/network-policy.d.ts +311 -0
- package/lib/network-policy.js +344 -0
- package/lib/pod.d.ts +1080 -0
- package/lib/pod.js +1139 -0
- package/lib/probe.d.ts +141 -0
- package/lib/probe.js +77 -0
- package/lib/pv.d.ts +375 -0
- package/lib/pv.js +273 -0
- package/lib/pvc.d.ts +163 -0
- package/lib/pvc.js +152 -0
- package/lib/role-binding.d.ts +138 -0
- package/lib/role-binding.js +165 -0
- package/lib/role.d.ts +268 -0
- package/lib/role.js +401 -0
- package/lib/secret.d.ts +195 -0
- package/lib/secret.js +185 -0
- package/lib/service-account.d.ts +83 -0
- package/lib/service-account.js +105 -0
- package/lib/service.d.ts +289 -0
- package/lib/service.js +182 -0
- package/lib/stateful-set.d.ts +169 -0
- package/lib/stateful-set.js +174 -0
- package/lib/utils.d.ts +4 -0
- package/lib/utils.js +34 -0
- package/lib/volume.d.ts +573 -0
- package/lib/volume.js +371 -0
- package/lib/workload.d.ts +121 -0
- package/lib/workload.js +122 -0
- package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/node_modules/balanced-match/LICENSE.md +21 -0
- package/node_modules/balanced-match/README.md +97 -0
- package/node_modules/balanced-match/index.js +62 -0
- package/node_modules/balanced-match/package.json +48 -0
- package/node_modules/concat-map/.travis.yml +4 -0
- package/node_modules/concat-map/LICENSE +18 -0
- package/node_modules/concat-map/README.markdown +62 -0
- package/node_modules/concat-map/example/map.js +6 -0
- package/node_modules/concat-map/index.js +13 -0
- package/node_modules/concat-map/package.json +43 -0
- package/node_modules/concat-map/test/map.js +39 -0
- package/node_modules/minimatch/LICENSE +15 -0
- package/node_modules/minimatch/README.md +230 -0
- package/node_modules/minimatch/minimatch.js +947 -0
- package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
- package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
- package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
- package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
- package/node_modules/minimatch/package.json +33 -0
- package/package.json +186 -0
- package/rotate.md +84 -0
package/lib/job.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Job = 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 = require("./pod");
|
|
9
|
+
const workload = require("./workload");
|
|
10
|
+
/**
|
|
11
|
+
* A Job creates one or more Pods and ensures that a specified number of them successfully terminate. As pods successfully complete,
|
|
12
|
+
* the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete.
|
|
13
|
+
* Deleting a Job will clean up the Pods it created. A simple case is to create one Job object in order to reliably run one Pod to completion.
|
|
14
|
+
* The Job object will start a new Pod if the first Pod fails or is deleted (for example due to a node hardware failure or a node reboot).
|
|
15
|
+
* You can also use a Job to run multiple Pods in parallel.
|
|
16
|
+
*/
|
|
17
|
+
class Job extends workload.Workload {
|
|
18
|
+
constructor(scope, id, props = {}) {
|
|
19
|
+
super(scope, id, {
|
|
20
|
+
restartPolicy: pod.RestartPolicy.NEVER,
|
|
21
|
+
select: false,
|
|
22
|
+
...props,
|
|
23
|
+
});
|
|
24
|
+
this.resourceType = 'jobs';
|
|
25
|
+
this.apiObject = new k8s.KubeJob(this, 'Resource', {
|
|
26
|
+
metadata: props.metadata,
|
|
27
|
+
spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
|
|
28
|
+
});
|
|
29
|
+
this.activeDeadline = props.activeDeadline;
|
|
30
|
+
this.backoffLimit = props.backoffLimit;
|
|
31
|
+
this.ttlAfterFinished = props.ttlAfterFinished;
|
|
32
|
+
if (this.isolate) {
|
|
33
|
+
this.connections.isolate();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
_toKube() {
|
|
40
|
+
return {
|
|
41
|
+
template: {
|
|
42
|
+
metadata: this.podMetadata.toJson(),
|
|
43
|
+
spec: this._toPodSpec(),
|
|
44
|
+
},
|
|
45
|
+
activeDeadlineSeconds: this.activeDeadline?.toSeconds(),
|
|
46
|
+
backoffLimit: this.backoffLimit,
|
|
47
|
+
ttlSecondsAfterFinished: this.ttlAfterFinished ? this.ttlAfterFinished.toSeconds() : undefined,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.Job = Job;
|
|
52
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
53
|
+
Job[_a] = { fqn: "cdk8s-plus-31.Job", version: "2.0.0" };
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFrRDtBQUVsRCxxQ0FBcUM7QUFDckMsNkJBQTZCO0FBQzdCLHVDQUF1QztBQW9DdkM7Ozs7OztHQU1HO0FBQ0gsTUFBYSxHQUFJLFNBQVEsUUFBUSxDQUFDLFFBQVE7SUF3QnhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBa0IsRUFBRTtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFDdEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7UUFQVyxpQkFBWSxHQUFHLE1BQU0sQ0FBQztRQVNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixJQUFJLEVBQUUsWUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNsRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25DLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQ3hCO1lBQ0QscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7WUFDdkQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLHVCQUF1QixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQy9GLENBQUM7SUFDSixDQUFDOztBQTFESCxrQkE0REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIExhenksIER1cmF0aW9uIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBwb2QgZnJvbSAnLi9wb2QnO1xuaW1wb3J0ICogYXMgd29ya2xvYWQgZnJvbSAnLi93b3JrbG9hZCc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYEpvYmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iUHJvcHMgZXh0ZW5kcyB3b3JrbG9hZC5Xb3JrbG9hZFByb3BzIHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBkdXJhdGlvbiB0aGUgam9iIG1heSBiZSBhY3RpdmUgYmVmb3JlIHRoZSBzeXN0ZW0gdHJpZXMgdG8gdGVybWluYXRlIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHVuc2V0LCB0aGVuIHRoZXJlIGlzIG5vIGRlYWRsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlRGVhZGxpbmU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmV0cmllcyBiZWZvcmUgbWFya2luZyB0aGlzIGpvYiBmYWlsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgbm90IHNldCwgc3lzdGVtIGRlZmF1bHRzIHRvIDYuXG4gICAqL1xuICByZWFkb25seSBiYWNrb2ZmTGltaXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIExpbWl0cyB0aGUgbGlmZXRpbWUgb2YgYSBKb2IgdGhhdCBoYXMgZmluaXNoZWQgZXhlY3V0aW9uIChlaXRoZXIgQ29tcGxldGVcbiAgICogb3IgRmFpbGVkKS4gSWYgdGhpcyBmaWVsZCBpcyBzZXQsIGFmdGVyIHRoZSBKb2IgZmluaXNoZXMsIGl0IGlzIGVsaWdpYmxlIHRvXG4gICAqIGJlIGF1dG9tYXRpY2FsbHkgZGVsZXRlZC4gV2hlbiB0aGUgSm9iIGlzIGJlaW5nIGRlbGV0ZWQsIGl0cyBsaWZlY3ljbGVcbiAgICogZ3VhcmFudGVlcyAoZS5nLiBmaW5hbGl6ZXJzKSB3aWxsIGJlIGhvbm9yZWQuIElmIHRoaXMgZmllbGQgaXMgc2V0IHRvIHplcm8sXG4gICAqIHRoZSBKb2IgYmVjb21lcyBlbGlnaWJsZSB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGZpbmlzaGVzLiBUaGlzXG4gICAqIGZpZWxkIGlzIGFscGhhLWxldmVsIGFuZCBpcyBvbmx5IGhvbm9yZWQgYnkgc2VydmVycyB0aGF0IGVuYWJsZSB0aGVcbiAgICogYFRUTEFmdGVyRmluaXNoZWRgIGZlYXR1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgdGhpcyBmaWVsZCBpcyB1bnNldCwgdGhlIEpvYiB3b24ndCBiZSBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQuXG4gICAqL1xuICByZWFkb25seSB0dGxBZnRlckZpbmlzaGVkPzogRHVyYXRpb247XG5cbn1cblxuLyoqXG4gKiBBIEpvYiBjcmVhdGVzIG9uZSBvciBtb3JlIFBvZHMgYW5kIGVuc3VyZXMgdGhhdCBhIHNwZWNpZmllZCBudW1iZXIgb2YgdGhlbSBzdWNjZXNzZnVsbHkgdGVybWluYXRlLiBBcyBwb2RzIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSxcbiAqIHRoZSBKb2IgdHJhY2tzIHRoZSBzdWNjZXNzZnVsIGNvbXBsZXRpb25zLiBXaGVuIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzdWNjZXNzZnVsIGNvbXBsZXRpb25zIGlzIHJlYWNoZWQsIHRoZSB0YXNrIChpZSwgSm9iKSBpcyBjb21wbGV0ZS5cbiAqIERlbGV0aW5nIGEgSm9iIHdpbGwgY2xlYW4gdXAgdGhlIFBvZHMgaXQgY3JlYXRlZC4gQSBzaW1wbGUgY2FzZSBpcyB0byBjcmVhdGUgb25lIEpvYiBvYmplY3QgaW4gb3JkZXIgdG8gcmVsaWFibHkgcnVuIG9uZSBQb2QgdG8gY29tcGxldGlvbi5cbiAqIFRoZSBKb2Igb2JqZWN0IHdpbGwgc3RhcnQgYSBuZXcgUG9kIGlmIHRoZSBmaXJzdCBQb2QgZmFpbHMgb3IgaXMgZGVsZXRlZCAoZm9yIGV4YW1wbGUgZHVlIHRvIGEgbm9kZSBoYXJkd2FyZSBmYWlsdXJlIG9yIGEgbm9kZSByZWJvb3QpLlxuICogWW91IGNhbiBhbHNvIHVzZSBhIEpvYiB0byBydW4gbXVsdGlwbGUgUG9kcyBpbiBwYXJhbGxlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEpvYiBleHRlbmRzIHdvcmtsb2FkLldvcmtsb2FkIHtcblxuICAvKipcbiAgICogRHVyYXRpb24gYmVmb3JlIGpvYiBpcyB0ZXJtaW5hdGVkLiBJZiB1bmRlZmluZWQsIHRoZXJlIGlzIG5vIGRlYWRsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZURlYWRsaW5lPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiByZXRyaWVzIGJlZm9yZSBtYXJraW5nIGZhaWxlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBiYWNrb2ZmTGltaXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRUTCBiZWZvcmUgdGhlIGpvYiBpcyBkZWxldGVkIGFmdGVyIGl0IGlzIGZpbmlzaGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHR0bEFmdGVyRmluaXNoZWQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGUgPSAnam9icyc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEpvYlByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHJlc3RhcnRQb2xpY3k6IHBvZC5SZXN0YXJ0UG9saWN5Lk5FVkVSLFxuICAgICAgc2VsZWN0OiBmYWxzZSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hcGlPYmplY3QgPSBuZXcgazhzLkt1YmVKb2IodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbWV0YWRhdGE6IHByb3BzLm1ldGFkYXRhLFxuICAgICAgc3BlYzogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLl90b0t1YmUoKSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWN0aXZlRGVhZGxpbmUgPSBwcm9wcy5hY3RpdmVEZWFkbGluZTtcbiAgICB0aGlzLmJhY2tvZmZMaW1pdCA9IHByb3BzLmJhY2tvZmZMaW1pdDtcbiAgICB0aGlzLnR0bEFmdGVyRmluaXNoZWQgPSBwcm9wcy50dGxBZnRlckZpbmlzaGVkO1xuXG4gICAgaWYgKHRoaXMuaXNvbGF0ZSkge1xuICAgICAgdGhpcy5jb25uZWN0aW9ucy5pc29sYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKTogazhzLkpvYlNwZWMge1xuICAgIHJldHVybiB7XG4gICAgICB0ZW1wbGF0ZToge1xuICAgICAgICBtZXRhZGF0YTogdGhpcy5wb2RNZXRhZGF0YS50b0pzb24oKSxcbiAgICAgICAgc3BlYzogdGhpcy5fdG9Qb2RTcGVjKCksXG4gICAgICB9LFxuICAgICAgYWN0aXZlRGVhZGxpbmVTZWNvbmRzOiB0aGlzLmFjdGl2ZURlYWRsaW5lPy50b1NlY29uZHMoKSxcbiAgICAgIGJhY2tvZmZMaW1pdDogdGhpcy5iYWNrb2ZmTGltaXQsXG4gICAgICB0dGxTZWNvbmRzQWZ0ZXJGaW5pc2hlZDogdGhpcy50dGxBZnRlckZpbmlzaGVkID8gdGhpcy50dGxBZnRlckZpbmlzaGVkLnRvU2Vjb25kcygpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { ApiObject } from 'cdk8s';
|
|
2
|
+
import { Construct, IConstruct } from 'constructs';
|
|
3
|
+
import * as base from './base';
|
|
4
|
+
import * as k8s from './imports/k8s';
|
|
5
|
+
import * as networkpolicy from './network-policy';
|
|
6
|
+
import * as pod from './pod';
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for selecting namespaces.
|
|
9
|
+
*/
|
|
10
|
+
export interface NamespaceSelectorConfig {
|
|
11
|
+
/**
|
|
12
|
+
* A selector to select namespaces by labels.
|
|
13
|
+
*/
|
|
14
|
+
readonly labelSelector?: pod.LabelSelector;
|
|
15
|
+
/**
|
|
16
|
+
* A list of names to select namespaces by names.
|
|
17
|
+
*/
|
|
18
|
+
readonly names?: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Represents an object that can select namespaces.
|
|
22
|
+
*/
|
|
23
|
+
export interface INamespaceSelector extends IConstruct {
|
|
24
|
+
/**
|
|
25
|
+
* Return the configuration of this selector.
|
|
26
|
+
*/
|
|
27
|
+
toNamespaceSelectorConfig(): NamespaceSelectorConfig;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Properties for `Namespace`.
|
|
31
|
+
*/
|
|
32
|
+
export interface NamespaceProps extends base.ResourceProps {
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* In Kubernetes, namespaces provides a mechanism for isolating groups of resources within a single cluster.
|
|
36
|
+
* Names of resources need to be unique within a namespace, but not across namespaces.
|
|
37
|
+
* Namespace-based scoping is applicable only for namespaced objects (e.g. Deployments, Services, etc) and
|
|
38
|
+
* not for cluster-wide objects (e.g. StorageClass, Nodes, PersistentVolumes, etc).
|
|
39
|
+
*/
|
|
40
|
+
export declare class Namespace extends base.Resource implements INamespaceSelector, networkpolicy.INetworkPolicyPeer {
|
|
41
|
+
/**
|
|
42
|
+
* @see https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#automatic-labelling
|
|
43
|
+
*/
|
|
44
|
+
static readonly NAME_LABEL = "kubernetes.io/metadata.name";
|
|
45
|
+
/**
|
|
46
|
+
* @see base.Resource.apiObject
|
|
47
|
+
*/
|
|
48
|
+
protected readonly apiObject: ApiObject;
|
|
49
|
+
readonly resourceType: string;
|
|
50
|
+
private readonly _pods;
|
|
51
|
+
constructor(scope: Construct, id: string, props?: NamespaceProps);
|
|
52
|
+
/**
|
|
53
|
+
* @see INamespaceSelector.toNamespaceSelectorConfig()
|
|
54
|
+
*/
|
|
55
|
+
toNamespaceSelectorConfig(): NamespaceSelectorConfig;
|
|
56
|
+
/**
|
|
57
|
+
* @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
|
|
58
|
+
*/
|
|
59
|
+
toNetworkPolicyPeerConfig(): networkpolicy.NetworkPolicyPeerConfig;
|
|
60
|
+
/**
|
|
61
|
+
* @see INetworkPolicyPeer.toPodSelector()
|
|
62
|
+
*/
|
|
63
|
+
toPodSelector(): pod.IPodSelector | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
_toKube(): k8s.NamespaceSpec;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Options for `Namespaces.select`.
|
|
71
|
+
*/
|
|
72
|
+
export interface NamespacesSelectOptions {
|
|
73
|
+
/**
|
|
74
|
+
* Labels the namespaces must have.
|
|
75
|
+
* This is equivalent to using an 'Is' selector.
|
|
76
|
+
*
|
|
77
|
+
* @default - no strict labels requirements.
|
|
78
|
+
*/
|
|
79
|
+
readonly labels?: {
|
|
80
|
+
[key: string]: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Namespaces must satisfy these selectors.
|
|
84
|
+
* The selectors query labels, just like the `labels` property, but they
|
|
85
|
+
* provide a more advanced matching mechanism.
|
|
86
|
+
*
|
|
87
|
+
* @default - no selector requirements.
|
|
88
|
+
*/
|
|
89
|
+
readonly expressions?: pod.LabelExpression[];
|
|
90
|
+
/**
|
|
91
|
+
* Namespaces names must be one of these.
|
|
92
|
+
*
|
|
93
|
+
* @default - no name requirements.
|
|
94
|
+
*/
|
|
95
|
+
readonly names?: string[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Represents a group of namespaces.
|
|
99
|
+
*/
|
|
100
|
+
export declare class Namespaces extends Construct implements INamespaceSelector, networkpolicy.INetworkPolicyPeer {
|
|
101
|
+
private readonly expressions?;
|
|
102
|
+
private readonly names?;
|
|
103
|
+
private readonly labels?;
|
|
104
|
+
/**
|
|
105
|
+
* Select specific namespaces.
|
|
106
|
+
*/
|
|
107
|
+
static select(scope: Construct, id: string, options: NamespacesSelectOptions): Namespaces;
|
|
108
|
+
/**
|
|
109
|
+
* Select all namespaces.
|
|
110
|
+
*/
|
|
111
|
+
static all(scope: Construct, id: string): Namespaces;
|
|
112
|
+
private readonly _pods;
|
|
113
|
+
constructor(scope: Construct, id: string, expressions?: pod.LabelExpression[] | undefined, names?: string[] | undefined, labels?: {
|
|
114
|
+
[key: string]: string;
|
|
115
|
+
} | undefined);
|
|
116
|
+
/**
|
|
117
|
+
* @see INamespaceSelector.toNamespaceSelectorConfig()
|
|
118
|
+
*/
|
|
119
|
+
toNamespaceSelectorConfig(): NamespaceSelectorConfig;
|
|
120
|
+
/**
|
|
121
|
+
* @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
|
|
122
|
+
*/
|
|
123
|
+
toNetworkPolicyPeerConfig(): networkpolicy.NetworkPolicyPeerConfig;
|
|
124
|
+
/**
|
|
125
|
+
* @see INetworkPolicyPeer.toPodSelector()
|
|
126
|
+
*/
|
|
127
|
+
toPodSelector(): pod.IPodSelector | undefined;
|
|
128
|
+
}
|
package/lib/namespace.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Namespaces = exports.Namespace = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const cdk8s_1 = require("cdk8s");
|
|
7
|
+
const constructs_1 = require("constructs");
|
|
8
|
+
const base = require("./base");
|
|
9
|
+
const k8s = require("./imports/k8s");
|
|
10
|
+
const pod = require("./pod");
|
|
11
|
+
/**
|
|
12
|
+
* In Kubernetes, namespaces provides a mechanism for isolating groups of resources within a single cluster.
|
|
13
|
+
* Names of resources need to be unique within a namespace, but not across namespaces.
|
|
14
|
+
* Namespace-based scoping is applicable only for namespaced objects (e.g. Deployments, Services, etc) and
|
|
15
|
+
* not for cluster-wide objects (e.g. StorageClass, Nodes, PersistentVolumes, etc).
|
|
16
|
+
*/
|
|
17
|
+
class Namespace extends base.Resource {
|
|
18
|
+
constructor(scope, id, props = {}) {
|
|
19
|
+
super(scope, id);
|
|
20
|
+
this.resourceType = 'namespaces';
|
|
21
|
+
this.apiObject = new k8s.KubeNamespace(this, 'Resource', {
|
|
22
|
+
metadata: props.metadata,
|
|
23
|
+
spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
|
|
24
|
+
});
|
|
25
|
+
this._pods = pod.Pods.all(this, 'Pods', {
|
|
26
|
+
namespaces: Namespaces.select(this, 'Namespaces', { names: [this.name] }),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @see INamespaceSelector.toNamespaceSelectorConfig()
|
|
31
|
+
*/
|
|
32
|
+
toNamespaceSelectorConfig() {
|
|
33
|
+
return { names: [this.name] };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
|
|
37
|
+
*/
|
|
38
|
+
toNetworkPolicyPeerConfig() {
|
|
39
|
+
return this._pods.toNetworkPolicyPeerConfig();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @see INetworkPolicyPeer.toPodSelector()
|
|
43
|
+
*/
|
|
44
|
+
toPodSelector() {
|
|
45
|
+
return this._pods.toPodSelector();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
_toKube() {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.Namespace = Namespace;
|
|
55
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
56
|
+
Namespace[_a] = { fqn: "cdk8s-plus-31.Namespace", version: "2.0.0" };
|
|
57
|
+
/**
|
|
58
|
+
* @see https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#automatic-labelling
|
|
59
|
+
*/
|
|
60
|
+
Namespace.NAME_LABEL = 'kubernetes.io/metadata.name';
|
|
61
|
+
/**
|
|
62
|
+
* Represents a group of namespaces.
|
|
63
|
+
*/
|
|
64
|
+
class Namespaces extends constructs_1.Construct {
|
|
65
|
+
constructor(scope, id, expressions, names, labels) {
|
|
66
|
+
super(scope, id);
|
|
67
|
+
this.expressions = expressions;
|
|
68
|
+
this.names = names;
|
|
69
|
+
this.labels = labels;
|
|
70
|
+
this._pods = pod.Pods.all(this, 'Pods', { namespaces: this });
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Select specific namespaces.
|
|
74
|
+
*/
|
|
75
|
+
static select(scope, id, options) {
|
|
76
|
+
return new Namespaces(scope, id, options.expressions, options.names, options.labels);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Select all namespaces.
|
|
80
|
+
*/
|
|
81
|
+
static all(scope, id) {
|
|
82
|
+
return Namespaces.select(scope, id, { expressions: [], labels: {} });
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @see INamespaceSelector.toNamespaceSelectorConfig()
|
|
86
|
+
*/
|
|
87
|
+
toNamespaceSelectorConfig() {
|
|
88
|
+
return {
|
|
89
|
+
labelSelector: pod.LabelSelector.of({ expressions: this.expressions, labels: this.labels }),
|
|
90
|
+
names: this.names,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
|
|
95
|
+
*/
|
|
96
|
+
toNetworkPolicyPeerConfig() {
|
|
97
|
+
return this._pods.toNetworkPolicyPeerConfig();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @see INetworkPolicyPeer.toPodSelector()
|
|
101
|
+
*/
|
|
102
|
+
toPodSelector() {
|
|
103
|
+
return this._pods.toPodSelector();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.Namespaces = Namespaces;
|
|
107
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
108
|
+
Namespaces[_b] = { fqn: "cdk8s-plus-31.Namespaces", version: "2.0.0" };
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25hbWVzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUF3QztBQUN4QywyQ0FBbUQ7QUFDbkQsK0JBQStCO0FBQy9CLHFDQUFxQztBQUVyQyw2QkFBNkI7QUFpQzdCOzs7OztHQUtHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFnQjFDLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXdCLEVBQUU7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUxILGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBT2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLElBQUksRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN0QyxVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDMUUsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7QUF4REgsOEJBMERDOzs7QUF4REM7O0dBRUc7QUFDb0Isb0JBQVUsR0FBRyw2QkFBNkIsQ0FBQztBQXNGcEU7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQWtCdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFDckIsV0FBbUMsRUFDbkMsS0FBZ0IsRUFDaEIsTUFBa0M7UUFDbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhBLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQTRCO1FBR25ELElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUF2QkQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWdDO1FBQ2pGLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFVO1FBQzVDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBYUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTztZQUNMLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUU7WUFDNUYsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7QUFqREgsZ0NBbURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0LCBMYXp5IH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBuZXR3b3JrcG9saWN5IGZyb20gJy4vbmV0d29yay1wb2xpY3knO1xuaW1wb3J0ICogYXMgcG9kIGZyb20gJy4vcG9kJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBzZWxlY3RpbmcgbmFtZXNwYWNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYW1lc3BhY2VTZWxlY3RvckNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIEEgc2VsZWN0b3IgdG8gc2VsZWN0IG5hbWVzcGFjZXMgYnkgbGFiZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxTZWxlY3Rvcj86IHBvZC5MYWJlbFNlbGVjdG9yO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbmFtZXMgdG8gc2VsZWN0IG5hbWVzcGFjZXMgYnkgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSBuYW1lcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gb2JqZWN0IHRoYXQgY2FuIHNlbGVjdCBuYW1lc3BhY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOYW1lc3BhY2VTZWxlY3RvciBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoaXMgc2VsZWN0b3IuXG4gICAqL1xuICB0b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKCk6IE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBOYW1lc3BhY2VgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZVByb3BzIGV4dGVuZHMgYmFzZS5SZXNvdXJjZVByb3BzIHt9XG5cbi8qKlxuICogSW4gS3ViZXJuZXRlcywgbmFtZXNwYWNlcyBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgaXNvbGF0aW5nIGdyb3VwcyBvZiByZXNvdXJjZXMgd2l0aGluIGEgc2luZ2xlIGNsdXN0ZXIuXG4gKiBOYW1lcyBvZiByZXNvdXJjZXMgbmVlZCB0byBiZSB1bmlxdWUgd2l0aGluIGEgbmFtZXNwYWNlLCBidXQgbm90IGFjcm9zcyBuYW1lc3BhY2VzLlxuICogTmFtZXNwYWNlLWJhc2VkIHNjb3BpbmcgaXMgYXBwbGljYWJsZSBvbmx5IGZvciBuYW1lc3BhY2VkIG9iamVjdHMgKGUuZy4gRGVwbG95bWVudHMsIFNlcnZpY2VzLCBldGMpIGFuZFxuICogbm90IGZvciBjbHVzdGVyLXdpZGUgb2JqZWN0cyAoZS5nLiBTdG9yYWdlQ2xhc3MsIE5vZGVzLCBQZXJzaXN0ZW50Vm9sdW1lcywgZXRjKS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZSBleHRlbmRzIGJhc2UuUmVzb3VyY2UgaW1wbGVtZW50cyBJTmFtZXNwYWNlU2VsZWN0b3IsIG5ldHdvcmtwb2xpY3kuSU5ldHdvcmtQb2xpY3lQZWVyIHtcblxuICAvKipcbiAgICogQHNlZSBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9vdmVydmlldy93b3JraW5nLXdpdGgtb2JqZWN0cy9uYW1lc3BhY2VzLyNhdXRvbWF0aWMtbGFiZWxsaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5BTUVfTEFCRUwgPSAna3ViZXJuZXRlcy5pby9tZXRhZGF0YS5uYW1lJztcblxuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZyA9ICduYW1lc3BhY2VzJztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9wb2RzOiBwb2QuUG9kcztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5hbWVzcGFjZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hcGlPYmplY3QgPSBuZXcgazhzLkt1YmVOYW1lc3BhY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbWV0YWRhdGE6IHByb3BzLm1ldGFkYXRhLFxuICAgICAgc3BlYzogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLl90b0t1YmUoKSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuX3BvZHMgPSBwb2QuUG9kcy5hbGwodGhpcywgJ1BvZHMnLCB7XG4gICAgICBuYW1lc3BhY2VzOiBOYW1lc3BhY2VzLnNlbGVjdCh0aGlzLCAnTmFtZXNwYWNlcycsIHsgbmFtZXM6IFt0aGlzLm5hbWVdIH0pLFxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmFtZXNwYWNlU2VsZWN0b3IudG9OYW1lc3BhY2VTZWxlY3RvckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OYW1lc3BhY2VTZWxlY3RvckNvbmZpZygpOiBOYW1lc3BhY2VTZWxlY3RvckNvbmZpZyB7XG4gICAgcmV0dXJuIHsgbmFtZXM6IFt0aGlzLm5hbWVdIH07XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpOiBuZXR3b3JrcG9saWN5Lk5ldHdvcmtQb2xpY3lQZWVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk7XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9Qb2RTZWxlY3RvcigpXG4gICAqL1xuICBwdWJsaWMgdG9Qb2RTZWxlY3RvcigpOiBwb2QuSVBvZFNlbGVjdG9yIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b1BvZFNlbGVjdG9yKCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvS3ViZSgpOiBrOHMuTmFtZXNwYWNlU3BlYyB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgTmFtZXNwYWNlcy5zZWxlY3RgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZXNTZWxlY3RPcHRpb25zIHtcblxuICAvKipcbiAgICogTGFiZWxzIHRoZSBuYW1lc3BhY2VzIG11c3QgaGF2ZS5cbiAgICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIHVzaW5nIGFuICdJcycgc2VsZWN0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3RyaWN0IGxhYmVscyByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBsYWJlbHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBOYW1lc3BhY2VzIG11c3Qgc2F0aXNmeSB0aGVzZSBzZWxlY3RvcnMuXG4gICAqIFRoZSBzZWxlY3RvcnMgcXVlcnkgbGFiZWxzLCBqdXN0IGxpa2UgdGhlIGBsYWJlbHNgIHByb3BlcnR5LCBidXQgdGhleVxuICAgKiBwcm92aWRlIGEgbW9yZSBhZHZhbmNlZCBtYXRjaGluZyBtZWNoYW5pc20uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2VsZWN0b3IgcmVxdWlyZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbnM/OiBwb2QuTGFiZWxFeHByZXNzaW9uW107XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZXMgbmFtZXMgbXVzdCBiZSBvbmUgb2YgdGhlc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZSByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBuYW1lcz86IHN0cmluZ1tdO1xuXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdyb3VwIG9mIG5hbWVzcGFjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSU5hbWVzcGFjZVNlbGVjdG9yLCBuZXR3b3JrcG9saWN5LklOZXR3b3JrUG9saWN5UGVlciB7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBzcGVjaWZpYyBuYW1lc3BhY2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZWxlY3Qoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogTmFtZXNwYWNlc1NlbGVjdE9wdGlvbnMpOiBOYW1lc3BhY2VzIHtcbiAgICByZXR1cm4gbmV3IE5hbWVzcGFjZXMoc2NvcGUsIGlkLCBvcHRpb25zLmV4cHJlc3Npb25zLCBvcHRpb25zLm5hbWVzLCBvcHRpb25zLmxhYmVscyk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IGFsbCBuYW1lc3BhY2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbGwoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyk6IE5hbWVzcGFjZXMge1xuICAgIHJldHVybiBOYW1lc3BhY2VzLnNlbGVjdChzY29wZSwgaWQsIHsgZXhwcmVzc2lvbnM6IFtdLCBsYWJlbHM6IHt9IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcG9kczogcG9kLlBvZHM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4cHJlc3Npb25zPzogcG9kLkxhYmVsRXhwcmVzc2lvbltdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZXM/OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxhYmVscz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5fcG9kcyA9IHBvZC5Qb2RzLmFsbCh0aGlzLCAnUG9kcycsIHsgbmFtZXNwYWNlczogdGhpcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOYW1lc3BhY2VTZWxlY3Rvci50b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKClcbiAgICovXG4gIHB1YmxpYyB0b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKCk6IE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWxTZWxlY3RvcjogcG9kLkxhYmVsU2VsZWN0b3Iub2YoeyBleHByZXNzaW9uczogdGhpcy5leHByZXNzaW9ucywgbGFiZWxzOiB0aGlzLmxhYmVscyB9ICksXG4gICAgICBuYW1lczogdGhpcy5uYW1lcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKVxuICAgKi9cbiAgcHVibGljIHRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTogbmV0d29ya3BvbGljeS5OZXR3b3JrUG9saWN5UGVlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BvZHMudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvUG9kU2VsZWN0b3IoKVxuICAgKi9cbiAgcHVibGljIHRvUG9kU2VsZWN0b3IoKTogcG9kLklQb2RTZWxlY3RvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BvZHMudG9Qb2RTZWxlY3RvcigpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { ApiObject } from 'cdk8s';
|
|
2
|
+
import { Construct, IConstruct } from 'constructs';
|
|
3
|
+
import * as base from './base';
|
|
4
|
+
import * as k8s from './imports/k8s';
|
|
5
|
+
import * as pod from './pod';
|
|
6
|
+
/**
|
|
7
|
+
* Properties for `NetworkPolicyPort`.
|
|
8
|
+
*/
|
|
9
|
+
export interface NetworkPolicyPortProps {
|
|
10
|
+
/**
|
|
11
|
+
* Specific port number.
|
|
12
|
+
*
|
|
13
|
+
* @default - all ports are allowed.
|
|
14
|
+
*/
|
|
15
|
+
readonly port?: number;
|
|
16
|
+
/**
|
|
17
|
+
* End port (relative to `port`). Only applies if `port` is defined.
|
|
18
|
+
* Use this to specify a port range, rather that a specific one.
|
|
19
|
+
*
|
|
20
|
+
* @default - not a port range.
|
|
21
|
+
*/
|
|
22
|
+
readonly endPort?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Protocol.
|
|
25
|
+
*
|
|
26
|
+
* @default NetworkProtocol.TCP
|
|
27
|
+
*/
|
|
28
|
+
readonly protocol?: NetworkProtocol;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Describes a port to allow traffic on.
|
|
32
|
+
*/
|
|
33
|
+
export declare class NetworkPolicyPort {
|
|
34
|
+
private readonly port?;
|
|
35
|
+
private readonly endPort?;
|
|
36
|
+
private readonly protocol?;
|
|
37
|
+
/**
|
|
38
|
+
* Distinct TCP ports
|
|
39
|
+
*/
|
|
40
|
+
static tcp(port: number): NetworkPolicyPort;
|
|
41
|
+
/**
|
|
42
|
+
* A TCP port range
|
|
43
|
+
*/
|
|
44
|
+
static tcpRange(startPort: number, endPort: number): NetworkPolicyPort;
|
|
45
|
+
/**
|
|
46
|
+
* Any TCP traffic
|
|
47
|
+
*/
|
|
48
|
+
static allTcp(): NetworkPolicyPort;
|
|
49
|
+
/**
|
|
50
|
+
* Distinct UDP ports
|
|
51
|
+
*/
|
|
52
|
+
static udp(port: number): NetworkPolicyPort;
|
|
53
|
+
/**
|
|
54
|
+
* A UDP port range
|
|
55
|
+
*/
|
|
56
|
+
static udpRange(startPort: number, endPort: number): NetworkPolicyPort;
|
|
57
|
+
/**
|
|
58
|
+
* Any UDP traffic
|
|
59
|
+
*/
|
|
60
|
+
static allUdp(): NetworkPolicyPort;
|
|
61
|
+
/**
|
|
62
|
+
* Custom port configuration.
|
|
63
|
+
*/
|
|
64
|
+
static of(props: NetworkPolicyPortProps): NetworkPolicyPort;
|
|
65
|
+
private constructor();
|
|
66
|
+
/**
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
_toKube(): k8s.NetworkPolicyPort;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Configuration for network peers.
|
|
73
|
+
* A peer can either by an ip block, or a selection of pods, not both.
|
|
74
|
+
*/
|
|
75
|
+
export interface NetworkPolicyPeerConfig {
|
|
76
|
+
/**
|
|
77
|
+
* The ip block this peer represents.
|
|
78
|
+
*/
|
|
79
|
+
readonly ipBlock?: NetworkPolicyIpBlock;
|
|
80
|
+
/**
|
|
81
|
+
* The pod selector this peer represents.
|
|
82
|
+
*/
|
|
83
|
+
readonly podSelector?: pod.PodSelectorConfig;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Describes a peer to allow traffic to/from.
|
|
87
|
+
*/
|
|
88
|
+
export interface INetworkPolicyPeer extends IConstruct {
|
|
89
|
+
/**
|
|
90
|
+
* Return the configuration of this peer.
|
|
91
|
+
*/
|
|
92
|
+
toNetworkPolicyPeerConfig(): NetworkPolicyPeerConfig;
|
|
93
|
+
/**
|
|
94
|
+
* Convert the peer into a pod selector, if possible.
|
|
95
|
+
*/
|
|
96
|
+
toPodSelector(): pod.IPodSelector | undefined;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Describes a rule allowing traffic from / to pods matched by a network policy selector.
|
|
100
|
+
*/
|
|
101
|
+
export interface NetworkPolicyRule {
|
|
102
|
+
/**
|
|
103
|
+
* The ports of the rule.
|
|
104
|
+
*
|
|
105
|
+
* @default - traffic is allowed on all ports.
|
|
106
|
+
*/
|
|
107
|
+
readonly ports?: NetworkPolicyPort[];
|
|
108
|
+
/**
|
|
109
|
+
* Peer this rule interacts with.
|
|
110
|
+
*/
|
|
111
|
+
readonly peer: INetworkPolicyPeer;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Describes a particular CIDR (Ex. "192.168.1.1/24","2001:db9::/64") that is
|
|
115
|
+
* allowed to the pods matched by a network policy selector.
|
|
116
|
+
* The except entry describes CIDRs that should not be included within this rule.
|
|
117
|
+
*/
|
|
118
|
+
export declare class NetworkPolicyIpBlock extends Construct implements INetworkPolicyPeer {
|
|
119
|
+
/**
|
|
120
|
+
* A string representing the IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64".
|
|
121
|
+
*/
|
|
122
|
+
readonly cidr: string;
|
|
123
|
+
/**
|
|
124
|
+
* A slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64".
|
|
125
|
+
* Except values will be rejected if they are outside the CIDR range.
|
|
126
|
+
*/
|
|
127
|
+
readonly except?: string[] | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* Create an IPv4 peer from a CIDR
|
|
130
|
+
*/
|
|
131
|
+
static ipv4(scope: Construct, id: string, cidrIp: string, except?: string[]): NetworkPolicyIpBlock;
|
|
132
|
+
/**
|
|
133
|
+
* Any IPv4 address
|
|
134
|
+
*/
|
|
135
|
+
static anyIpv4(scope: Construct, id: string): NetworkPolicyIpBlock;
|
|
136
|
+
/**
|
|
137
|
+
* Create an IPv6 peer from a CIDR
|
|
138
|
+
*/
|
|
139
|
+
static ipv6(scope: Construct, id: string, cidrIp: string, except?: string[]): NetworkPolicyIpBlock;
|
|
140
|
+
/**
|
|
141
|
+
* Any IPv6 address
|
|
142
|
+
*/
|
|
143
|
+
static anyIpv6(scope: Construct, id: string): NetworkPolicyIpBlock;
|
|
144
|
+
private constructor();
|
|
145
|
+
/**
|
|
146
|
+
* @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
|
|
147
|
+
*/
|
|
148
|
+
toNetworkPolicyPeerConfig(): NetworkPolicyPeerConfig;
|
|
149
|
+
/**
|
|
150
|
+
* @see INetworkPolicyPeer.toPodSelector()
|
|
151
|
+
*/
|
|
152
|
+
toPodSelector(): pod.IPodSelector | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* @internal
|
|
155
|
+
*/
|
|
156
|
+
_toKube(): k8s.IpBlock;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Network protocols.
|
|
160
|
+
*/
|
|
161
|
+
export declare enum NetworkProtocol {
|
|
162
|
+
/**
|
|
163
|
+
* TCP.
|
|
164
|
+
*/
|
|
165
|
+
TCP = "TCP",
|
|
166
|
+
/**
|
|
167
|
+
* UDP.
|
|
168
|
+
*/
|
|
169
|
+
UDP = "UDP",
|
|
170
|
+
/**
|
|
171
|
+
* SCTP.
|
|
172
|
+
*/
|
|
173
|
+
SCTP = "SCTP"
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Default behaviors of network traffic in policies.
|
|
177
|
+
*/
|
|
178
|
+
export declare enum NetworkPolicyTrafficDefault {
|
|
179
|
+
/**
|
|
180
|
+
* The policy denies all traffic.
|
|
181
|
+
* Since rules are additive, additional rules or policies can allow
|
|
182
|
+
* specific traffic.
|
|
183
|
+
*/
|
|
184
|
+
DENY = "DENY",
|
|
185
|
+
/**
|
|
186
|
+
* The policy allows all traffic (either ingress or egress).
|
|
187
|
+
* Since rules are additive, no additional rule or policies can
|
|
188
|
+
* subsequently deny the traffic.
|
|
189
|
+
*/
|
|
190
|
+
ALLOW = "ALLOW"
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Describes how the network policy should configure egress / ingress traffic.
|
|
194
|
+
*/
|
|
195
|
+
export interface NetworkPolicyTraffic {
|
|
196
|
+
/**
|
|
197
|
+
* Specifies the default behavior of the policy when
|
|
198
|
+
* no rules are defined.
|
|
199
|
+
*
|
|
200
|
+
* @default - unset, the policy does not change the behavior.
|
|
201
|
+
*/
|
|
202
|
+
readonly default?: NetworkPolicyTrafficDefault;
|
|
203
|
+
/**
|
|
204
|
+
* List of rules to be applied to the selected pods.
|
|
205
|
+
* If empty, the behavior of the policy is dictated by the `default` property.
|
|
206
|
+
*
|
|
207
|
+
* @default - no rules
|
|
208
|
+
*/
|
|
209
|
+
readonly rules?: NetworkPolicyRule[];
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Options for `NetworkPolicy.addEgressRule`.
|
|
213
|
+
*/
|
|
214
|
+
export interface NetworkPolicyAddEgressRuleOptions {
|
|
215
|
+
/**
|
|
216
|
+
* Ports the rule should allow outgoing traffic to.
|
|
217
|
+
*
|
|
218
|
+
* @default - If the peer is a managed pod, take its ports. Otherwise, all ports are allowed.
|
|
219
|
+
*/
|
|
220
|
+
readonly ports?: NetworkPolicyPort[];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Properties for `NetworkPolicy`.
|
|
224
|
+
*/
|
|
225
|
+
export interface NetworkPolicyProps extends base.ResourceProps {
|
|
226
|
+
/**
|
|
227
|
+
* Which pods does this policy object applies to.
|
|
228
|
+
*
|
|
229
|
+
* This can either be a single pod / workload, or a grouping of pods selected
|
|
230
|
+
* via the `Pods.select` function. Rules is applied to any pods selected by this property.
|
|
231
|
+
* Multiple network policies can select the same set of pods.
|
|
232
|
+
* In this case, the rules for each are combined additively.
|
|
233
|
+
*
|
|
234
|
+
* Note that
|
|
235
|
+
*
|
|
236
|
+
* @default - will select all pods in the namespace of the policy.
|
|
237
|
+
*/
|
|
238
|
+
readonly selector?: pod.IPodSelector;
|
|
239
|
+
/**
|
|
240
|
+
* Egress traffic configuration.
|
|
241
|
+
*
|
|
242
|
+
* @default - the policy doesn't change egress behavior of the pods it selects.
|
|
243
|
+
*/
|
|
244
|
+
readonly egress?: NetworkPolicyTraffic;
|
|
245
|
+
/**
|
|
246
|
+
* Ingress traffic configuration.
|
|
247
|
+
*
|
|
248
|
+
* @default - the policy doesn't change ingress behavior of the pods it selects.
|
|
249
|
+
*/
|
|
250
|
+
readonly ingress?: NetworkPolicyTraffic;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Control traffic flow at the IP address or port level (OSI layer 3 or 4),
|
|
254
|
+
* network policies are an application-centric construct which allow you
|
|
255
|
+
* to specify how a pod is allowed to communicate with various network peers.
|
|
256
|
+
*
|
|
257
|
+
* - Outgoing traffic is allowed if there are no network policies selecting
|
|
258
|
+
* the pod (and cluster policy otherwise allows the traffic),
|
|
259
|
+
* OR if the traffic matches at least one egress rule across all of the
|
|
260
|
+
* network policies that select the pod.
|
|
261
|
+
*
|
|
262
|
+
* - Incoming traffic is allowed to a pod if there are no network policies
|
|
263
|
+
* selecting the pod (and cluster policy otherwise allows the traffic),
|
|
264
|
+
* OR if the traffic source is the pod's local node,
|
|
265
|
+
* OR if the traffic matches at least one ingress rule across all of
|
|
266
|
+
* the network policies that select the pod.
|
|
267
|
+
*
|
|
268
|
+
* Network policies do not conflict; they are additive.
|
|
269
|
+
* If any policy or policies apply to a given pod for a given
|
|
270
|
+
* direction, the connections allowed in that direction from
|
|
271
|
+
* that pod is the union of what the applicable policies allow.
|
|
272
|
+
* Thus, order of evaluation does not affect the policy result.
|
|
273
|
+
*
|
|
274
|
+
* For a connection from a source pod to a destination pod to be allowed,
|
|
275
|
+
* both the egress policy on the source pod and the ingress policy on the
|
|
276
|
+
* destination pod need to allow the connection.
|
|
277
|
+
* If either side does not allow the connection, it will not happen.
|
|
278
|
+
*
|
|
279
|
+
* @see https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource
|
|
280
|
+
*/
|
|
281
|
+
export declare class NetworkPolicy extends base.Resource {
|
|
282
|
+
/**
|
|
283
|
+
* @see base.Resource.apiObject
|
|
284
|
+
*/
|
|
285
|
+
protected readonly apiObject: ApiObject;
|
|
286
|
+
readonly resourceType: string;
|
|
287
|
+
private readonly _podSelectorConfig;
|
|
288
|
+
private readonly _egressRules;
|
|
289
|
+
private readonly _ingressRules;
|
|
290
|
+
private readonly _policyTypes;
|
|
291
|
+
constructor(scope: Construct, id: string, props?: NetworkPolicyProps);
|
|
292
|
+
/**
|
|
293
|
+
* Allow outgoing traffic to the peer.
|
|
294
|
+
*
|
|
295
|
+
* If ports are not passed, traffic will be allowed on all ports.
|
|
296
|
+
*/
|
|
297
|
+
addEgressRule(peer: INetworkPolicyPeer, ports?: NetworkPolicyPort[]): void;
|
|
298
|
+
/**
|
|
299
|
+
* Allow incoming traffic from the peer.
|
|
300
|
+
*
|
|
301
|
+
* If ports are not passed, traffic will be allowed on all ports.
|
|
302
|
+
*/
|
|
303
|
+
addIngressRule(peer: INetworkPolicyPeer, ports?: NetworkPolicyPort[]): void;
|
|
304
|
+
private createNetworkPolicyPeers;
|
|
305
|
+
private configureDefaultBehavior;
|
|
306
|
+
/**
|
|
307
|
+
* @internal
|
|
308
|
+
*/
|
|
309
|
+
_toKube(): k8s.NetworkPolicySpec;
|
|
310
|
+
}
|
|
311
|
+
export declare function validatePeerConfig(peerConfig: NetworkPolicyPeerConfig): void;
|