import { Construct } from 'constructs'; /** * Configuration for the generated Kubernetes Service spec. * * Curated fields cover the common cases; use `overrides` as an escape hatch * for any other `ServiceSpec` field. `overrides` has the highest precedence and * can override every field, including the construct-managed `ports`/`selector` * (at your own risk). */ export interface PloneServiceSpec { /** * Service type, e.g. ClusterIP | NodePort | LoadBalancer | ExternalName. * @default - ClusterIP (Kubernetes default) */ readonly type?: string; /** * Traffic distribution preference, e.g. 'PreferClose' for topology-aware routing. * @default - none */ readonly trafficDistribution?: string; /** * Session affinity, 'ClientIP' | 'None'. * @default - None (Kubernetes default) */ readonly sessionAffinity?: string; /** * External traffic policy, 'Cluster' | 'Local'. * @default - Cluster (Kubernetes default) */ readonly externalTrafficPolicy?: string; /** * Internal traffic policy, 'Cluster' | 'Local'. * @default - Cluster (Kubernetes default) */ readonly internalTrafficPolicy?: string; /** * Publish not-ready addresses (e.g. for headless services with StatefulSets). * @default - false */ readonly publishNotReadyAddresses?: boolean; /** * Load balancer implementation class. * @default - none */ readonly loadBalancerClass?: string; /** * Source IP ranges allowed to access a LoadBalancer service. * @default - none */ readonly loadBalancerSourceRanges?: string[]; /** * Annotations to add to the Service metadata. * @default - none */ readonly annotations?: { [name: string]: string; }; /** * Extra labels to add to the Service metadata. * @default - none */ readonly labels?: { [name: string]: string; }; /** * Raw ServiceSpec overrides as a free-form map (e.g. `{ ipFamilyPolicy: * 'PreferDualStack' }`). Highest precedence — merged on top of all curated * fields and the construct-managed base. Use for any ServiceSpec field not * covered above. Keys and values are passed through to the Service spec * verbatim and are not validated by this construct. * @default - none */ readonly overrides?: { [key: string]: any; }; } export interface PloneServiceOptions { /** * targetPort number. */ readonly targetPort: number; /** * Selector label. */ readonly selectorLabel: { [name: string]: string; }; /** * Extra labels to associate with resources. * @default - none */ readonly labels?: { [name: string]: string; }; /** * Port name for the service. * @default - 'http' */ readonly portName?: string; /** * Annotations to add to the Service metadata. * Common annotations include: external-dns config, load balancer settings, * service mesh configuration, etc. * @example { 'external-dns.alpha.kubernetes.io/hostname': 'plone.example.com' } * @default - no additional annotations */ readonly annotations?: { [name: string]: string; }; /** * Service spec configuration (type, trafficDistribution, sessionAffinity, * raw overrides, ...). * @default - construct-managed defaults only */ readonly spec?: PloneServiceSpec; } /** * PloneService creates a Kubernetes Service for accessing Plone pods. * * This is an internal construct used by the Plone class. * It creates a ClusterIP service that routes traffic to the backend * or frontend deployment pods. */ export declare class PloneService extends Construct { /** * The name of the created Kubernetes service. * Can be used to reference this service from other resources. */ name: string; /** * The labels applied to this service. */ labels: { [name: string]: string; }; constructor(scope: Construct, id: string, options: PloneServiceOptions); }