--- title: "Traefik Knative Documentation" description: "The Knative provider can be used for routing and load balancing in Traefik Proxy. View examples in the technical documentation." --- # Traefik & Knative When using the Knative provider, Traefik leverages Knative's Custom Resource Definitions (CRDs) to obtain its routing configuration. For detailed information on Knative concepts and resources, refer to the official [documentation](https://knative.dev/docs/). The Knative provider supports version [v1.19.0](https://github.com/knative/serving/releases/tag/knative-v1.19.0) of the specification. ## Deploying a Knative Service A `Service` is a core resource in the Knative specification that defines the entry point for traffic into a Knative application. It is linked to a `Ingress`, which specifies the Knative networking controller responsible for managing and handling the traffic, ensuring that it is directed to the appropriate Knative backend services. The following `Service` manifest configures the running Traefik controller to handle the incoming traffic. ```yaml --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go namespace: default spec: template: spec: containers: - image: gcr.io/knative-samples/helloworld-go env: - name: TARGET value: "Go Sample v1" ``` Once everything is deployed, sending a `GET` request to the HTTP endpoint should return the following response: ```shell $ curl http://helloworld-go.default.example.com Hello Go Sample v1! ``` !!! Note The `example.com` domain is the public domain configured when deploying the Traefik controller. Check out [the install configuration](../../install-configuration/providers/kubernetes/knative.md) for more details. ### Tag based routing To add tag-based routing with percentage in Knative, you can define the `traffic` section in your `Service` manifest to include different revisions with specific tags and percentages. Here is an example: ```yaml apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go namespace: default spec: template: spec: containers: - image: gcr.io/knative-samples/helloworld-go env: - name: TARGET value: "Go Sample v2" traffic: - tag: v1 revisionName: helloworld-go-00001 percent: 50 - tag: v2 revisionName: helloworld-go-00002 percent: 50 ``` In this example: - The `traffic` section specifies two revisions (`helloworld-go-00001` and `helloworld-go-00002`) with tags `v1` and `v2`, each receiving 50% of the traffic. - The `tag` field allows you to route traffic to specific revisions using the tag. You can access the tagged revisions using these URLs: - `http://v1-helloworld-go.default.example.com` - `http://v2-helloworld-go.default.example.com` Use the default URL to access percentage-based routing: - `http://helloworld-go.default.example.com` ### HTTP/HTTPS Check out the Knative documentation for [HTTP/HTTPS configuration](https://knative.dev/docs/serving/encryption/external-domain-tls/#configure-external-domain-encryption). {!traefik-for-business-applications.md!}