solo-io / wasm

Web Assembly tools and SDKs for extending cloud-native infrastructure
Apache License 2.0
305 stars 39 forks source link

Wasm filter with Istio 1.11.3 #278

Open rupipal opened 2 years ago

rupipal commented 2 years ago

Hi, Following the getting-started https://docs.solo.io/web-assembly-hub/latest/tutorial_code/getting_started I'm trying to deploy the wasm filter to Istio 1.11.3 installed on a minikube cluster. I thought if wasm extensions are merged with Envoy, they should work with recent Istio versions. I have the image successfully pushed to a repository in my account on Web Assembly Hub. After successfully logging into the Hub from my shell, this is what I get. Where I'm going wrong?

$ wasme deploy istio webassemblyhub.io/rpsspr/add-header:v0.1 --id=add-header INFO[0000] cache namespace already exists cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache configmap already exists cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache service account already exists cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache role updated cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache rolebinding updated cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache daemonset updated cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" Error: image webassemblyhub.io/rpsspr/add-header:v0.1 not supported by istio version 1.11.3 Usage: wasme deploy istio --id= [--config=] [--root-id=] [--namespaces ] [--name deployment-name] [--patch-context={any|inbound|outbound|gateway}] [flags]

Flags: --cache-custom-command strings custom command to provide to the cache server image --cache-image-pull-policy string image pull policy for the cache server daemonset. see https://kubernetes.io/docs/concepts/containers/images/ (default "IfNotPresent") --cache-name string name of resources for the wasm image cache server (default "wasme-cache") --cache-namespace string namespace of resources for the wasm image cache server (default "wasme") --cache-repo string name of the image repository to use for the cache server daemonset (default "quay.io/solo-io/wasme") --cache-tag string image tag to use for the cache server daemonset (default "0.0.33") --cache-timeout duration the length of time to wait for the server-side filter cache to pull the filter image before giving up with an error. set to 0 to skip the check entirely (note, this may produce a known race condition). (default 1m0s) -h, --help help for istio --ignore-version-check set to disable abi version compatability check. --istio-namespace string the namespace where the Istio control plane is installed (default "istio-system") --istiod-name string deployment name of the istiod (default "istiod") -l, --labels stringToString labels of the deployment or daemonset into which to inject the filter. if not set, will apply to all workloads in the target namespace (default []) -n, --namespace string namespace of the workload(s) to inject the filter. (default "default") --patch-context string patch context of the filter. possible values are any, inbound, outbound, gateway (default "inbound") -t, --workload-type string type of workload into which the filter should be injected. possible values are daemonset, deployment, statefulset (default "deployment")

Global Flags: --config string optional config that will be passed to the filter. accepts an inline string. --id string unique id for naming the deployed filter. this is used for logging as well as removing the filter. when running wasme deploy istio, this name must be a valid Kubernetes resource name. --root-id string optional root ID used to bind the filter at the Envoy level. this value is normally read from the filter image directly. -v, --verbose verbose output

Sodman commented 2 years ago

Hi @rupipal, there's currently an open pull request to add official support to Istio 1.11.x. There's still a few things to be ironed out there before merging, but it should be available in the next release (v0.0.34).

In the interim, you can try re-running the wasme deploy istio command with the --ignore-version-check flag. Assuming your filter is compatible with the ABI version in the underlying Envoy which Istio deploys, it should work!

rupipal commented 2 years ago

Hi @Sodman

Thanks! It worked.

~$ wasme deploy istio webassemblyhub.io/rpsspr/add-header:v0.1 --id=add-header --ignore-version-check INFO[0000] cache namespace created cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache configmap created cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache service account created cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache role created cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache rolebinding created cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" INFO[0000] cache daemonset created cache=wasme-cache.wasme image="quay.io/solo-io/wasme:0.0.33" WARN[0005] ignoreVersionCheck is set, skipping ABI version check image="webassemblyhub.io/rpsspr/add-header:v0.1" INFO[0005] added image to cache config... cache="{wasme-cache wasme}" image="webassemblyhub.io/rpsspr/add-header:v0.1" INFO[0005] waiting for event with timeout 1m0s
INFO[0006] cleaning up cache events for image webassemblyhub.io/rpsspr/add-header:v0.1 INFO[0006] updated workload sidecar annotations filter="id:\"add-header\" image:\"webassemblyhub.io/rpsspr/add-header:v0.1\" rootID:\"add_header\" patchContext:\"inbound\" " workload=petstore INFO[0006] created Istio EnvoyFilter resource envoy_filter_resource=petstore-add-header.default filter="id:\"add-header\" image:\"webassemblyhub.io/rpsspr/add-header:v0.1\" rootID:\"add_header\" patchContext:\"inbound\" " workload=petstore

And the filter worked too.

Sodman commented 2 years ago

Great, glad it's working!

This --ignore-version-check workaround will no longer be required once https://github.com/solo-io/wasm/pull/274 merges and v0.0.34 is released!

rupipal commented 2 years ago

Thanks!

On Tue, Dec 28, 2021 at 8:34 PM Sodman @.***> wrote:

Great, glad it's working!

This --ignore-version-check workaround will no longer be required once

274 https://github.com/solo-io/wasm/pull/274 merges and v0.0.34 is

released!

— Reply to this email directly, view it on GitHub https://github.com/solo-io/wasm/issues/278#issuecomment-1002147365, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGJIEWBEBMNGO3SEGUHJOTLUTHGWFANCNFSM5KVFPIWQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>