65 lines
1.4 KiB
TypeScript
65 lines
1.4 KiB
TypeScript
import { Construct } from "constructs";
|
|
import { Manifest } from "@cdktf/provider-kubernetes/lib/manifest";
|
|
import { KubernetesProvider } from "@cdktf/provider-kubernetes/lib/provider";
|
|
|
|
type IpAllowListMiddlewareOptions = {
|
|
provider: KubernetesProvider;
|
|
namespace: string;
|
|
name: string;
|
|
sourceRanges: string[];
|
|
};
|
|
|
|
export class IpAllowListMiddleware extends Construct {
|
|
constructor(
|
|
scope: Construct,
|
|
id: string,
|
|
opts: IpAllowListMiddlewareOptions,
|
|
) {
|
|
super(scope, id);
|
|
|
|
new Manifest(this, opts.name, {
|
|
provider: opts.provider,
|
|
manifest: {
|
|
apiVersion: "traefik.io/v1alpha1",
|
|
kind: "Middleware",
|
|
metadata: {
|
|
name: opts.name,
|
|
namespace: opts.namespace,
|
|
},
|
|
spec: {
|
|
ipAllowList: {
|
|
sourceRange: opts.sourceRanges,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}
|
|
}
|
|
|
|
export class IpAllowListMiddlewareTCP extends Construct {
|
|
constructor(
|
|
scope: Construct,
|
|
id: string,
|
|
opts: IpAllowListMiddlewareOptions,
|
|
) {
|
|
super(scope, id);
|
|
|
|
new Manifest(this, opts.name, {
|
|
provider: opts.provider,
|
|
manifest: {
|
|
apiVersion: "traefik.io/v1alpha1",
|
|
kind: "MiddlewareTCP",
|
|
metadata: {
|
|
name: opts.name,
|
|
namespace: opts.namespace,
|
|
},
|
|
spec: {
|
|
ipAllowList: {
|
|
sourceRange: opts.sourceRanges,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}
|
|
}
|