UNPKG

cdktf-crd

Version:
289 lines (288 loc) 17.2 kB
import { Construct } from "constructs"; import { Manifest, type ManifestConfig } from "@cdktn/provider-kubernetes/lib/manifest"; export declare class NetworkingGkeIoGCPWasmPluginV1 extends Manifest { constructor(scope: Construct, id: string, config: NetworkingGkeIoGCPWasmPluginV1Config); } export interface NetworkingGkeIoGCPWasmPluginV1Config extends ManifestConfig { manifest: { apiVersion: "networking.gke.io/v1"; kind: "GCPWasmPlugin"; metadata: { annotations?: { [key: string]: string; }; labels?: { [key: string]: string; }; name: string; namespace?: string; }; /** @description Spec defines the desired state of GCPWasmPlugin. */ spec: { /** @description KmsKeyName is the name of the KMS key that will be used to encrypt the GCPWasmPlugin. */ kmsKeyName?: string; /** @description LoggingConfig contains configuration for logging. */ logConfig?: { /** * @description Enabled specifies whether to enable logging for activity by this plugin. * If not specified, defaults to false, which means Cloud Logging is disabled by default. */ enabled: boolean; /** * @description MinLogLevel specifies the lowest level of logs that are exported to Cloud Logging. * This setting relates to the logs generated by using logging statements in your Wasm code. * * This field is can be set only if logging is enabled for the plugin. * * If the field is not provided when logging is enabled, it is set to * `INFO` by default. */ minLogLevel?: string; /** * Format: int32 * @description SampleRate configures the sampling rate of activity logs. * This field can only be specified if logging is enabled for the wasm plugin. * The value of the field must be in range [0, 1e6]. This is * converted to a floating point value in the range [0, 1] by dividing by 1e6 * for use with the GCE API and indicates a fraction of log messages is stored. * By default all requests will be logged if logging is enabled. */ sampleRate?: number; }; /** * @description Versions contains all serving versions of this `GCPWasmPlugin`. * The list must contain exactly one version with a non zero weight. * All other versions must have a weight of 0. */ versions: { /** @description Description is a description of the version. */ description?: string; /** @description ImageURI is the image containing the GCPWasmPlugin, stored in the Artifact Registry. */ image: string; /** @description Name is the name of the version. The name must be unique within the GCPWasmPlugin. */ name: string; /** * @description PluginConfigURI is the URI of the plugin configuration stored in the Artifact Registry. * The configuration is provided to the plugin at runtime through * the `ON_CONFIGURE` callback. The container image must contain * only a single file with the name `plugin.config`. */ pluginConfigURI?: string; /** * Format: int32 * @description Weight is the weight of the WasmPluginVersion. * The weight must be in the range [0, 1e6]. */ weight: number; }[]; }; /** @description Status defines the current state of GCPWasmPlugin. */ status?: { /** * @description Ancestors is a list of ancestor resources (usually Gateways) that are * associated with the policy, and the status of the policy with respect to * each ancestor. When this policy attaches to a parent, the controller that * manages the parent and the ancestors MUST add an entry to this list when * the controller first sees the policy and SHOULD update the entry as * appropriate when the relevant ancestor is modified. * * Note that choosing the relevant ancestor is left to the Policy designers; * an important part of Policy design is designing the right object level at * which to namespace this status. * * Note also that implementations MUST ONLY populate ancestor status for * the Ancestor resources they are responsible for. Implementations MUST * use the ControllerName field to uniquely identify the entries in this list * that they are responsible for. * * Note that to achieve this, the list of PolicyAncestorStatus structs * MUST be treated as a map with a composite key, made up of the AncestorRef * and ControllerName fields combined. * * A maximum of 16 ancestors will be represented in this list. An empty list * means the Policy is not relevant for any ancestors. * * If this slice is full, implementations MUST NOT add further entries. * Instead they MUST consider the policy unimplementable and signal that * on any related resources such as the ancestor that would be referenced * here. For example, if this list was full on BackendTLSPolicy, no * additional Gateways would be able to reference the Service targeted by * the BackendTLSPolicy. */ ancestors: { /** * @description AncestorRef corresponds with a ParentRef in the spec that this * PolicyAncestorStatus struct describes the status of. */ ancestorRef: { /** * @description Group is the group of the referent. * When unspecified, "gateway.networking.k8s.io" is inferred. * To set the core API group (such as for a "Service" kind referent), * Group must be explicitly set to "" (empty string). * * Support: Core * @default gateway.networking.k8s.io */ group: string; /** * @description Kind is kind of the referent. * * There are two kinds of parent resources with "Core" support: * * * Gateway (Gateway conformance profile) * * Service (Mesh conformance profile, ClusterIP Services only) * * Support for other resources is Implementation-Specific. * @default Gateway */ kind: string; /** * @description Name is the name of the referent. * * Support: Core */ name: string; /** * @description Namespace is the namespace of the referent. When unspecified, this refers * to the local namespace of the Route. * * Note that there are specific rules for ParentRefs which cross namespace * boundaries. Cross-namespace references are only valid if they are explicitly * allowed by something in the namespace they are referring to. For example: * Gateway has the AllowedRoutes field, and ReferenceGrant provides a * generic way to enable any other kind of cross-namespace reference. * * <gateway:experimental:description> * ParentRefs from a Route to a Service in the same namespace are "producer" * routes, which apply default routing rules to inbound connections from * any namespace to the Service. * * ParentRefs from a Route to a Service in a different namespace are * "consumer" routes, and these routing rules are only applied to outbound * connections originating from the same namespace as the Route, for which * the intended destination of the connections are a Service targeted as a * ParentRef of the Route. * </gateway:experimental:description> * * Support: Core */ namespace?: string; /** * Format: int32 * @description Port is the network port this Route targets. It can be interpreted * differently based on the type of parent resource. * * When the parent resource is a Gateway, this targets all listeners * listening on the specified port that also support this kind of Route(and * select this Route). It's not recommended to set `Port` unless the * networking behaviors specified in a Route must apply to a specific port * as opposed to a listener(s) whose port(s) may be changed. When both Port * and SectionName are specified, the name and port of the selected listener * must match both specified values. * * <gateway:experimental:description> * When the parent resource is a Service, this targets a specific port in the * Service spec. When both Port (experimental) and SectionName are specified, * the name and port of the selected port must match both specified values. * </gateway:experimental:description> * * Implementations MAY choose to support other parent resources. * Implementations supporting other types of parent resources MUST clearly * document how/if Port is interpreted. * * For the purpose of status, an attachment is considered successful as * long as the parent resource accepts it partially. For example, Gateway * listeners can restrict which Routes can attach to them by Route kind, * namespace, or hostname. If 1 of 2 Gateway listeners accept attachment * from the referencing Route, the Route MUST be considered successfully * attached. If no Gateway listeners accept attachment from this Route, * the Route MUST be considered detached from the Gateway. * * Support: Extended */ port?: number; /** * @description SectionName is the name of a section within the target resource. In the * following resources, SectionName is interpreted as the following: * * * Gateway: Listener name. When both Port (experimental) and SectionName * are specified, the name and port of the selected listener must match * both specified values. * * Service: Port name. When both Port (experimental) and SectionName * are specified, the name and port of the selected listener must match * both specified values. * * Implementations MAY choose to support attaching Routes to other resources. * If that is the case, they MUST clearly document how SectionName is * interpreted. * * When unspecified (empty string), this will reference the entire resource. * For the purpose of status, an attachment is considered successful if at * least one section in the parent resource accepts it. For example, Gateway * listeners can restrict which Routes can attach to them by Route kind, * namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from * the referencing Route, the Route MUST be considered successfully * attached. If no Gateway listeners accept attachment from this Route, the * Route MUST be considered detached from the Gateway. * * Support: Core */ sectionName?: string; }; /** @description Conditions describes the status of the Policy with respect to the given Ancestor. */ conditions?: { /** * Format: date-time * @description lastTransitionTime is the last time the condition transitioned from one status to another. * This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. */ lastTransitionTime: string; /** * @description message is a human readable message indicating details about the transition. * This may be an empty string. */ message: string; /** * Format: int64 * @description observedGeneration represents the .metadata.generation that the condition was set based upon. * For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date * with respect to the current state of the instance. */ observedGeneration?: number; /** * @description reason contains a programmatic identifier indicating the reason for the condition's last transition. * Producers of specific condition types may define expected values and meanings for this field, * and whether the values are considered a guaranteed API. * The value should be a CamelCase string. * This field may not be empty. */ reason: string; /** * @description status of the condition, one of True, False, Unknown. * @enum {string} */ status: "True" | "False" | "Unknown"; /** @description type of condition in CamelCase or in foo.example.com/CamelCase. */ type: string; }[]; /** * @description ControllerName is a domain/path string that indicates the name of the * controller that wrote this status. This corresponds with the * controllerName field on GatewayClass. * * Example: "example.net/gateway-controller". * * The format of this field is DOMAIN "/" PATH, where DOMAIN and PATH are * valid Kubernetes names * (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). * * Controllers MUST populate this field when writing status. Controllers should ensure that * entries to status populated with their ControllerName are cleaned up when they are no * longer necessary. */ controllerName: string; }[]; }; }; }