Add support for [`Filters`](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.HTTPRouteFilter)
in the HTTPRoute API. We reuse most of the existing fields used for
Istio to construct the appopriate filter. A new API
`.spec.service.mirror` is added to allow for request mirroring. The
`.spec.service.rewrite` API has been changed to a custom `HTTPRewrite`
API instead of importing it from Istio, to allow covering all features
that Gateway API provides.
Support for the [`RequestRedirect`](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.HTTPRequestRedirectFilter)
Filter has been left out on purpose, since it's not possible to specify
it if the same rule also specifies `.backendRefs` (which Flagger does).
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
Use regex filtering to match against session affinity cookie headers
when using Istio instead of an exact match.
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
Add `.spec.analysis.sessionAffinity` to configure session affinity for
weighted routing. Add support for session affinity in the Istio router,
using the `Set-Cookie` and `Cookie` headers.
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
Some third party software relies on annotations and labels on istios VirtualServices. For instance external-dns makes use of the `external-dns.alpha.kubernetes.io/controller` annotation. Currently there is no way to set labels and annotations on the VirtualService resource.
This change takes the metadata from the `canary.Spec.Service.Apex` property to replicate exactly what is already possible for a traefik resource:
c36a13ccff/pkg/router/traefik.go (L59-L68)Fix#854
Signed-off-by: Jonny Langefeld <jonny.langefeld@gmail.com>
add e2e tests istio
clean up comment from review
add e2e tests istio
clean up comment from review
clean up logging statement
add e2e tests istio
clean up comment from review
clean up logging statement
add log statement on e2e iteration
add e2e tests istio
clean up comment from review
clean up logging statement
add log statement on e2e iteration
extend timeout for finalizing
add e2e tests istio
clean up comment from review
clean up logging statement
add log statement on e2e iteration
extend timeout for finalizing
add phase to kustomize crd
add e2e tests istio
clean up comment from review
clean up logging statement
add log statement on e2e iteration
extend timeout for finalizing
add phase to kustomize crd
revert timeout on circleci
vs and svc checks for istio e2e tests
fix fmt errors and tests
add get statement in e2e test
add get statement in e2e test
add namespace to e2e
use only selector for service revert
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
add unit tests for finalizing
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
run fmt to clean up formatting
review changes
add kubectl annotation
add kubectl annotation support
introduction of finalizer
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
add unit tests for finalizing
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
run fmt to clean up formatting
review changes
introduction of finalizer
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
add unit tests for finalizing
introduction of finalizer
rebase and squash
fix fmt issues
revert Dockerfile
revert go.mod and go.sum
introduction of finalizer
introduction of finalizer
remove test for finalizer add istio tests
fix fmt issues
revert go.mod and go.sum
revert Dockerfile and main.go
fmt deployment controller
run fmt to clean up formatting
review changes
- add analysis field to Canary spec
- deprecate canaryAnalysis filed (to be removed in the next API version)
- maintain backwards compatibility with v1alpha3 by using spec.canaryAnalysis if spec.analysis is nil
- set analysis threshold default value to 1
- remove deprecated appendHeaders from Istio client
- propagate header operations from canary service headers to Istio virtual service
- add Istio router tests for request/response header removal
- update header operations examples in docs
The mirror option will be used to tell routers to configure traffic
mirroring. Implement mirror for GetRoutes and SetRoutes for Istio. For
other routers, GetRoutes always returns mirror == false, and SetRoutes
ignores mirror.
After this change there is no behavior change because no code sets
mirror true (yet).
Enhanced TestIstioRouter_SetRoutes and TestIstioRouter_GetRoutes.
This fixes issue https://github.com/weaveworks/flagger/issues/263
We actually don't need to specify any ports in the VirtualService
and DestinationRules.
Istio will create clusters/listerners for each named port we have declared in
the kubernetes services and the router can be shared as it operates only on L7 criterias
Also contains a tiny clean-up of imports
If port discovery is enabled, Flagger scans the deployment pod template and extracts the container ports excluding the port specified in the canary service spec and Istio proxy ports. All the extra ports will be used when generation the ClusterIP services.