--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: helm.sh/resource-policy: keep operatorframework.io/installed-alongside-63e273da4c200797: openshift-operators/servicemeshoperator3.v3.1.0 creationTimestamp: "2026-03-18T16:53:27Z" generation: 1 labels: app: istio-pilot chart: istio heritage: Tiller olm.managed: "true" operators.coreos.com/servicemeshoperator3.openshift-operators: "" release: istio managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:helm.sh/resource-policy: {} f:operatorframework.io/installed-alongside-63e273da4c200797: {} f:labels: .: {} f:app: {} f:chart: {} f:heritage: {} f:olm.managed: {} f:release: {} f:spec: f:conversion: .: {} f:strategy: {} f:group: {} f:names: f:categories: {} f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2026-03-18T16:53:27Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:categories: {} f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2026-03-18T16:53:27Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/servicemeshoperator3.openshift-operators: {} manager: olm operation: Update time: "2026-03-18T16:53:30Z" name: wasmplugins.extensions.istio.io resourceVersion: "12427" uid: 364a6a18-23b6-4733-a749-9ab4d13a032d spec: conversion: strategy: None group: extensions.istio.io names: categories: - istio-io - extensions-istio-io kind: WasmPlugin listKind: WasmPluginList plural: wasmplugins singular: wasmplugin scope: Namespaced versions: - additionalPrinterColumns: - description: 'CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' jsonPath: .metadata.creationTimestamp name: Age type: date name: v1alpha1 schema: openAPIV3Schema: properties: spec: description: 'Extend the functionality provided by the Istio proxy through WebAssembly filters. See more details at: https://istio.io/docs/reference/config/proxy_extensions/wasm-plugin.html' properties: failStrategy: description: |- Specifies the failure behavior for the plugin due to fatal errors. Valid Options: FAIL_CLOSE, FAIL_OPEN enum: - FAIL_CLOSE - FAIL_OPEN type: string imagePullPolicy: description: |- The pull behaviour to be applied when fetching Wasm module by either OCI image or `http/https`. Valid Options: IfNotPresent, Always enum: - UNSPECIFIED_POLICY - IfNotPresent - Always type: string imagePullSecret: description: Credentials to use for OCI image pulling. maxLength: 253 minLength: 1 type: string match: description: Specifies the criteria to determine which traffic is passed to WasmPlugin. items: properties: mode: description: |- Criteria for selecting traffic by their direction. Valid Options: CLIENT, SERVER, CLIENT_AND_SERVER enum: - UNDEFINED - CLIENT - SERVER - CLIENT_AND_SERVER type: string ports: description: Criteria for selecting traffic by their destination port. items: properties: number: maximum: 65535 minimum: 1 type: integer required: - number type: object type: array x-kubernetes-list-map-keys: - number x-kubernetes-list-type: map type: object type: array phase: description: |- Determines where in the filter chain this `WasmPlugin` is to be injected. Valid Options: AUTHN, AUTHZ, STATS enum: - UNSPECIFIED_PHASE - AUTHN - AUTHZ - STATS type: string pluginConfig: description: The configuration that will be passed on to the plugin. type: object x-kubernetes-preserve-unknown-fields: true pluginName: description: The plugin name to be used in the Envoy configuration (used to be called `rootID`). maxLength: 256 minLength: 1 type: string priority: description: Determines ordering of `WasmPlugins` in the same `phase`. format: int32 nullable: true type: integer selector: description: Criteria used to select the specific set of pods/VMs on which this plugin configuration should be applied. properties: matchLabels: additionalProperties: maxLength: 63 type: string x-kubernetes-validations: - message: wildcard not allowed in label value match rule: '!self.contains("*")' description: One or more labels that indicate a specific set of pods/VMs on which a policy should be applied. maxProperties: 4096 type: object x-kubernetes-validations: - message: wildcard not allowed in label key match rule: self.all(key, !key.contains("*")) - message: key must not be empty rule: self.all(key, key.size() != 0) type: object sha256: description: SHA256 checksum that will be used to verify Wasm module or OCI container. pattern: (^$|^[a-f0-9]{64}$) type: string targetRef: properties: group: description: group is the group of the target resource. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: description: kind is kind of the target resource. maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: description: name is the name of the target resource. maxLength: 253 minLength: 1 type: string namespace: description: namespace is the namespace of the referent. type: string x-kubernetes-validations: - message: cross namespace referencing is not currently supported rule: self.size() == 0 required: - kind - name type: object targetRefs: description: Optional. items: properties: group: description: group is the group of the target resource. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: description: kind is kind of the target resource. maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: description: name is the name of the target resource. maxLength: 253 minLength: 1 type: string namespace: description: namespace is the namespace of the referent. type: string x-kubernetes-validations: - message: cross namespace referencing is not currently supported rule: self.size() == 0 required: - kind - name type: object maxItems: 16 type: array type: description: |- Specifies the type of Wasm Extension to be used. Valid Options: HTTP, NETWORK enum: - UNSPECIFIED_PLUGIN_TYPE - HTTP - NETWORK type: string url: description: URL of a Wasm module or OCI container. minLength: 1 type: string x-kubernetes-validations: - message: url must have schema one of [http, https, file, oci] rule: |- isURL(self) ? (url(self).getScheme() in ["", "http", "https", "oci", "file"]) : (isURL("http://" + self) && url("http://" + self).getScheme() in ["", "http", "https", "oci", "file"]) verificationKey: type: string vmConfig: description: Configuration for a Wasm VM. properties: env: description: Specifies environment variables to be injected to this VM. items: properties: name: description: Name of the environment variable. maxLength: 256 minLength: 1 type: string value: description: Value for the environment variable. maxLength: 2048 type: string valueFrom: description: |- Source for the environment variable's value. Valid Options: INLINE, HOST enum: - INLINE - HOST type: string required: - name type: object x-kubernetes-validations: - message: value may only be set when valueFrom is INLINE rule: '(has(self.valueFrom) ? self.valueFrom : "") != "HOST" || !has(self.value)' maxItems: 256 type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map type: object required: - url type: object x-kubernetes-validations: - message: only one of targetRefs or selector can be set rule: '(has(self.selector) ? 1 : 0) + (has(self.targetRef) ? 1 : 0) + (has(self.targetRefs) ? 1 : 0) <= 1' status: properties: conditions: description: Current service state of the resource. items: properties: lastProbeTime: description: Last time we probed the condition. format: date-time type: string lastTransitionTime: description: Last time the condition transitioned from one status to another. format: date-time type: string message: description: Human-readable message indicating details about last transition. type: string observedGeneration: anyOf: - type: integer - type: string description: Resource Generation to which the Condition refers. x-kubernetes-int-or-string: true reason: description: Unique, one-word, CamelCase reason for the condition's last transition. type: string status: description: Status is the status of the condition. type: string type: description: Type is the type of the condition. type: string type: object type: array observedGeneration: anyOf: - type: integer - type: string x-kubernetes-int-or-string: true validationMessages: description: Includes any errors or warnings detected by Istio's analyzers. items: properties: documentationUrl: description: A url pointing to the Istio documentation for this specific error type. type: string level: description: |- Represents how severe a message is. Valid Options: UNKNOWN, ERROR, WARNING, INFO enum: - UNKNOWN - ERROR - WARNING - INFO type: string type: properties: code: description: A 7 character code matching `^IST[0-9]{4}$` intended to uniquely identify the message type. type: string name: description: A human-readable name for the message type. type: string type: object type: object type: array type: object x-kubernetes-preserve-unknown-fields: true required: - spec type: object served: true storage: true subresources: status: {} status: acceptedNames: categories: - istio-io - extensions-istio-io kind: WasmPlugin listKind: WasmPluginList plural: wasmplugins singular: wasmplugin conditions: - lastTransitionTime: "2026-03-18T16:53:27Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-03-18T16:53:27Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1alpha1