Repository: knative/client
Pull request #1271 (2021-03-23 11:43:47)

Update --sink flag description
## Description
 for referring to a Knative service in another namespace by
 'ksvc' prefix explicitly, for e.g. 'ksvc:name:namespace'


## Changes
Update --sink flag description

## Reference
 xref: https://github.com/knative/client/pull/1264

/cc @rhuss @dsimansk 

knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by:
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please ask for approval from **navidshaikh** after the PR has been reviewed.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative%2Fclient).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative/client/blob/main/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["navidshaikh"]} -->
dsimansk: /lgtm
maximilien: Ok cool.
/approve
/hold for others to chime in
knative-prow-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative/client/pull/1271#issuecomment-806253528" title="Approved">maximilien</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative%2Fclient).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/knative/client/blob/main/OWNERS)~~ [maximilien]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->

Patch:
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index f6cc8b2e..d5838c75 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -36,6 +36,10 @@
 | 🎁
 | Add S column to specify built-in sources in kn source list-types
 | https://github.com/knative/client/pull/1246[#1246]
+
+| 🎁
+| Add context.Context parameter to API function
+| https://github.com/knative/client/pull/1274[#1274]
 |===
 
 ## v0.21.0 (2021-02-23)
diff --git a/docs/cmd/kn_source_apiserver_create.md b/docs/cmd/kn_source_apiserver_create.md
index 7af099c5..9c3a0eda 100644
--- a/docs/cmd/kn_source_apiserver_create.md
+++ b/docs/cmd/kn_source_apiserver_create.md
@@ -26,7 +26,7 @@ kn source apiserver create NAME --resource RESOURCE --sink SINK
       --resource stringArray      Specification for which events to listen, in the format Kind:APIVersion:LabelSelector, e.g. "Event:v1:key=value".
                                   "LabelSelector" is a list of comma separated key value pairs. "LabelSelector" can be omitted, e.g. "Event:v1".
       --service-account string    Name of the service account to use to run this source
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/cmd/kn_source_apiserver_update.md b/docs/cmd/kn_source_apiserver_update.md
index 693e6d23..02356596 100644
--- a/docs/cmd/kn_source_apiserver_update.md
+++ b/docs/cmd/kn_source_apiserver_update.md
@@ -26,7 +26,7 @@ kn source apiserver update NAME
       --resource stringArray      Specification for which events to listen, in the format Kind:APIVersion:LabelSelector, e.g. "Event:v1:key=value".
                                   "LabelSelector" is a list of comma separated key value pairs. "LabelSelector" can be omitted, e.g. "Event:v1".
       --service-account string    Name of the service account to use to run this source
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/cmd/kn_source_binding_create.md b/docs/cmd/kn_source_binding_create.md
index 3110006d..d3c5eab7 100644
--- a/docs/cmd/kn_source_binding_create.md
+++ b/docs/cmd/kn_source_binding_create.md
@@ -20,7 +20,7 @@ kn source binding create NAME --subject SUBJECT --sink SINK
       --ce-override stringArray   Cloud Event overrides to apply before sending event to sink. Example: '--ce-override key=value' You may be provide this flag multiple times. To unset, append "-" to the key (e.g. --ce-override key-).
   -h, --help                      help for create
   -n, --namespace string          Specify the namespace to operate in.
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
       --subject string            Subject which emits cloud events. This argument takes format kind:apiVersion:name for named resources or kind:apiVersion:labelKey1=value1,labelKey2=value2 for matching via a label selector
 ```
 
diff --git a/docs/cmd/kn_source_binding_update.md b/docs/cmd/kn_source_binding_update.md
index 18c1562c..3d8fd4b0 100644
--- a/docs/cmd/kn_source_binding_update.md
+++ b/docs/cmd/kn_source_binding_update.md
@@ -20,7 +20,7 @@ kn source binding update NAME
       --ce-override stringArray   Cloud Event overrides to apply before sending event to sink. Example: '--ce-override key=value' You may be provide this flag multiple times. To unset, append "-" to the key (e.g. --ce-override key-).
   -h, --help                      help for update
   -n, --namespace string          Specify the namespace to operate in.
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
       --subject string            Subject which emits cloud events. This argument takes format kind:apiVersion:name for named resources or kind:apiVersion:labelKey1=value1,labelKey2=value2 for matching via a label selector
 ```
 
diff --git a/docs/cmd/kn_source_container_create.md b/docs/cmd/kn_source_container_create.md
index 7fce6ba8..571bd634 100644
--- a/docs/cmd/kn_source_container_create.md
+++ b/docs/cmd/kn_source_container_create.md
@@ -30,7 +30,7 @@ kn source container create NAME --image IMAGE --sink SINK
       --pull-secret string       Image pull secret to set. An empty argument ("") clears the pull secret. The referenced secret must exist in the service's namespace.
       --request strings          The resource requirement requests for this Service. For example, 'cpu=100m,memory=256Mi'. You can use this flag multiple times. To unset a resource request, append "-" to the resource name, e.g. '--request cpu-'.
       --service-account string   Service account name to set. An empty argument ("") clears the service account. The referenced service account must exist in the service's namespace.
-  -s, --sink string              Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string              Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
       --user int                 The user ID to run the container (e.g., 1001).
       --volume stringArray       Add a volume from a ConfigMap (prefix cm: or config-map:) or a Secret (prefix secret: or sc:). Example: --volume myvolume=cm:myconfigmap or --volume myvolume=secret:mysecret. You can use this flag multiple times. To unset a ConfigMap/Secret reference, append "-" to the name, e.g. --volume myvolume-.
 ```
diff --git a/docs/cmd/kn_source_container_update.md b/docs/cmd/kn_source_container_update.md
index 82cdb153..2c32bba0 100644
--- a/docs/cmd/kn_source_container_update.md
+++ b/docs/cmd/kn_source_container_update.md
@@ -30,7 +30,7 @@ kn source container update NAME --image IMAGE
       --pull-secret string       Image pull secret to set. An empty argument ("") clears the pull secret. The referenced secret must exist in the service's namespace.
       --request strings          The resource requirement requests for this Service. For example, 'cpu=100m,memory=256Mi'. You can use this flag multiple times. To unset a resource request, append "-" to the resource name, e.g. '--request cpu-'.
       --service-account string   Service account name to set. An empty argument ("") clears the service account. The referenced service account must exist in the service's namespace.
-  -s, --sink string              Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string              Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
       --user int                 The user ID to run the container (e.g., 1001).
       --volume stringArray       Add a volume from a ConfigMap (prefix cm: or config-map:) or a Secret (prefix secret: or sc:). Example: --volume myvolume=cm:myconfigmap or --volume myvolume=secret:mysecret. You can use this flag multiple times. To unset a ConfigMap/Secret reference, append "-" to the name, e.g. --volume myvolume-.
 ```
diff --git a/docs/cmd/kn_source_ping_create.md b/docs/cmd/kn_source_ping_create.md
index bde2574f..17917723 100644
--- a/docs/cmd/kn_source_ping_create.md
+++ b/docs/cmd/kn_source_ping_create.md
@@ -22,7 +22,7 @@ kn source ping create NAME --sink SINK
   -h, --help                      help for create
   -n, --namespace string          Specify the namespace to operate in.
       --schedule string           Optional schedule specification in crontab format (e.g. '*/2 * * * *' for every two minutes. By default fire every minute.
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/cmd/kn_source_ping_update.md b/docs/cmd/kn_source_ping_update.md
index 0792aa2d..5336da33 100644
--- a/docs/cmd/kn_source_ping_update.md
+++ b/docs/cmd/kn_source_ping_update.md
@@ -22,7 +22,7 @@ kn source ping update NAME
   -h, --help                      help for update
   -n, --namespace string          Specify the namespace to operate in.
       --schedule string           Optional schedule specification in crontab format (e.g. '*/2 * * * *' for every two minutes. By default fire every minute.
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/cmd/kn_subscription_create.md b/docs/cmd/kn_subscription_create.md
index aba916c9..ca244a21 100644
--- a/docs/cmd/kn_subscription_create.md
+++ b/docs/cmd/kn_subscription_create.md
@@ -23,9 +23,9 @@ kn subscription create NAME
       --channel string            Specify the channel to subscribe to. For the default channel, just use the name (e.g. 'mychannel'). A mapped channel type like 'imc' can be used as a prefix (e.g. 'imc:mychannel'). Finally you can specify the full coordinates to the referenced channel with Group:Version:Kind:Name (e.g. 'messaging.knative.dev:v1alpha1:KafkaChannel:mychannel').
   -h, --help                      help for create
   -n, --namespace string          Specify the namespace to operate in.
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
-      --sink-dead-letter string   Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-dead-letter broker:nest' for a broker 'nest', '--sink-dead-letter channel:pipe' for a channel 'pipe', '--sink-dead-letter ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-dead-letter https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-dead-letter ksvc:receiver' or simply '--sink-dead-letter receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
-      --sink-reply string         Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-reply broker:nest' for a broker 'nest', '--sink-reply channel:pipe' for a channel 'pipe', '--sink-reply ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-reply https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-reply ksvc:receiver' or simply '--sink-reply receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
+      --sink-dead-letter string   Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-dead-letter broker:nest' for a broker 'nest', '--sink-dead-letter channel:pipe' for a channel 'pipe', '--sink-dead-letter ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-dead-letter https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-dead-letter ksvc:receiver' or simply '--sink-dead-letter receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
+      --sink-reply string         Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-reply broker:nest' for a broker 'nest', '--sink-reply channel:pipe' for a channel 'pipe', '--sink-reply ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-reply https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-reply ksvc:receiver' or simply '--sink-reply receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/cmd/kn_subscription_update.md b/docs/cmd/kn_subscription_update.md
index ee00435a..c0512cb4 100644
--- a/docs/cmd/kn_subscription_update.md
+++ b/docs/cmd/kn_subscription_update.md
@@ -22,9 +22,9 @@ kn subscription update NAME
 ```
   -h, --help                      help for update
   -n, --namespace string          Specify the namespace to operate in.
-  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
-      --sink-dead-letter string   Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-dead-letter broker:nest' for a broker 'nest', '--sink-dead-letter channel:pipe' for a channel 'pipe', '--sink-dead-letter ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-dead-letter https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-dead-letter ksvc:receiver' or simply '--sink-dead-letter receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
-      --sink-reply string         Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-reply broker:nest' for a broker 'nest', '--sink-reply channel:pipe' for a channel 'pipe', '--sink-reply ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-reply https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-reply ksvc:receiver' or simply '--sink-reply receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string               Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
+      --sink-dead-letter string   Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-dead-letter broker:nest' for a broker 'nest', '--sink-dead-letter channel:pipe' for a channel 'pipe', '--sink-dead-letter ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-dead-letter https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-dead-letter ksvc:receiver' or simply '--sink-dead-letter receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
+      --sink-reply string         Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink-reply broker:nest' for a broker 'nest', '--sink-reply channel:pipe' for a channel 'pipe', '--sink-reply ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink-reply https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink-reply ksvc:receiver' or simply '--sink-reply receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/cmd/kn_trigger_create.md b/docs/cmd/kn_trigger_create.md
index 106781c3..d7115ece 100644
--- a/docs/cmd/kn_trigger_create.md
+++ b/docs/cmd/kn_trigger_create.md
@@ -25,7 +25,7 @@ kn trigger create NAME --sink SINK
   -h, --help               help for create
       --inject-broker      Create new broker with name default through common annotation
   -n, --namespace string   Specify the namespace to operate in.
-  -s, --sink string        Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string        Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/cmd/kn_trigger_update.md b/docs/cmd/kn_trigger_update.md
index b3d0afed..ed3536e2 100644
--- a/docs/cmd/kn_trigger_update.md
+++ b/docs/cmd/kn_trigger_update.md
@@ -29,7 +29,7 @@ kn trigger update NAME
   -h, --help               help for update
       --inject-broker      Create new broker with name default through common annotation
   -n, --namespace string   Specify the namespace to operate in.
-  -s, --sink string        Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver'. If a prefix is not provided, it is considered as a Knative service.
+  -s, --sink string        Addressable sink for events. You can specify a broker, channel, Knative service or URI. Examples: '--sink broker:nest' for a broker 'nest', '--sink channel:pipe' for a channel 'pipe', '--sink ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', '--sink https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, '--sink ksvc:receiver' or simply '--sink receiver' for a Knative service 'receiver' in the current namespace. If a prefix is not provided, it is considered as a Knative service in the current namespace. If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly.
 ```
 
 ### Options inherited from parent commands
diff --git a/pkg/dynamic/client.go b/pkg/dynamic/client.go
index c5bb80c3..cbe2c083 100644
--- a/pkg/dynamic/client.go
+++ b/pkg/dynamic/client.go
@@ -52,22 +52,22 @@ type KnDynamicClient interface {
 	Namespace() string
 
 	// ListCRDs returns list of CRDs with their type and name
-	ListCRDs(options metav1.ListOptions) (*unstructured.UnstructuredList, error)
+	ListCRDs(ctx context.Context, options metav1.ListOptions) (*unstructured.UnstructuredList, error)
 
 	// ListSourcesTypes returns list of eventing sources CRDs
-	ListSourcesTypes() (*unstructured.UnstructuredList, error)
+	ListSourcesTypes(ctx context.Context) (*unstructured.UnstructuredList, error)
 
 	// ListSources returns list of available source objects
-	ListSources(types ...WithType) (*unstructured.UnstructuredList, error)
+	ListSources(ctx context.Context, types ...WithType) (*unstructured.UnstructuredList, error)
 
 	// ListSourcesUsingGVKs returns list of available source objects using given list of GVKs
-	ListSourcesUsingGVKs(*[]schema.GroupVersionKind, ...WithType) (*unstructured.UnstructuredList, error)
+	ListSourcesUsingGVKs(context.Context, *[]schema.GroupVersionKind, ...WithType) (*unstructured.UnstructuredList, error)
 
 	// ListChannelsTypes returns installed knative channel CRDs
-	ListChannelsTypes() (*unstructured.UnstructuredList, error)
+	ListChannelsTypes(ctx context.Context) (*unstructured.UnstructuredList, error)
 
 	// ListChannelsUsingGVKs returns list of available channel objects using given list of GVKs
-	ListChannelsUsingGVKs(*[]schema.GroupVersionKind, ...WithType) (*unstructured.UnstructuredList, error)
+	ListChannelsUsingGVKs(context.Context, *[]schema.GroupVersionKind, ...WithType) (*unstructured.UnstructuredList, error)
 
 	// RawClient returns the raw dynamic client interface
 	RawClient() dynamic.Interface
@@ -94,14 +94,14 @@ func (c *knDynamicClient) Namespace() string {
 
 // TODO(navidshaikh): Use ListConfigs here instead of ListOptions
 // ListCRDs returns list of installed CRDs in the cluster and filters based on the given options
-func (c *knDynamicClient) ListCRDs(options metav1.ListOptions) (*unstructured.UnstructuredList, error) {
+func (c *knDynamicClient) ListCRDs(ctx context.Context, options metav1.ListOptions) (*unstructured.UnstructuredList, error) {
 	gvr := schema.GroupVersionResource{
 		Group:    crdGroup,
 		Version:  crdVersion,
 		Resource: crdKinds,
 	}
 
-	uList, err := c.client.Resource(gvr).List(context.TODO(), options)
+	uList, err := c.client.Resource(gvr).List(ctx, options)
 	if err != nil {
 		return nil, err
 	}
@@ -110,20 +110,20 @@ func (c *knDynamicClient) ListCRDs(options metav1.ListOptions) (*unstructured.Un
 }
 
 // ListSourcesTypes returns installed knative eventing sources CRDs
-func (c *knDynamicClient) ListSourcesTypes() (*unstructured.UnstructuredList, error) {
+func (c *knDynamicClient) ListSourcesTypes(ctx context.Context) (*unstructured.UnstructuredList, error) {
 	options := metav1.ListOptions{}
 	sourcesLabels := labels.Set{sourcesLabelKey: sourcesLabelValue}
 	options.LabelSelector = sourcesLabels.String()
-	return c.ListCRDs(options)
+	return c.ListCRDs(ctx, options)
 }
 
 // ListChannelsTypes returns installed knative channel CRDs
-func (c *knDynamicClient) ListChannelsTypes() (*unstructured.UnstructuredList, error) {
+func (c *knDynamicClient) ListChannelsTypes(ctx context.Context) (*unstructured.UnstructuredList, error) {
 	var ChannelTypeList unstructured.UnstructuredList
 	options := metav1.ListOptions{}
 	channelsLabels := labels.Set{messaging.SubscribableDuckVersionAnnotation: channelLabelValue}
 	options.LabelSelector = channelsLabels.String()
-	uList, err := c.ListCRDs(options)
+	uList, err := c.ListCRDs(ctx, options)
 	if err != nil {
 		return nil, err
 	}
@@ -148,12 +148,12 @@ func (c knDynamicClient) RawClient() dynamic.Interface {
 // ListSources returns list of available sources objects
 // Provide the list of source types as for example: WithTypes("pingsource", "apiserversource"...) to list
 // only given types of source objects
-func (c *knDynamicClient) ListSources(types ...WithType) (*unstructured.UnstructuredList, error) {
+func (c *knDynamicClient) ListSources(ctx context.Context, types ...WithType) (*unstructured.UnstructuredList, error) {
 	var (
 		sourceList unstructured.UnstructuredList
 		options    metav1.ListOptions
 	)
-	sourceTypes, err := c.ListSourcesTypes()
+	sourceTypes, err := c.ListSourcesTypes(ctx)
 	if err != nil {
 		return nil, err
 	}
@@ -184,7 +184,7 @@ func (c *knDynamicClient) ListSources(types ...WithType) (*unstructured.Unstruct
 		}
 
 		// list objects of source type with this GVR
-		sList, err := c.client.Resource(gvr).Namespace(namespace).List(context.TODO(), options)
+		sList, err := c.client.Resource(gvr).Namespace(namespace).List(ctx, options)
 		if err != nil {
 			return nil, err
 		}
@@ -200,7 +200,7 @@ func (c *knDynamicClient) ListSources(types ...WithType) (*unstructured.Unstruct
 }
 
 // ListSourcesUsingGVKs returns list of available source objects using given list of GVKs
-func (c *knDynamicClient) ListSourcesUsingGVKs(gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
+func (c *knDynamicClient) ListSourcesUsingGVKs(ctx context.Context, gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
 	if gvks == nil {
 		return nil, nil
 	}
@@ -220,7 +220,7 @@ func (c *knDynamicClient) ListSourcesUsingGVKs(gvks *[]schema.GroupVersionKind,
 		gvr := gvk.GroupVersion().WithResource(strings.ToLower(gvk.Kind) + "s")
 
 		// list objects of source type with this GVR
-		sList, err := c.client.Resource(gvr).Namespace(namespace).List(context.TODO(), options)
+		sList, err := c.client.Resource(gvr).Namespace(namespace).List(ctx, options)
 		if err != nil {
 			return nil, err
 		}
@@ -236,7 +236,7 @@ func (c *knDynamicClient) ListSourcesUsingGVKs(gvks *[]schema.GroupVersionKind,
 }
 
 // ListChannelsUsingGVKs returns list of available channel objects using given list of GVKs
-func (c *knDynamicClient) ListChannelsUsingGVKs(gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
+func (c *knDynamicClient) ListChannelsUsingGVKs(ctx context.Context, gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
 	if gvks == nil {
 		return nil, nil
 	}
@@ -256,7 +256,7 @@ func (c *knDynamicClient) ListChannelsUsingGVKs(gvks *[]schema.GroupVersionKind,
 		gvr := gvk.GroupVersion().WithResource(strings.ToLower(gvk.Kind) + "s")
 
 		// list objects of channel type with this GVR
-		cList, err := c.client.Resource(gvr).Namespace(namespace).List(context.TODO(), options)
+		cList, err := c.client.Resource(gvr).Namespace(namespace).List(ctx, options)
 		if err != nil {
 			return nil, err
 		}
diff --git a/pkg/dynamic/client_mock.go b/pkg/dynamic/client_mock.go
index bcc594c6..ebeb19ea 100644
--- a/pkg/dynamic/client_mock.go
+++ b/pkg/dynamic/client_mock.go
@@ -15,6 +15,7 @@
 package dynamic
 
 import (
+	"context"
 	"testing"
 
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -66,7 +67,7 @@ func (dr *ClientRecorder) ListCRDs(options interface{}, ulist *unstructured.Unst
 }
 
 // ListCRDs returns list of installed CRDs in the cluster and filters based on the given options
-func (c *MockKnDynamicClient) ListCRDs(options metav1.ListOptions) (*unstructured.UnstructuredList, error) {
+func (c *MockKnDynamicClient) ListCRDs(ctx context.Context, options metav1.ListOptions) (*unstructured.UnstructuredList, error) {
 	call := c.recorder.r.VerifyCall("ListCRDs", options)
 	return call.Result[0].(*unstructured.UnstructuredList), mock.ErrorOrNil(call.Result[1])
 }
@@ -77,7 +78,7 @@ func (dr *ClientRecorder) ListSourcesTypes(ulist *unstructured.UnstructuredList,
 }
 
 // ListSourcesTypes returns installed knative eventing sources CRDs
-func (c *MockKnDynamicClient) ListSourcesTypes() (*unstructured.UnstructuredList, error) {
+func (c *MockKnDynamicClient) ListSourcesTypes(context.Context) (*unstructured.UnstructuredList, error) {
 	call := c.recorder.r.VerifyCall("ListSourcesTypes")
 	return call.Result[0].(*unstructured.UnstructuredList), mock.ErrorOrNil(call.Result[1])
 }
@@ -88,7 +89,7 @@ func (dr *ClientRecorder) ListChannelsTypes(ulist *unstructured.UnstructuredList
 }
 
 // ListChannelsTypes returns installed knative messaging CRDs
-func (c *MockKnDynamicClient) ListChannelsTypes() (*unstructured.UnstructuredList, error) {
+func (c *MockKnDynamicClient) ListChannelsTypes(context.Context) (*unstructured.UnstructuredList, error) {
 	call := c.recorder.r.VerifyCall("ListChannelsTypes")
 	return call.Result[0].(*unstructured.UnstructuredList), mock.ErrorOrNil(call.Result[1])
 }
@@ -99,7 +100,7 @@ func (dr *ClientRecorder) ListSources(types interface{}, ulist *unstructured.Uns
 }
 
 // ListSources returns list of available sources objects
-func (c *MockKnDynamicClient) ListSources(types ...WithType) (*unstructured.UnstructuredList, error) {
+func (c *MockKnDynamicClient) ListSources(ctx context.Context, types ...WithType) (*unstructured.UnstructuredList, error) {
 	call := c.recorder.r.VerifyCall("ListSources")
 	return call.Result[0].(*unstructured.UnstructuredList), mock.ErrorOrNil(call.Result[1])
 }
@@ -121,7 +122,7 @@ func (dr *ClientRecorder) ListSourcesUsingGVKs(gvks interface{}, types interface
 }
 
 // ListSourcesUsingGVKs returns list of available source objects using given list of GVKs
-func (c *MockKnDynamicClient) ListSourcesUsingGVKs(gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
+func (c *MockKnDynamicClient) ListSourcesUsingGVKs(ctx context.Context, gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
 	call := c.recorder.r.VerifyCall("ListSourcesUsingGVKs")
 	return call.Result[0].(*unstructured.UnstructuredList), mock.ErrorOrNil(call.Result[1])
 }
@@ -137,7 +138,7 @@ func (dr *ClientRecorder) ListChannelsUsingGVKs(gvks interface{}, types interfac
 }
 
 // ListChannelsUsingGVKs returns list of available channel objects using given list of GVKs
-func (c *MockKnDynamicClient) ListChannelsUsingGVKs(gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
+func (c *MockKnDynamicClient) ListChannelsUsingGVKs(ctx context.Context, gvks *[]schema.GroupVersionKind, types ...WithType) (*unstructured.UnstructuredList, error) {
 	call := c.recorder.r.VerifyCall("ListChannelsUsingGVKs")
 	return call.Result[0].(*unstructured.UnstructuredList), mock.ErrorOrNil(call.Result[1])
 }
diff --git a/pkg/eventing/v1beta1/client.go b/pkg/eventing/v1beta1/client.go
index d5b7e958..49c2f366 100644
--- a/pkg/eventing/v1beta1/client.go
+++ b/pkg/eventing/v1beta1/client.go
@@ -38,23 +38,23 @@ type KnEventingClient interface {
 	// Namespace in which this client is operating for
 	Namespace() string
 	// CreateTrigger is used to create an instance of trigger
-	CreateTrigger(trigger *v1beta1.Trigger) error
+	CreateTrigger(ctx context.Context, trigger *v1beta1.Trigger) error
 	// DeleteTrigger is used to delete an instance of trigger
-	DeleteTrigger(name string) error
+	DeleteTrigger(ctx context.Context, name string) error
 	// GetTrigger is used to get an instance of trigger
-	GetTrigger(name string) (*v1beta1.Trigger, error)
+	GetTrigger(ctx context.Context, name string) (*v1beta1.Trigger, error)
 	// ListTrigger returns list of trigger CRDs
-	ListTriggers() (*v1beta1.TriggerList, error)
+	ListTriggers(ctx context.Context) (*v1beta1.TriggerList, error)
 	// UpdateTrigger is used to update an instance of trigger
-	UpdateTrigger(trigger *v1beta1.Trigger) error
+	UpdateTrigger(ctx context.Context, trigger *v1beta1.Trigger) error
 	// CreateBroker is used to create an instance of broker
-	CreateBroker(broker *v1beta1.Broker) error
+	CreateBroker(ctx context.Context, broker *v1beta1.Broker) error
 	// GetBroker is used to get an instance of broker
-	GetBroker(name string) (*v1beta1.Broker, error)
+	GetBroker(ctx context.Context, name string) (*v1beta1.Broker, error)
 	// DeleteBroker is used to delete an instance of broker
-	DeleteBroker(name string, timeout time.Duration) error
+	DeleteBroker(ctx context.Context, name string, timeout time.Duration) error
 	// ListBroker returns list of broker CRDs
-	ListBrokers() (*v1beta1.BrokerList, error)
+	ListBrokers(ctx context.Context) (*v1beta1.BrokerList, error)
 }
 
 // KnEventingClient is a combination of Sources client interface and namespace
@@ -74,8 +74,8 @@ func NewKnEventingClient(client client_v1beta1.EventingV1beta1Interface, namespa
 }
 
 //CreateTrigger is used to create an instance of trigger
-func (c *knEventingClient) CreateTrigger(trigger *v1beta1.Trigger) error {
-	_, err := c.client.Triggers(c.namespace).Create(context.TODO(), trigger, meta_v1.CreateOptions{})
+func (c *knEventingClient) CreateTrigger(ctx context.Context, trigger *v1beta1.Trigger) error {
+	_, err := c.client.Triggers(c.namespace).Create(ctx, trigger, meta_v1.CreateOptions{})
 	if err != nil {
 		return kn_errors.GetError(err)
 	}
@@ -83,8 +83,8 @@ func (c *knEventingClient) CreateTrigger(trigger *v1beta1.Trigger) error {
 }
 
 //DeleteTrigger is used to delete an instance of trigger
-func (c *knEventingClient) DeleteTrigger(name string) error {
-	err := c.client.Triggers(c.namespace).Delete(context.TODO(), name, apis_v1.DeleteOptions{})
+func (c *knEventingClient) DeleteTrigger(ctx context.Context, name string) error {
+	err := c.client.Triggers(c.namespace).Delete(ctx, name, apis_v1.DeleteOptions{})
 	if err != nil {
 		return kn_errors.GetError(err)
 	}
@@ -92,8 +92,8 @@ func (c *knEventingClient) DeleteTrigger(name string) error {
 }
 
 //GetTrigger is used to get an instance of trigger
-func (c *knEventingClient) GetTrigger(name string) (*v1beta1.Trigger, error) {
-	trigger, err := c.client.Triggers(c.namespace).Get(context.TODO(), name, apis_v1.GetOptions{})
+func (c *knEventingClient) GetTrigger(ctx context.Context, name string) (*v1beta1.Trigger, error) {
+	trigger, err := c.client.Triggers(c.namespace).Get(ctx, name, apis_v1.GetOptions{})
 	if err != nil {
 		return nil, kn_errors.GetError(err)
 	}
@@ -104,8 +104,8 @@ func (c *knEventingClient) GetTrigger(name string) (*v1beta1.Trigger, error) {
 	return trigger, nil
 }
 
-func (c *knEventingClient) ListTriggers() (*v1beta1.TriggerList, error) {
-	triggerList, err := c.client.Triggers(c.namespace).List(context.TODO(), apis_v1.ListOptions{})
+func (c *knEventingClient) ListTriggers(ctx context.Context) (*v1beta1.TriggerList, error) {
+	triggerList, err := c.client.Triggers(c.namespace).List(ctx, apis_v1.ListOptions{})
 	if err != nil {
 		return nil, kn_errors.GetError(err)
 	}
@@ -128,8 +128,8 @@ func (c *knEventingClient) ListTriggers() (*v1beta1.TriggerList, error) {
 }
 
 //CreateTrigger is used to create an instance of trigger
-func (c *knEventingClient) UpdateTrigger(trigger *v1beta1.Trigger) error {
-	_, err := c.client.Triggers(c.namespace).Update(context.TODO(), trigger, meta_v1.UpdateOptions{})
+func (c *knEventingClient) UpdateTrigger(ctx context.Context, trigger *v1beta1.Trigger) error {
+	_, err := c.client.Triggers(c.namespace).Update(ctx, trigger, meta_v1.UpdateOptions{})
 	if err != nil {
 		return kn_errors.GetError(err)
 	}
@@ -219,8 +219,8 @@ func (b *TriggerBuilder) Build() *v1beta1.Trigger {
 }
 
 // CreateBroker is used to create an instance of broker
-func (c *knEventingClient) CreateBroker(broker *v1beta1.Broker) error {
-	_, err := c.client.Brokers(c.namespace).Create(context.TODO(), broker, meta_v1.CreateOptions{})
+func (c *knEventingClient) CreateBroker(ctx context.Context, broker *v1beta1.Broker) error {
+	_, err := c.client.Brokers(c.namespace).Create(ctx, broker, meta_v1.CreateOptions{})
 	if err != nil {
 		return kn_errors.GetError(err)
 	}
@@ -228,8 +228,8 @@ func (c *knEventingClient) CreateBroker(broker *v1beta1.Broker) error {
 }
 
 // GetBroker is used to get an instance of broker
-func (c *knEventingClient) GetBroker(name string) (*v1beta1.Broker, error) {
-	broker, err := c.client.Brokers(c.namespace).Get(context.TODO(), name, apis_v1.GetOptions{})
+func (c *knEventingClient) GetBroker(ctx context.Context, name string) (*v1beta1.Broker, error) {
+	broker, err := c.client.Brokers(c.namespace).Get(ctx, name, apis_v1.GetOptions{})
 	if err != nil {
 		return nil, kn_errors.GetError(err)
 	}
@@ -241,29 +241,28 @@ func (c *knEventingClient) GetBroker(name string) (*v1beta1.Broker, error) {
 }
 
 // WatchBroker is used to create watcher object
-func (c *knEventingClient) WatchBroker(name string, timeout time.Duration) (watch.Interface, error) {
-	return wait.NewWatcher(c.client.Brokers(c.namespace).Watch,
-		c.client.RESTClient(), c.namespace, "brokers", name, timeout)
+func (c *knEventingClient) WatchBroker(ctx context.Context, name string, timeout time.Duration) (watch.Interface, error) {
+	return wait.NewWatcher(ctx, c.client.Brokers(c.namespace).Watch, c.client.RESTClient(), c.namespace, "brokers", name, timeout)
 }
 
 // DeleteBroker is used to delete an instance of broker and wait for completion until given timeout
 // For `timeout == 0` delete is performed async without any wait
-func (c *knEventingClient) DeleteBroker(name string, timeout time.Duration) error {
+func (c *knEventingClient) DeleteBroker(ctx context.Context, name string, timeout time.Duration) error {
 	if timeout == 0 {
-		return c.deleteBroker(name, apis_v1.DeletePropagationBackground)
+		return c.deleteBroker(ctx, name, apis_v1.DeletePropagationBackground)
 	}
 	waitC := make(chan error)
-	watcher, err := c.WatchBroker(name, timeout)
+	watcher, err := c.WatchBroker(ctx, name, timeout)
 	if err != nil {
 		return nil
 	}
 	defer watcher.Stop()
 	go func() {
 		waitForEvent := wait.NewWaitForEvent("broker", func(evt *watch.Event) bool { return evt.Type == watch.Deleted })
-		err, _ := waitForEvent.Wait(watcher, name, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback())
+		err, _ := waitForEvent.Wait(ctx, watcher, name, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback())
 		waitC <- err
 	}()
-	err = c.deleteBroker(name, apis_v1.DeletePropagationForeground)
+	err = c.deleteBroker(ctx, name, apis_v1.DeletePropagationForeground)
 	if err != nil {
 		return err
 	}
@@ -271,8 +270,8 @@ func (c *knEventingClient) DeleteBroker(name string, timeout time.Duration) erro
 }
 
 // deleteBroker is used to delete an instance of broker
-func (c *knEventingClient) deleteBroker(name string, propagationPolicy apis_v1.DeletionPropagation) error {
-	err := c.client.Brokers(c.namespace).Delete(context.TODO(), name, apis_v1.DeleteOptions{PropagationPolicy: &propagationPolicy})
+func (c *knEventingClient) deleteBroker(ctx context.Context, name string, propagationPolicy apis_v1.DeletionPropagation) error {
+	err := c.client.Brokers(c.namespace).Delete(ctx, name, apis_v1.DeleteOptions{PropagationPolicy: &propagationPolicy})
 	if err != nil {
 		return kn_errors.GetError(err)
 	}
@@ -280,8 +279,8 @@ func (c *knEventingClient) deleteBroker(name string, propagationPolicy apis_v1.D
 }
 
 // ListBrokers is used to retrieve the list of broker instances
-func (c *knEventingClient) ListBrokers() (*v1beta1.BrokerList, error) {
-	brokerList, err := c.client.Brokers(c.namespace).List(context.TODO(), apis_v1.ListOptions{})
+func (c *knEventingClient) ListBrokers(ctx context.Context) (*v1beta1.BrokerList, error) {
+	brokerList, err := c.client.Brokers(c.namespace).List(ctx, apis_v1.ListOptions{})
 	if err != nil {
 		return nil, kn_errors.GetError(err)
 	}
diff --git a/pkg/eventing/v1beta1/client_mock.go b/pkg/eventing/v1beta1/client_mock.go
index cb36e830..69f2b534 100644
--- a/pkg/eventing/v1beta1/client_mock.go
+++ b/pkg/eventing/v1beta1/client_mock.go
@@ -15,6 +15,7 @@
 package v1beta1
 
 import (
+	"context"
 	"testing"
 	"time"
 
@@ -65,7 +66,7 @@ func (sr *EventingRecorder) CreateTrigger(trigger interface{}, err error) {
 }
 
 // CreateTrigger performs a previously recorded action
-func (c *MockKnEventingClient) CreateTrigger(trigger *v1beta1.Trigger) error {
+func (c *MockKnEventingClient) CreateTrigger(ctx context.Context, trigger *v1beta1.Trigger) error {
 	call := c.recorder.r.VerifyCall("CreateTrigger", trigger)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -76,7 +77,7 @@ func (sr *EventingRecorder) GetTrigger(name interface{}, trigger *v1beta1.Trigge
 }
 
 // GetTrigger performs a previously recorded action
-func (c *MockKnEventingClient) GetTrigger(name string) (*v1beta1.Trigger, error) {
+func (c *MockKnEventingClient) GetTrigger(ctx context.Context, name string) (*v1beta1.Trigger, error) {
 	call := c.recorder.r.VerifyCall("GetTrigger", name)
 	return call.Result[0].(*v1beta1.Trigger), mock.ErrorOrNil(call.Result[1])
 }
@@ -87,7 +88,7 @@ func (sr *EventingRecorder) DeleteTrigger(name interface{}, err error) {
 }
 
 // DeleteTrigger performs a previously recorded action, failing if non has been registered
-func (c *MockKnEventingClient) DeleteTrigger(name string) error {
+func (c *MockKnEventingClient) DeleteTrigger(ctx context.Context, name string) error {
 	call := c.recorder.r.VerifyCall("DeleteTrigger", name)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -98,7 +99,7 @@ func (sr *EventingRecorder) ListTriggers(triggerList *v1beta1.TriggerList, err e
 }
 
 // ListTriggers performs a previously recorded action
-func (c *MockKnEventingClient) ListTriggers() (*v1beta1.TriggerList, error) {
+func (c *MockKnEventingClient) ListTriggers(context.Context) (*v1beta1.TriggerList, error) {
 	call := c.recorder.r.VerifyCall("ListTriggers")
 	return call.Result[0].(*v1beta1.TriggerList), mock.ErrorOrNil(call.Result[1])
 }
@@ -109,7 +110,7 @@ func (sr *EventingRecorder) UpdateTrigger(trigger interface{}, err error) {
 }
 
 // UpdateTrigger performs a previously recorded action
-func (c *MockKnEventingClient) UpdateTrigger(trigger *v1beta1.Trigger) error {
+func (c *MockKnEventingClient) UpdateTrigger(ctx context.Context, trigger *v1beta1.Trigger) error {
 	call := c.recorder.r.VerifyCall("UpdateTrigger")
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -120,7 +121,7 @@ func (sr *EventingRecorder) CreateBroker(broker interface{}, err error) {
 }
 
 // CreateBroker performs a previously recorded action
-func (c *MockKnEventingClient) CreateBroker(broker *v1beta1.Broker) error {
+func (c *MockKnEventingClient) CreateBroker(ctx context.Context, broker *v1beta1.Broker) error {
 	call := c.recorder.r.VerifyCall("CreateBroker", broker)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -131,7 +132,7 @@ func (sr *EventingRecorder) GetBroker(name interface{}, broker *v1beta1.Broker,
 }
 
 // GetBroker performs a previously recorded action
-func (c *MockKnEventingClient) GetBroker(name string) (*v1beta1.Broker, error) {
+func (c *MockKnEventingClient) GetBroker(ctx context.Context, name string) (*v1beta1.Broker, error) {
 	call := c.recorder.r.VerifyCall("GetBroker", name)
 	return call.Result[0].(*v1beta1.Broker), mock.ErrorOrNil(call.Result[1])
 }
@@ -142,7 +143,7 @@ func (sr *EventingRecorder) DeleteBroker(name, timeout interface{}, err error) {
 }
 
 // DeleteBroker performs a previously recorded action, failing if non has been registered
-func (c *MockKnEventingClient) DeleteBroker(name string, timeout time.Duration) error {
+func (c *MockKnEventingClient) DeleteBroker(ctx context.Context, name string, timeout time.Duration) error {
 	call := c.recorder.r.VerifyCall("DeleteBroker", name, timeout)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -153,7 +154,7 @@ func (sr *EventingRecorder) ListBrokers(brokerList *v1beta1.BrokerList, err erro
 }
 
 // ListBrokers performs a previously recorded action
-func (c *MockKnEventingClient) ListBrokers() (*v1beta1.BrokerList, error) {
+func (c *MockKnEventingClient) ListBrokers(context.Context) (*v1beta1.BrokerList, error) {
 	call := c.recorder.r.VerifyCall("ListBrokers")
 	return call.Result[0].(*v1beta1.BrokerList), mock.ErrorOrNil(call.Result[1])
 }
diff --git a/pkg/kn/commands/broker/create.go b/pkg/kn/commands/broker/create.go
index 81940e6d..8fc2e75f 100644
--- a/pkg/kn/commands/broker/create.go
+++ b/pkg/kn/commands/broker/create.go
@@ -60,7 +60,7 @@ func NewBrokerCreateCommand(p *commands.KnParams) *cobra.Command {
 				NewBrokerBuilder(name).
 				Namespace(namespace)
 
-			err = eventingClient.CreateBroker(brokerBuilder.Build())
+			err = eventingClient.CreateBroker(cmd.Context(), brokerBuilder.Build())
 			if err != nil {
 				return fmt.Errorf(
 					"cannot create broker '%s' in namespace '%s' "+
diff --git a/pkg/kn/commands/broker/delete.go b/pkg/kn/commands/broker/delete.go
index 1af0f8a1..e24b2016 100644
--- a/pkg/kn/commands/broker/delete.go
+++ b/pkg/kn/commands/broker/delete.go
@@ -61,7 +61,7 @@ func NewBrokerDeleteCommand(p *commands.KnParams) *cobra.Command {
 			if waitFlags.Wait {
 				timeout = time.Duration(waitFlags.TimeoutInSeconds) * time.Second
 			}
-			err = eventingClient.DeleteBroker(name, timeout)
+			err = eventingClient.DeleteBroker(cmd.Context(), name, timeout)
 			if err != nil {
 				return fmt.Errorf(
 					"cannot delete broker '%s' in namespace '%s' "+
diff --git a/pkg/kn/commands/broker/describe.go b/pkg/kn/commands/broker/describe.go
index 6a64f906..5e8e0d6a 100644
--- a/pkg/kn/commands/broker/describe.go
+++ b/pkg/kn/commands/broker/describe.go
@@ -71,7 +71,7 @@ func NewBrokerDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			broker, err := eventingClient.GetBroker(name)
+			broker, err := eventingClient.GetBroker(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/broker/list.go b/pkg/kn/commands/broker/list.go
index 3693913c..a4b7402e 100644
--- a/pkg/kn/commands/broker/list.go
+++ b/pkg/kn/commands/broker/list.go
@@ -57,7 +57,7 @@ func NewBrokerListCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			brokerList, err := eventingClient.ListBrokers()
+			brokerList, err := eventingClient.ListBrokers(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/channel/create.go b/pkg/kn/commands/channel/create.go
index f952b507..0cec1eb0 100644
--- a/pkg/kn/commands/channel/create.go
+++ b/pkg/kn/commands/channel/create.go
@@ -70,7 +70,7 @@ func NewChannelCreateCommand(p *commands.KnParams) *cobra.Command {
 				cb.Type(gvk)
 			}
 
-			err = client.CreateChannel(cb.Build())
+			err = client.CreateChannel(cmd.Context(), cb.Build())
 			if err != nil {
 				return knerrors.GetError(err)
 			}
diff --git a/pkg/kn/commands/channel/delete.go b/pkg/kn/commands/channel/delete.go
index b52bd5cc..3c22b5db 100644
--- a/pkg/kn/commands/channel/delete.go
+++ b/pkg/kn/commands/channel/delete.go
@@ -41,7 +41,7 @@ func NewChannelDeleteCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			err = channelClient.DeleteChannel(name)
+			err = channelClient.DeleteChannel(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/channel/describe.go b/pkg/kn/commands/channel/describe.go
index 721588fc..6960b6e5 100644
--- a/pkg/kn/commands/channel/describe.go
+++ b/pkg/kn/commands/channel/describe.go
@@ -57,7 +57,7 @@ func NewChannelDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			channel, err := client.GetChannel(name)
+			channel, err := client.GetChannel(cmd.Context(), name)
 			if err != nil {
 				return knerrors.GetError(err)
 			}
diff --git a/pkg/kn/commands/channel/list.go b/pkg/kn/commands/channel/list.go
index df9db7ba..0146c3bf 100644
--- a/pkg/kn/commands/channel/list.go
+++ b/pkg/kn/commands/channel/list.go
@@ -46,7 +46,7 @@ func NewChannelListCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			channelList, err := client.ListChannel()
+			channelList, err := client.ListChannel(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/channel/list_types.go b/pkg/kn/commands/channel/list_types.go
index 6cdeadd6..daef5abf 100644
--- a/pkg/kn/commands/channel/list_types.go
+++ b/pkg/kn/commands/channel/list_types.go
@@ -16,6 +16,7 @@ limitations under the License.
 package channel
 
 import (
+	"context"
 	"fmt"
 
 	"github.com/spf13/cobra"
@@ -51,10 +52,10 @@ func NewChannelListTypesCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			channelListTypes, err := dynamicClient.ListChannelsTypes()
+			channelListTypes, err := dynamicClient.ListChannelsTypes(cmd.Context())
 			switch {
 			case knerrors.IsForbiddenError(err):
-				if channelListTypes, err = listBuiltInChannelTypes(dynamicClient); err != nil {
+				if channelListTypes, err = listBuiltInChannelTypes(cmd.Context(), dynamicClient); err != nil {
 					return knerrors.GetError(err)
 				}
 			case err != nil:
@@ -83,12 +84,12 @@ func NewChannelListTypesCommand(p *commands.KnParams) *cobra.Command {
 	return listTypesCommand
 }
 
-func listBuiltInChannelTypes(d dynamic.KnDynamicClient) (*unstructured.UnstructuredList, error) {
+func listBuiltInChannelTypes(ctx context.Context, d dynamic.KnDynamicClient) (*unstructured.UnstructuredList, error) {
 	var err error
 	uList := unstructured.UnstructuredList{}
 	gvks := messagingv1beta1.BuiltInChannelGVKs()
 	for _, gvk := range gvks {
-		_, err = d.ListChannelsUsingGVKs(&[]schema.GroupVersionKind{gvk})
+		_, err = d.ListChannelsUsingGVKs(ctx, &[]schema.GroupVersionKind{gvk})
 		if err != nil {
 			continue
 		}
diff --git a/pkg/kn/commands/flags/sink.go b/pkg/kn/commands/flags/sink.go
index b46d462c..063f2328 100644
--- a/pkg/kn/commands/flags/sink.go
+++ b/pkg/kn/commands/flags/sink.go
@@ -48,8 +48,9 @@ func (i *SinkFlags) AddWithFlagName(cmd *cobra.Command, fname, short string) {
 		"'" + flag + " channel:pipe' for a channel 'pipe', " +
 		"'" + flag + " ksvc:mysvc:mynamespace' for a Knative service 'mysvc' in another namespace 'mynamespace', " +
 		"'" + flag + " https://event.receiver.uri' for an URI with an 'http://' or 'https://' schema, " +
-		"'" + flag + " ksvc:receiver' or simply '" + flag + " receiver' for a Knative service 'receiver'. " +
-		"If a prefix is not provided, it is considered as a Knative service."
+		"'" + flag + " ksvc:receiver' or simply '" + flag + " receiver' for a Knative service 'receiver' in the current namespace. " +
+		"If a prefix is not provided, it is considered as a Knative service in the current namespace. " +
+		"If referring to a Knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly."
 
 	for _, p := range config.GlobalConfig.SinkMappings() {
 		//user configuration might override the default configuration
@@ -88,7 +89,7 @@ var sinkMappings = map[string]schema.GroupVersionResource{
 
 // ResolveSink returns the Destination referred to by the flags in the acceptor.
 // It validates that any object the user is referring to exists.
-func (i *SinkFlags) ResolveSink(knclient clientdynamic.KnDynamicClient, namespace string) (*duckv1.Destination, error) {
+func (i *SinkFlags) ResolveSink(ctx context.Context, knclient clientdynamic.KnDynamicClient, namespace string) (*duckv1.Destination, error) {
 	client := knclient.RawClient()
 	if i.sink == "" {
 		return nil, nil
@@ -107,12 +108,12 @@ func (i *SinkFlags) ResolveSink(knclient clientdynamic.KnDynamicClient, namespac
 		if prefix == "svc" || prefix == "service" {
 			return nil, fmt.Errorf("unsupported sink prefix: '%s', please use prefix 'ksvc' for knative service", prefix)
 		}
-		return nil, fmt.Errorf("unsupported sink prefix: '%s'", prefix)
+		return nil, fmt.Errorf("unsupported sink prefix: '%s', if referring to a knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly", prefix)
 	}
 	if ns != "" {
 		namespace = ns
 	}
-	obj, err := client.Resource(typ).Namespace(namespace).Get(context.TODO(), name, metav1.GetOptions{})
+	obj, err := client.Resource(typ).Namespace(namespace).Get(ctx, name, metav1.GetOptions{})
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/kn/commands/revision/delete.go b/pkg/kn/commands/revision/delete.go
index 62f7f536..61b6df1c 100644
--- a/pkg/kn/commands/revision/delete.go
+++ b/pkg/kn/commands/revision/delete.go
@@ -15,6 +15,7 @@
 package revision
 
 import (
+	"context"
 	"errors"
 	"fmt"
 	"strings"
@@ -68,7 +69,7 @@ func NewRevisionDeleteCommand(p *commands.KnParams) *cobra.Command {
 				params = append(params, v1.WithService(pruneFilter))
 			}
 			if prune || pruneAll {
-				args, err = getUnreferencedRevisionNames(params, client)
+				args, err = getUnreferencedRevisionNames(cmd.Context(), params, client)
 				if err != nil {
 					return err
 				}
@@ -84,7 +85,7 @@ func NewRevisionDeleteCommand(p *commands.KnParams) *cobra.Command {
 				if waitFlags.Wait {
 					timeout = time.Duration(waitFlags.TimeoutInSeconds) * time.Second
 				}
-				err = client.DeleteRevision(name, timeout)
+				err = client.DeleteRevision(cmd.Context(), name, timeout)
 				if err != nil {
 					errs = append(errs, err.Error())
 				} else {
@@ -106,8 +107,8 @@ func NewRevisionDeleteCommand(p *commands.KnParams) *cobra.Command {
 }
 
 // Return unreferenced revision names
-func getUnreferencedRevisionNames(lConfig []v1.ListConfig, client v1.KnServingClient) ([]string, error) {
-	revisionList, err := client.ListRevisions(lConfig...)
+func getUnreferencedRevisionNames(ctx context.Context, lConfig []v1.ListConfig, client v1.KnServingClient) ([]string, error) {
+	revisionList, err := client.ListRevisions(ctx, lConfig...)
 	if err != nil {
 		return []string{}, err
 	}
diff --git a/pkg/kn/commands/revision/describe.go b/pkg/kn/commands/revision/describe.go
index 4659d8d0..e243d5de 100644
--- a/pkg/kn/commands/revision/describe.go
+++ b/pkg/kn/commands/revision/describe.go
@@ -57,7 +57,7 @@ func NewRevisionDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			revision, err := client.GetRevision(args[0])
+			revision, err := client.GetRevision(cmd.Context(), args[0])
 			if err != nil {
 				return err
 			}
@@ -76,7 +76,7 @@ func NewRevisionDescribeCommand(p *commands.KnParams) *cobra.Command {
 			var service *servingv1.Service
 			serviceName, ok := revision.Labels[serving.ServiceLabelKey]
 			if printDetails && ok {
-				service, err = client.GetService(serviceName)
+				service, err = client.GetService(cmd.Context(), serviceName)
 				if err != nil {
 					return err
 				}
diff --git a/pkg/kn/commands/revision/list.go b/pkg/kn/commands/revision/list.go
index 4999d98e..9bdbe417 100644
--- a/pkg/kn/commands/revision/list.go
+++ b/pkg/kn/commands/revision/list.go
@@ -15,6 +15,7 @@
 package revision
 
 import (
+	"context"
 	"fmt"
 	"sort"
 	"strconv"
@@ -76,7 +77,7 @@ func NewRevisionListCommand(p *commands.KnParams) *cobra.Command {
 			}
 
 			// Query for list with filters
-			revisionList, err := client.ListRevisions(params...)
+			revisionList, err := client.ListRevisions(cmd.Context(), params...)
 			if err != nil {
 				return err
 			}
@@ -94,7 +95,7 @@ func NewRevisionListCommand(p *commands.KnParams) *cobra.Command {
 
 			// Only add temporary annotations if human readable output is requested
 			if !revisionListFlags.GenericPrintFlags.OutputFlagSpecified() {
-				err = enrichRevisionAnnotationsWithServiceData(p.NewServingClient, revisionList)
+				err = enrichRevisionAnnotationsWithServiceData(cmd.Context(), p.NewServingClient, revisionList)
 				if err != nil {
 					return err
 				}
@@ -123,7 +124,7 @@ func appendServiceFilter(lConfig []clientservingv1.ListConfig, client clientserv
 	serviceName := cmd.Flag("service").Value.String()
 
 	// Verify that service exists first
-	_, err := client.GetService(serviceName)
+	_, err := client.GetService(cmd.Context(), serviceName)
 	if err != nil {
 		return nil, err
 	}
@@ -197,8 +198,8 @@ type serviceFactoryFunc func(namespace string) (clientservingv1.KnServingClient,
 type serviceGetFunc func(namespace, serviceName string) (*servingv1.Service, error)
 
 // Create revision info with traffic and tag information (if present)
-func enrichRevisionAnnotationsWithServiceData(serviceFactory serviceFactoryFunc, revisionList *servingv1.RevisionList) error {
-	serviceLookup := serviceLookup(serviceFactory)
+func enrichRevisionAnnotationsWithServiceData(ctx context.Context, serviceFactory serviceFactoryFunc, revisionList *servingv1.RevisionList) error {
+	serviceLookup := serviceLookup(ctx, serviceFactory)
 
 	for _, revision := range revisionList.Items {
 		serviceName := revision.Labels[serving.ServiceLabelKey]
@@ -223,7 +224,7 @@ func enrichRevisionAnnotationsWithServiceData(serviceFactory serviceFactoryFunc,
 }
 
 // Create a function for being able to lookup a service for an arbitrary namespace
-func serviceLookup(serviceFactory serviceFactoryFunc) serviceGetFunc {
+func serviceLookup(ctx context.Context, serviceFactory serviceFactoryFunc) serviceGetFunc {
 
 	// Two caches: For service & clients (clients might not be necessary though)
 	serviceCache := make(map[string]*servingv1.Service)
@@ -244,7 +245,7 @@ func serviceLookup(serviceFactory serviceFactoryFunc) serviceGetFunc {
 			clientCache[namespace] = client
 		}
 
-		service, err := client.GetService(serviceName)
+		service, err := client.GetService(ctx, serviceName)
 		if err != nil {
 			return nil, err
 		}
diff --git a/pkg/kn/commands/route/describe.go b/pkg/kn/commands/route/describe.go
index d9254ea5..32a4cb81 100644
--- a/pkg/kn/commands/route/describe.go
+++ b/pkg/kn/commands/route/describe.go
@@ -48,7 +48,7 @@ func NewRouteDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			route, err := client.GetRoute(args[0])
+			route, err := client.GetRoute(cmd.Context(), args[0])
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/route/list.go b/pkg/kn/commands/route/list.go
index d66b544d..12710420 100644
--- a/pkg/kn/commands/route/list.go
+++ b/pkg/kn/commands/route/list.go
@@ -57,9 +57,9 @@ func NewRouteListCommand(p *commands.KnParams) *cobra.Command {
 			var routeList *servingv1.RouteList
 			switch len(args) {
 			case 0:
-				routeList, err = client.ListRoutes()
+				routeList, err = client.ListRoutes(cmd.Context())
 			case 1:
-				routeList, err = client.ListRoutes(clientservingv1.WithName(args[0]))
+				routeList, err = client.ListRoutes(cmd.Context(), clientservingv1.WithName(args[0]))
 			default:
 				return errors.New("'kn route list' accepts only one additional argument")
 			}
diff --git a/pkg/kn/commands/service/apply.go b/pkg/kn/commands/service/apply.go
index 254f7c20..f0771bf1 100644
--- a/pkg/kn/commands/service/apply.go
+++ b/pkg/kn/commands/service/apply.go
@@ -86,16 +86,16 @@ func NewServiceApplyCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			hasChanged, err := client.ApplyService(service)
+			hasChanged, err := client.ApplyService(cmd.Context(), service)
 			if err != nil {
 				return err
 			}
 			if !hasChanged {
 				fmt.Fprintf(cmd.OutOrStdout(), "No changes to apply to service '%s'.\n", service.Name)
 
-				return showUrl(client, service.Name, "unchanged", "", cmd.OutOrStdout())
+				return showUrl(cmd.Context(), client, service.Name, "unchanged", "", cmd.OutOrStdout())
 			}
-			return waitIfRequested(client, waitFlags, service.Name, waitDoing, waitVerb, "", cmd.OutOrStdout())
+			return waitIfRequested(cmd.Context(), client, waitFlags, service.Name, waitDoing, waitVerb, "", cmd.OutOrStdout())
 		},
 	}
 	commands.AddNamespaceFlags(serviceApplyCommand.Flags(), false)
@@ -105,7 +105,7 @@ func NewServiceApplyCommand(p *commands.KnParams) *cobra.Command {
 }
 
 func examineServiceForApply(cmd *cobra.Command, client clientservingv1.KnServingClient, serviceName string) (string, string, error) {
-	currentService, err := client.GetService(serviceName)
+	currentService, err := client.GetService(cmd.Context(), serviceName)
 	if err != nil {
 		if apierrors.IsNotFound(err) {
 			return "Creating", "created", nil
diff --git a/pkg/kn/commands/service/create.go b/pkg/kn/commands/service/create.go
index 395db100..e6b46118 100644
--- a/pkg/kn/commands/service/create.go
+++ b/pkg/kn/commands/service/create.go
@@ -15,6 +15,7 @@
 package service
 
 import (
+	"context"
 	"errors"
 	"fmt"
 	"io"
@@ -116,7 +117,7 @@ func NewServiceCreateCommand(p *commands.KnParams) *cobra.Command {
 			if err != nil {
 				return err
 			}
-			serviceExists, err := serviceExists(client, service.Name)
+			serviceExists, err := serviceExists(cmd.Context(), client, service.Name)
 			if err != nil {
 				return err
 			}
@@ -128,9 +129,9 @@ func NewServiceCreateCommand(p *commands.KnParams) *cobra.Command {
 						"cannot create service '%s' in namespace '%s' "+
 							"because the service already exists and no --force option was given", service.Name, namespace)
 				}
-				err = replaceService(client, service, waitFlags, out, targetFlag)
+				err = replaceService(cmd.Context(), client, service, waitFlags, out, targetFlag)
 			} else {
-				err = createService(client, service, waitFlags, out, targetFlag)
+				err = createService(cmd.Context(), client, service, waitFlags, out, targetFlag)
 			}
 			if err != nil {
 				return err
@@ -145,17 +146,17 @@ func NewServiceCreateCommand(p *commands.KnParams) *cobra.Command {
 	return serviceCreateCommand
 }
 
-func createService(client clientservingv1.KnServingClient, service *servingv1.Service, waitFlags commands.WaitFlags, out io.Writer, targetFlag string) error {
-	err := client.CreateService(service)
+func createService(ctx context.Context, client clientservingv1.KnServingClient, service *servingv1.Service, waitFlags commands.WaitFlags, out io.Writer, targetFlag string) error {
+	err := client.CreateService(ctx, service)
 	if err != nil {
 		return err
 	}
 
-	return waitIfRequested(client, waitFlags, service.Name, "Creating", "created", targetFlag, out)
+	return waitIfRequested(ctx, client, waitFlags, service.Name, "Creating", "created", targetFlag, out)
 }
 
-func replaceService(client clientservingv1.KnServingClient, service *servingv1.Service, waitFlags commands.WaitFlags, out io.Writer, targetFlag string) error {
-	changed, err := prepareAndUpdateService(client, service)
+func replaceService(ctx context.Context, client clientservingv1.KnServingClient, service *servingv1.Service, waitFlags commands.WaitFlags, out io.Writer, targetFlag string) error {
+	changed, err := prepareAndUpdateService(ctx, client, service)
 	if err != nil {
 		return err
 	}
@@ -163,22 +164,22 @@ func replaceService(client clientservingv1.KnServingClient, service *servingv1.S
 		fmt.Fprintf(out, "Service '%s' replaced in namespace '%s' (unchanged).\n", service.Name, client.Namespace())
 		return nil
 	}
-	return waitIfRequested(client, waitFlags, service.Name, "Replacing", "replaced", targetFlag, out)
+	return waitIfRequested(ctx, client, waitFlags, service.Name, "Replacing", "replaced", targetFlag, out)
 }
 
-func waitIfRequested(client clientservingv1.KnServingClient, waitFlags commands.WaitFlags, serviceName, verbDoing, verbDone, targetFlag string, out io.Writer) error {
+func waitIfRequested(ctx context.Context, client clientservingv1.KnServingClient, waitFlags commands.WaitFlags, serviceName string, verbDoing string, verbDone string, targetFlag string, out io.Writer) error {
 	if !waitFlags.Wait || targetFlag != "" {
 		fmt.Fprintf(out, "Service '%s' %s in namespace '%s'.\n", serviceName, verbDone, client.Namespace())
 		return nil
 	}
 	fmt.Fprintf(out, "%s service '%s' in namespace '%s':\n", verbDoing, serviceName, client.Namespace())
-	return waitForServiceToGetReady(client, serviceName, waitFlags.TimeoutInSeconds, verbDone, out)
+	return waitForServiceToGetReady(ctx, client, serviceName, waitFlags.TimeoutInSeconds, verbDone, out)
 }
 
-func prepareAndUpdateService(client clientservingv1.KnServingClient, service *servingv1.Service) (bool, error) {
+func prepareAndUpdateService(ctx context.Context, client clientservingv1.KnServingClient, service *servingv1.Service) (bool, error) {
 	var retries = 0
 	for {
-		existingService, err := client.GetService(service.Name)
+		existingService, err := client.GetService(ctx, service.Name)
 		if err != nil {
 			return false, err
 		}
@@ -204,7 +205,7 @@ func prepareAndUpdateService(client clientservingv1.KnServingClient, service *se
 		}
 
 		service.ResourceVersion = existingService.ResourceVersion
-		changed, err := client.UpdateService(service)
+		changed, err := client.UpdateService(ctx, service)
 		if err != nil {
 			// Retry to update when a resource version conflict exists
 			if apierrors.IsConflict(err) && retries < MaxUpdateRetries {
@@ -217,18 +218,18 @@ func prepareAndUpdateService(client clientservingv1.KnServingClient, service *se
 	}
 }
 
-func waitForServiceToGetReady(client clientservingv1.KnServingClient, name string, timeout int, verbDone string, out io.Writer) error {
+func waitForServiceToGetReady(ctx context.Context, client clientservingv1.KnServingClient, name string, timeout int, verbDone string, out io.Writer) error {
 	fmt.Fprintln(out, "")
-	err := waitForService(client, name, out, timeout)
+	err := waitForService(ctx, client, name, out, timeout)
 	if err != nil {
 		return err
 	}
 	fmt.Fprintln(out, "")
-	return showUrl(client, name, "", verbDone, out)
+	return showUrl(ctx, client, name, "", verbDone, out)
 }
 
-func serviceExists(client clientservingv1.KnServingClient, name string) (bool, error) {
-	_, err := client.GetService(name)
+func serviceExists(ctx context.Context, client clientservingv1.KnServingClient, name string) (bool, error) {
+	_, err := client.GetService(ctx, name)
 	if apierrors.IsNotFound(err) {
 		return false, nil
 	}
diff --git a/pkg/kn/commands/service/delete.go b/pkg/kn/commands/service/delete.go
index a5827545..0307477f 100644
--- a/pkg/kn/commands/service/delete.go
+++ b/pkg/kn/commands/service/delete.go
@@ -15,6 +15,7 @@
 package service
 
 import (
+	"context"
 	"errors"
 	"fmt"
 	"strings"
@@ -73,7 +74,7 @@ func NewServiceDeleteCommand(p *commands.KnParams) *cobra.Command {
 			}
 
 			if all {
-				args, err = getServiceNames(client)
+				args, err = getServiceNames(cmd.Context(), client)
 				if err != nil {
 					return err
 				}
@@ -89,7 +90,7 @@ func NewServiceDeleteCommand(p *commands.KnParams) *cobra.Command {
 				if waitFlags.Wait {
 					timeout = time.Duration(waitFlags.TimeoutInSeconds) * time.Second
 				}
-				err = client.DeleteService(name, timeout)
+				err = client.DeleteService(cmd.Context(), name, timeout)
 				if err != nil {
 					errs = append(errs, err.Error())
 				} else {
@@ -110,8 +111,8 @@ func NewServiceDeleteCommand(p *commands.KnParams) *cobra.Command {
 	return serviceDeleteCommand
 }
 
-func getServiceNames(client clientservingv1.KnServingClient) ([]string, error) {
-	serviceList, err := client.ListServices()
+func getServiceNames(ctx context.Context, client clientservingv1.KnServingClient) ([]string, error) {
+	serviceList, err := client.ListServices(ctx)
 	if err != nil {
 		return []string{}, err
 	}
diff --git a/pkg/kn/commands/service/describe.go b/pkg/kn/commands/service/describe.go
index 2b15f139..d9793bce 100644
--- a/pkg/kn/commands/service/describe.go
+++ b/pkg/kn/commands/service/describe.go
@@ -15,6 +15,7 @@
 package service
 
 import (
+	"context"
 	"errors"
 	"fmt"
 	"io"
@@ -112,7 +113,7 @@ func NewServiceDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			service, err := client.GetService(serviceName)
+			service, err := client.GetService(cmd.Context(), serviceName)
 			if err != nil {
 				return err
 			}
@@ -136,7 +137,7 @@ func NewServiceDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			revisionDescs, err := getRevisionDescriptions(client, service, printDetails)
+			revisionDescs, err := getRevisionDescriptions(cmd.Context(), client, service, printDetails)
 			if err != nil {
 				return err
 			}
@@ -274,7 +275,7 @@ func formatBullet(percentage int64, status corev1.ConditionStatus) string {
 
 // Call the backend to query revisions for the given service and build up
 // the view objects used for output
-func getRevisionDescriptions(client clientservingv1.KnServingClient, service *servingv1.Service, withDetails bool) ([]*revisionDesc, error) {
+func getRevisionDescriptions(ctx context.Context, client clientservingv1.KnServingClient, service *servingv1.Service, withDetails bool) ([]*revisionDesc, error) {
 	revisionsSeen := sets.NewString()
 	revisionDescs := []*revisionDesc{}
 
@@ -282,7 +283,7 @@ func getRevisionDescriptions(client clientservingv1.KnServingClient, service *se
 	var err error
 	for i := range trafficTargets {
 		target := trafficTargets[i]
-		revision, err := extractRevisionFromTarget(client, target)
+		revision, err := extractRevisionFromTarget(ctx, client, target)
 		if err != nil {
 			return nil, fmt.Errorf("cannot extract revision from service %s: %w", service.Name, err)
 		}
@@ -293,11 +294,11 @@ func getRevisionDescriptions(client clientservingv1.KnServingClient, service *se
 		}
 		revisionDescs = append(revisionDescs, desc)
 	}
-	if revisionDescs, err = completeWithLatestRevisions(client, service, revisionsSeen, revisionDescs); err != nil {
+	if revisionDescs, err = completeWithLatestRevisions(ctx, client, service, revisionsSeen, revisionDescs); err != nil {
 		return nil, err
 	}
 	if withDetails {
-		if revisionDescs, err = completeWithUntargetedRevisions(client, service, revisionsSeen, revisionDescs); err != nil {
+		if revisionDescs, err = completeWithUntargetedRevisions(ctx, client, service, revisionsSeen, revisionDescs); err != nil {
 			return nil, err
 		}
 	}
@@ -312,13 +313,13 @@ func orderByConfigurationGeneration(descs []*revisionDesc) []*revisionDesc {
 	return descs
 }
 
-func completeWithLatestRevisions(client clientservingv1.KnServingClient, service *servingv1.Service, revisionsSeen sets.String, descs []*revisionDesc) ([]*revisionDesc, error) {
+func completeWithLatestRevisions(ctx context.Context, client clientservingv1.KnServingClient, service *servingv1.Service, revisionsSeen sets.String, descs []*revisionDesc) ([]*revisionDesc, error) {
 	for _, revisionName := range []string{service.Status.LatestCreatedRevisionName, service.Status.LatestReadyRevisionName} {
 		if revisionName == "" || revisionsSeen.Has(revisionName) {
 			continue
 		}
 		revisionsSeen.Insert(revisionName)
-		rev, err := client.GetRevision(revisionName)
+		rev, err := client.GetRevision(ctx, revisionName)
 		if err != nil {
 			return nil, err
 		}
@@ -331,8 +332,8 @@ func completeWithLatestRevisions(client clientservingv1.KnServingClient, service
 	return descs, nil
 }
 
-func completeWithUntargetedRevisions(client clientservingv1.KnServingClient, service *servingv1.Service, revisionsSeen sets.String, descs []*revisionDesc) ([]*revisionDesc, error) {
-	revisions, err := client.ListRevisions(clientservingv1.WithService(service.Name))
+func completeWithUntargetedRevisions(ctx context.Context, client clientservingv1.KnServingClient, service *servingv1.Service, revisionsSeen sets.String, descs []*revisionDesc) ([]*revisionDesc, error) {
+	revisions, err := client.ListRevisions(ctx, clientservingv1.WithService(service.Name))
 	if err != nil {
 		return nil, err
 	}
@@ -380,20 +381,20 @@ func addTargetInfo(desc *revisionDesc, target *servingv1.TrafficTarget) {
 	}
 }
 
-func extractRevisionFromTarget(client clientservingv1.KnServingClient, target servingv1.TrafficTarget) (*servingv1.Revision, error) {
+func extractRevisionFromTarget(ctx context.Context, client clientservingv1.KnServingClient, target servingv1.TrafficTarget) (*servingv1.Revision, error) {
 	var revisionName = target.RevisionName
 	if revisionName == "" {
 		configurationName := target.ConfigurationName
 		if configurationName == "" {
 			return nil, fmt.Errorf("neither RevisionName nor ConfigurationName set")
 		}
-		configuration, err := client.GetConfiguration(configurationName)
+		configuration, err := client.GetConfiguration(ctx, configurationName)
 		if err != nil {
 			return nil, err
 		}
 		revisionName = configuration.Status.LatestCreatedRevisionName
 	}
-	return client.GetRevision(revisionName)
+	return client.GetRevision(ctx, revisionName)
 }
 
 func extractURL(service *servingv1.Service) string {
diff --git a/pkg/kn/commands/service/export.go b/pkg/kn/commands/service/export.go
index 9cfe6d00..e54a1453 100644
--- a/pkg/kn/commands/service/export.go
+++ b/pkg/kn/commands/service/export.go
@@ -15,6 +15,7 @@
 package service
 
 import (
+	"context"
 	"errors"
 	"fmt"
 
@@ -110,7 +111,7 @@ func NewServiceExportCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			service, err := client.GetService(serviceName)
+			service, err := client.GetService(cmd.Context(), serviceName)
 			if err != nil {
 				return err
 			}
@@ -141,14 +142,14 @@ func exportService(cmd *cobra.Command, service *servingv1.Service, client client
 	}
 
 	if mode == ModeReplay {
-		svcList, err := exportServiceListForReplay(service.DeepCopy(), client, withRevisions)
+		svcList, err := exportServiceListForReplay(cmd.Context(), service.DeepCopy(), client, withRevisions)
 		if err != nil {
 			return err
 		}
 		return printer.PrintObj(svcList, cmd.OutOrStdout())
 	}
 	// default is export mode
-	knExport, err := exportForKNImport(service.DeepCopy(), client, withRevisions)
+	knExport, err := exportForKNImport(cmd.Context(), service.DeepCopy(), client, withRevisions)
 	if err != nil {
 		return err
 	}
@@ -219,13 +220,13 @@ func constructServiceFromRevision(latestSvc *servingv1.Service, revision *servin
 	return exportedSvc
 }
 
-func exportServiceListForReplay(latestSvc *servingv1.Service, client clientservingv1.KnServingClient, withRevisions bool) (runtime.Object, error) {
+func exportServiceListForReplay(ctx context.Context, latestSvc *servingv1.Service, client clientservingv1.KnServingClient, withRevisions bool) (runtime.Object, error) {
 	if !withRevisions {
 		return exportLatestService(latestSvc, false), nil
 	}
 	var exportedSvcItems []servingv1.Service
 
-	revisionList, revsMap, err := getRevisionsToExport(latestSvc, client)
+	revisionList, revsMap, err := getRevisionsToExport(ctx, latestSvc, client)
 	if err != nil {
 		return nil, err
 	}
@@ -252,11 +253,11 @@ func exportServiceListForReplay(latestSvc *servingv1.Service, client clientservi
 	return exportedSvcList, nil
 }
 
-func exportForKNImport(latestSvc *servingv1.Service, client clientservingv1.KnServingClient, withRevisions bool) (*clientv1alpha1.Export, error) {
+func exportForKNImport(ctx context.Context, latestSvc *servingv1.Service, client clientservingv1.KnServingClient, withRevisions bool) (*clientv1alpha1.Export, error) {
 	var exportedRevItems []servingv1.Revision
 	revisionHistoryCount := 0
 	if withRevisions {
-		revisionList, revsMap, err := getRevisionsToExport(latestSvc, client)
+		revisionList, revsMap, err := getRevisionsToExport(ctx, latestSvc, client)
 		if err != nil {
 			return nil, err
 		}
@@ -285,12 +286,12 @@ func exportForKNImport(latestSvc *servingv1.Service, client clientservingv1.KnSe
 	return knExport, nil
 }
 
-func getRevisionsToExport(latestSvc *servingv1.Service, client clientservingv1.KnServingClient) (*servingv1.RevisionList, map[string]bool, error) {
+func getRevisionsToExport(ctx context.Context, latestSvc *servingv1.Service, client clientservingv1.KnServingClient) (*servingv1.RevisionList, map[string]bool, error) {
 	//get revisions to export from traffic
 	revsMap := getRoutedRevisions(latestSvc)
 
 	// Query for list with filters
-	revisionList, err := client.ListRevisions(clientservingv1.WithService(latestSvc.ObjectMeta.Name))
+	revisionList, err := client.ListRevisions(ctx, clientservingv1.WithService(latestSvc.ObjectMeta.Name))
 	if err != nil {
 		return nil, nil, err
 	}
diff --git a/pkg/kn/commands/service/import.go b/pkg/kn/commands/service/import.go
index 55ee327e..471e1752 100644
--- a/pkg/kn/commands/service/import.go
+++ b/pkg/kn/commands/service/import.go
@@ -15,6 +15,7 @@
 package service
 
 import (
+	"context"
 	"errors"
 	"fmt"
 	"io"
@@ -63,7 +64,7 @@ func NewServiceImportCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			return importWithOwnerRef(client, filename, cmd.OutOrStdout(), waitFlags)
+			return importWithOwnerRef(cmd.Context(), client, filename, cmd.OutOrStdout(), waitFlags)
 		},
 	}
 	flags := command.Flags()
@@ -73,7 +74,7 @@ func NewServiceImportCommand(p *commands.KnParams) *cobra.Command {
 	return command
 }
 
-func importWithOwnerRef(client clientservingv1.KnServingClient, filename string, out io.Writer, waitFlags commands.WaitFlags) error {
+func importWithOwnerRef(ctx context.Context, client clientservingv1.KnServingClient, filename string, out io.Writer, waitFlags commands.WaitFlags) error {
 	var export clientv1alpha1.Export
 	file, err := os.Open(filename)
 	if err != nil {
@@ -91,7 +92,7 @@ func importWithOwnerRef(client clientservingv1.KnServingClient, filename string,
 	serviceName := export.Spec.Service.Name
 
 	// Return error if service already exists
-	svcExists, err := serviceExists(client, serviceName)
+	svcExists, err := serviceExists(ctx, client, serviceName)
 	if err != nil {
 		return err
 	}
@@ -100,13 +101,13 @@ func importWithOwnerRef(client clientservingv1.KnServingClient, filename string,
 			serviceName, client.Namespace())
 	}
 
-	err = client.CreateService(&export.Spec.Service)
+	err = client.CreateService(ctx, &export.Spec.Service)
 	if err != nil {
 		return err
 	}
 
 	// Retrieve current Configuration to be use in OwnerReference
-	currentConf, err := getConfigurationWithRetry(client, serviceName)
+	currentConf, err := getConfigurationWithRetry(ctx, client, serviceName)
 	if err != nil {
 		return err
 	}
@@ -117,26 +118,26 @@ func importWithOwnerRef(client clientservingv1.KnServingClient, filename string,
 			tmp := r.DeepCopy()
 			// OwnerRef ensures that Revisions are recognized by controller
 			tmp.OwnerReferences = []metav1.OwnerReference{*kmeta.NewControllerRef(currentConf)}
-			if err = client.CreateRevision(tmp); err != nil {
+			if err = client.CreateRevision(ctx, tmp); err != nil {
 				return err
 			}
 		}
 	}
 
-	err = waitIfRequested(client, waitFlags, serviceName, "Importing", "imported", "", out)
+	err = waitIfRequested(ctx, client, waitFlags, serviceName, "Importing", "imported", "", out)
 	if err != nil {
 		return err
 	}
 	return err
 }
 
-func getConfigurationWithRetry(client clientservingv1.KnServingClient, name string) (*servingv1.Configuration, error) {
+func getConfigurationWithRetry(ctx context.Context, client clientservingv1.KnServingClient, name string) (*servingv1.Configuration, error) {
 	var conf *servingv1.Configuration
 	var err error
 	err = retry.OnError(retry.DefaultBackoff, func(err error) bool {
 		return apierrors.IsNotFound(err)
 	}, func() error {
-		conf, err = client.GetConfiguration(name)
+		conf, err = client.GetConfiguration(ctx, name)
 		return err
 	})
 	return conf, err
diff --git a/pkg/kn/commands/service/list.go b/pkg/kn/commands/service/list.go
index 8990b2b9..32a28caf 100644
--- a/pkg/kn/commands/service/list.go
+++ b/pkg/kn/commands/service/list.go
@@ -15,6 +15,7 @@
 package service
 
 import (
+	"context"
 	"fmt"
 	"sort"
 
@@ -59,7 +60,7 @@ func NewServiceListCommand(p *commands.KnParams) *cobra.Command {
 			if err != nil {
 				return err
 			}
-			serviceList, err := getServiceInfo(args, client)
+			serviceList, err := getServiceInfo(cmd.Context(), args, client)
 			if err != nil {
 				return err
 			}
@@ -93,16 +94,16 @@ func NewServiceListCommand(p *commands.KnParams) *cobra.Command {
 	return serviceListCommand
 }
 
-func getServiceInfo(args []string, client clientservingv1.KnServingClient) (*servingv1.ServiceList, error) {
+func getServiceInfo(ctx context.Context, args []string, client clientservingv1.KnServingClient) (*servingv1.ServiceList, error) {
 	var (
 		serviceList *servingv1.ServiceList
 		err         error
 	)
 	switch len(args) {
 	case 0:
-		serviceList, err = client.ListServices()
+		serviceList, err = client.ListServices(ctx)
 	case 1:
-		serviceList, err = client.ListServices(clientservingv1.WithName(args[0]))
+		serviceList, err = client.ListServices(ctx, clientservingv1.WithName(args[0]))
 	default:
 		return nil, fmt.Errorf("'kn service list' accepts maximum 1 argument")
 	}
diff --git a/pkg/kn/commands/service/service.go b/pkg/kn/commands/service/service.go
index 3a8cd61b..0471a429 100644
--- a/pkg/kn/commands/service/service.go
+++ b/pkg/kn/commands/service/service.go
@@ -15,6 +15,7 @@
 package service
 
 import (
+	"context"
 	"fmt"
 	"io"
 	"time"
@@ -48,8 +49,8 @@ func NewServiceCommand(p *commands.KnParams) *cobra.Command {
 	return serviceCmd
 }
 
-func waitForService(client clientservingv1.KnServingClient, serviceName string, out io.Writer, timeout int) error {
-	err, duration := client.WaitForService(serviceName, time.Duration(timeout)*time.Second, wait.SimpleMessageCallback(out))
+func waitForService(ctx context.Context, client clientservingv1.KnServingClient, serviceName string, out io.Writer, timeout int) error {
+	err, duration := client.WaitForService(ctx, serviceName, time.Duration(timeout)*time.Second, wait.SimpleMessageCallback(out))
 	if err != nil {
 		return err
 	}
@@ -57,8 +58,8 @@ func waitForService(client clientservingv1.KnServingClient, serviceName string,
 	return nil
 }
 
-func showUrl(client clientservingv1.KnServingClient, serviceName string, originalRevision string, what string, out io.Writer) error {
-	service, err := client.GetService(serviceName)
+func showUrl(ctx context.Context, client clientservingv1.KnServingClient, serviceName string, originalRevision string, what string, out io.Writer) error {
+	service, err := client.GetService(ctx, serviceName)
 	if err != nil {
 		return fmt.Errorf("cannot fetch service '%s' in namespace '%s' for extracting the URL: %w", serviceName, client.Namespace(), err)
 	}
diff --git a/pkg/kn/commands/service/update.go b/pkg/kn/commands/service/update.go
index 6343824b..08d23926 100644
--- a/pkg/kn/commands/service/update.go
+++ b/pkg/kn/commands/service/update.go
@@ -86,7 +86,7 @@ func NewServiceUpdateCommand(p *commands.KnParams) *cobra.Command {
 				latestRevisionBeforeUpdate = service.Status.LatestReadyRevisionName
 				var baseRevision *servingv1.Revision
 				if !cmd.Flags().Changed("image") && editFlags.LockToDigest {
-					baseRevision, err = client.GetBaseRevision(service)
+					baseRevision, err = client.GetBaseRevision(cmd.Context(), service)
 					var errNoBaseRevision clientservingv1.NoBaseRevisionError
 					if errors.As(err, &errNoBaseRevision) {
 						fmt.Fprintf(cmd.OutOrStdout(), "Warning: No revision found to update image digest")
@@ -109,7 +109,7 @@ func NewServiceUpdateCommand(p *commands.KnParams) *cobra.Command {
 			}
 
 			// Do the actual update with retry in case of conflicts
-			changed, err := client.UpdateServiceWithRetry(name, updateFunc, MaxUpdateRetries)
+			changed, err := client.UpdateServiceWithRetry(cmd.Context(), name, updateFunc, MaxUpdateRetries)
 			if err != nil {
 				return err
 			}
@@ -125,12 +125,12 @@ func NewServiceUpdateCommand(p *commands.KnParams) *cobra.Command {
 			if waitFlags.Wait && targetFlag == "" {
 				fmt.Fprintf(out, "Updating Service '%s' in namespace '%s':\n", args[0], namespace)
 				fmt.Fprintln(out, "")
-				err := waitForService(client, name, out, waitFlags.TimeoutInSeconds)
+				err := waitForService(cmd.Context(), client, name, out, waitFlags.TimeoutInSeconds)
 				if err != nil {
 					return err
 				}
 				fmt.Fprintln(out, "")
-				return showUrl(client, name, latestRevisionBeforeUpdate, "updated", out)
+				return showUrl(cmd.Context(), client, name, latestRevisionBeforeUpdate, "updated", out)
 			} else {
 				fmt.Fprintf(out, "Service '%s' updated in namespace '%s'.\n", args[0], namespace)
 			}
diff --git a/pkg/kn/commands/source/apiserver/create.go b/pkg/kn/commands/source/apiserver/create.go
index 17d63e7c..2a789d0c 100644
--- a/pkg/kn/commands/source/apiserver/create.go
+++ b/pkg/kn/commands/source/apiserver/create.go
@@ -56,7 +56,7 @@ func NewAPIServerCreateCommand(p *commands.KnParams) *cobra.Command {
 			if err != nil {
 				return err
 			}
-			objectRef, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+			objectRef, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return fmt.Errorf(
 					"cannot create ApiServerSource '%s' in namespace '%s' "+
@@ -81,7 +81,7 @@ func NewAPIServerCreateCommand(p *commands.KnParams) *cobra.Command {
 				Resources(resources).
 				CloudEventOverrides(ceOverridesMap, ceOverridesToRemove)
 
-			err = apiSourceClient.CreateAPIServerSource(b.Build())
+			err = apiSourceClient.CreateAPIServerSource(cmd.Context(), b.Build())
 
 			if err != nil {
 				return fmt.Errorf(
diff --git a/pkg/kn/commands/source/apiserver/delete.go b/pkg/kn/commands/source/apiserver/delete.go
index b4ce0b7f..4490ea30 100644
--- a/pkg/kn/commands/source/apiserver/delete.go
+++ b/pkg/kn/commands/source/apiserver/delete.go
@@ -47,7 +47,7 @@ func NewAPIServerDeleteCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			err = apiSourceClient.DeleteAPIServerSource(name)
+			err = apiSourceClient.DeleteAPIServerSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/apiserver/describe.go b/pkg/kn/commands/source/apiserver/describe.go
index 331e4be3..489499ed 100644
--- a/pkg/kn/commands/source/apiserver/describe.go
+++ b/pkg/kn/commands/source/apiserver/describe.go
@@ -56,7 +56,7 @@ func NewAPIServerDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			apiSource, err := apiSourceClient.GetAPIServerSource(name)
+			apiSource, err := apiSourceClient.GetAPIServerSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/apiserver/list.go b/pkg/kn/commands/source/apiserver/list.go
index 5d8e64de..b4ff1775 100644
--- a/pkg/kn/commands/source/apiserver/list.go
+++ b/pkg/kn/commands/source/apiserver/list.go
@@ -45,7 +45,7 @@ func NewAPIServerListCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			sourceList, err := apiSourceClient.ListAPIServerSource()
+			sourceList, err := apiSourceClient.ListAPIServerSource(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/apiserver/update.go b/pkg/kn/commands/source/apiserver/update.go
index cb0ef290..a96ffa3a 100644
--- a/pkg/kn/commands/source/apiserver/update.go
+++ b/pkg/kn/commands/source/apiserver/update.go
@@ -60,7 +60,7 @@ func NewAPIServerUpdateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			source, err := sourcesClient.GetAPIServerSource(name)
+			source, err := sourcesClient.GetAPIServerSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
@@ -86,7 +86,7 @@ func NewAPIServerUpdateCommand(p *commands.KnParams) *cobra.Command {
 			}
 
 			if cmd.Flags().Changed("sink") {
-				objectRef, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+				objectRef, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 				if err != nil {
 					return err
 				}
@@ -102,7 +102,7 @@ func NewAPIServerUpdateCommand(p *commands.KnParams) *cobra.Command {
 				b.CloudEventOverrides(ceOverridesMap, ceOverridesToRemove)
 			}
 
-			err = sourcesClient.UpdateAPIServerSource(b.Build())
+			err = sourcesClient.UpdateAPIServerSource(cmd.Context(), b.Build())
 			if err == nil {
 				fmt.Fprintf(cmd.OutOrStdout(), "ApiServer source '%s' updated in namespace '%s'.\n", args[0], namespace)
 			}
diff --git a/pkg/kn/commands/source/binding/create.go b/pkg/kn/commands/source/binding/create.go
index b1edcafe..c8e7b263 100644
--- a/pkg/kn/commands/source/binding/create.go
+++ b/pkg/kn/commands/source/binding/create.go
@@ -59,7 +59,7 @@ func NewBindingCreateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			destination, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+			destination, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
@@ -85,7 +85,7 @@ func NewBindingCreateCommand(p *commands.KnParams) *cobra.Command {
 			if err != nil {
 				return err
 			}
-			err = sinkBindingClient.CreateSinkBinding(binding)
+			err = sinkBindingClient.CreateSinkBinding(cmd.Context(), binding)
 			if err == nil {
 				fmt.Fprintf(cmd.OutOrStdout(), "Sink binding '%s' created in namespace '%s'.\n", args[0], sinkBindingClient.Namespace())
 			}
diff --git a/pkg/kn/commands/source/binding/delete.go b/pkg/kn/commands/source/binding/delete.go
index 84c9fc07..608d3eac 100644
--- a/pkg/kn/commands/source/binding/delete.go
+++ b/pkg/kn/commands/source/binding/delete.go
@@ -41,7 +41,7 @@ func NewBindingDeleteCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			err = bindingClient.DeleteSinkBinding(name)
+			err = bindingClient.DeleteSinkBinding(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/binding/describe.go b/pkg/kn/commands/source/binding/describe.go
index 9d86d17c..aa4a54a3 100644
--- a/pkg/kn/commands/source/binding/describe.go
+++ b/pkg/kn/commands/source/binding/describe.go
@@ -57,7 +57,7 @@ func NewBindingDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			binding, err := bindingClient.GetSinkBinding(name)
+			binding, err := bindingClient.GetSinkBinding(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/binding/list.go b/pkg/kn/commands/source/binding/list.go
index 6baab0f4..63c97136 100644
--- a/pkg/kn/commands/source/binding/list.go
+++ b/pkg/kn/commands/source/binding/list.go
@@ -44,7 +44,7 @@ func NewBindingListCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			sourceList, err := bindingClient.ListSinkBindings()
+			sourceList, err := bindingClient.ListSinkBindings(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/binding/update.go b/pkg/kn/commands/source/binding/update.go
index 9b499cce..2f969518 100644
--- a/pkg/kn/commands/source/binding/update.go
+++ b/pkg/kn/commands/source/binding/update.go
@@ -58,7 +58,7 @@ func NewBindingUpdateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			source, err := sinkBindingClient.GetSinkBinding(name)
+			source, err := sinkBindingClient.GetSinkBinding(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
@@ -68,7 +68,7 @@ func NewBindingUpdateCommand(p *commands.KnParams) *cobra.Command {
 
 			b := v1alpha12.NewSinkBindingBuilderFromExisting(source)
 			if cmd.Flags().Changed("sink") {
-				destination, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+				destination, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 				if err != nil {
 					return err
 				}
@@ -93,7 +93,7 @@ func NewBindingUpdateCommand(p *commands.KnParams) *cobra.Command {
 			if err != nil {
 				return err
 			}
-			err = sinkBindingClient.UpdateSinkBinding(binding)
+			err = sinkBindingClient.UpdateSinkBinding(cmd.Context(), binding)
 			if err == nil {
 				fmt.Fprintf(cmd.OutOrStdout(), "Sink binding '%s' updated in namespace '%s'.\n", name, sinkBindingClient.Namespace())
 			}
diff --git a/pkg/kn/commands/source/container/create.go b/pkg/kn/commands/source/container/create.go
index 97c9313e..0d500470 100644
--- a/pkg/kn/commands/source/container/create.go
+++ b/pkg/kn/commands/source/container/create.go
@@ -59,7 +59,7 @@ func NewContainerCreateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			objectRef, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+			objectRef, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return fmt.Errorf(
 					"cannot create ContainerSource '%s' in namespace '%s' "+
@@ -75,7 +75,7 @@ func NewContainerCreateCommand(p *commands.KnParams) *cobra.Command {
 			}
 
 			b := v1alpha2.NewContainerSourceBuilder(name).Sink(*objectRef).PodSpec(*podSpec)
-			err = srcClient.CreateContainerSource(b.Build())
+			err = srcClient.CreateContainerSource(cmd.Context(), b.Build())
 			if err != nil {
 				return fmt.Errorf(
 					"cannot create ContainerSource '%s' in namespace '%s' "+
diff --git a/pkg/kn/commands/source/container/delete.go b/pkg/kn/commands/source/container/delete.go
index a486431a..5374b452 100644
--- a/pkg/kn/commands/source/container/delete.go
+++ b/pkg/kn/commands/source/container/delete.go
@@ -50,7 +50,7 @@ func NewContainerDeleteCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			err = srcClient.DeleteContainerSource(name)
+			err = srcClient.DeleteContainerSource(name, cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/container/describe.go b/pkg/kn/commands/source/container/describe.go
index 6d3fa69c..1925bf0f 100644
--- a/pkg/kn/commands/source/container/describe.go
+++ b/pkg/kn/commands/source/container/describe.go
@@ -47,7 +47,7 @@ func NewContainerDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			source, err := sourceClient.GetContainerSource(name)
+			source, err := sourceClient.GetContainerSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/container/list.go b/pkg/kn/commands/source/container/list.go
index 5f830ae2..f61be2e6 100644
--- a/pkg/kn/commands/source/container/list.go
+++ b/pkg/kn/commands/source/container/list.go
@@ -45,7 +45,7 @@ func NewContainerListCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			sourceList, err := containerClient.ListContainerSources()
+			sourceList, err := containerClient.ListContainerSources(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/container/update.go b/pkg/kn/commands/source/container/update.go
index 28c7e13e..3e2e9f83 100644
--- a/pkg/kn/commands/source/container/update.go
+++ b/pkg/kn/commands/source/container/update.go
@@ -59,7 +59,7 @@ func NewContainerUpdateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			source, err := srcClient.GetContainerSource(name)
+			source, err := srcClient.GetContainerSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
@@ -78,7 +78,7 @@ func NewContainerUpdateCommand(p *commands.KnParams) *cobra.Command {
 			b.PodSpec(podSpec)
 
 			if cmd.Flags().Changed("sink") {
-				objectRef, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+				objectRef, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 				if err != nil {
 					return fmt.Errorf(
 						"cannot update ContainerSource '%s' in namespace '%s' "+
@@ -87,7 +87,7 @@ func NewContainerUpdateCommand(p *commands.KnParams) *cobra.Command {
 				b.Sink(*objectRef)
 			}
 
-			err = srcClient.UpdateContainerSource(b.Build())
+			err = srcClient.UpdateContainerSource(cmd.Context(), b.Build())
 			if err != nil {
 				return fmt.Errorf(
 					"cannot update ContainerSource '%s' in namespace '%s' "+
diff --git a/pkg/kn/commands/source/list.go b/pkg/kn/commands/source/list.go
index 13e2406b..53e53ed7 100644
--- a/pkg/kn/commands/source/list.go
+++ b/pkg/kn/commands/source/list.go
@@ -61,12 +61,12 @@ func NewListCommand(p *commands.KnParams) *cobra.Command {
 				filters = append(filters, dynamic.WithTypeFilter(filter))
 			}
 
-			sourceList, err := dynamicClient.ListSources(filters...)
+			sourceList, err := dynamicClient.ListSources(cmd.Context(), filters...)
 
 			switch {
 			case knerrors.IsForbiddenError(err):
 				gvks := sourcesv1alpha2.BuiltInSourcesGVKs()
-				if sourceList, err = dynamicClient.ListSourcesUsingGVKs(&gvks, filters...); err != nil {
+				if sourceList, err = dynamicClient.ListSourcesUsingGVKs(cmd.Context(), &gvks, filters...); err != nil {
 					return knerrors.GetError(err)
 				}
 			case err != nil:
diff --git a/pkg/kn/commands/source/list_types.go b/pkg/kn/commands/source/list_types.go
index 3454a7a9..cca0cf42 100644
--- a/pkg/kn/commands/source/list_types.go
+++ b/pkg/kn/commands/source/list_types.go
@@ -15,6 +15,7 @@
 package source
 
 import (
+	"context"
 	"fmt"
 
 	"github.com/spf13/cobra"
@@ -51,10 +52,10 @@ func NewListTypesCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			sourceListTypes, err := dynamicClient.ListSourcesTypes()
+			sourceListTypes, err := dynamicClient.ListSourcesTypes(cmd.Context())
 			switch {
 			case knerrors.IsForbiddenError(err):
-				if sourceListTypes, err = listBuiltInSourceTypes(dynamicClient); err != nil {
+				if sourceListTypes, err = listBuiltInSourceTypes(cmd.Context(), dynamicClient); err != nil {
 					return knerrors.GetError(err)
 				}
 			case err != nil:
@@ -83,12 +84,12 @@ func NewListTypesCommand(p *commands.KnParams) *cobra.Command {
 	return listTypesCommand
 }
 
-func listBuiltInSourceTypes(d dynamic.KnDynamicClient) (*unstructured.UnstructuredList, error) {
+func listBuiltInSourceTypes(ctx context.Context, d dynamic.KnDynamicClient) (*unstructured.UnstructuredList, error) {
 	var err error
 	uList := unstructured.UnstructuredList{}
 	gvks := sourcesv1alpha2.BuiltInSourcesGVKs()
 	for _, gvk := range gvks {
-		_, err = d.ListSourcesUsingGVKs(&[]schema.GroupVersionKind{gvk})
+		_, err = d.ListSourcesUsingGVKs(ctx, &[]schema.GroupVersionKind{gvk})
 		if err != nil {
 			continue
 		}
diff --git a/pkg/kn/commands/source/ping/create.go b/pkg/kn/commands/source/ping/create.go
index 45abc2c5..d1c01fc4 100644
--- a/pkg/kn/commands/source/ping/create.go
+++ b/pkg/kn/commands/source/ping/create.go
@@ -59,7 +59,7 @@ func NewPingCreateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			destination, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+			destination, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
@@ -70,13 +70,12 @@ func NewPingCreateCommand(p *commands.KnParams) *cobra.Command {
 			}
 			ceOverridesToRemove := util.ParseMinusSuffix(ceOverridesMap)
 
-			err = pingSourceClient.CreatePingSource(
-				v1alpha2.NewPingSourceBuilder(name).
-					Schedule(updateFlags.schedule).
-					JsonData(updateFlags.data).
-					Sink(*destination).
-					CloudEventOverrides(ceOverridesMap, ceOverridesToRemove).
-					Build())
+			err = pingSourceClient.CreatePingSource(cmd.Context(), v1alpha2.NewPingSourceBuilder(name).
+				Schedule(updateFlags.schedule).
+				JsonData(updateFlags.data).
+				Sink(*destination).
+				CloudEventOverrides(ceOverridesMap, ceOverridesToRemove).
+				Build())
 			if err == nil {
 				fmt.Fprintf(cmd.OutOrStdout(), "Ping source '%s' created in namespace '%s'.\n", args[0], pingSourceClient.Namespace())
 			}
diff --git a/pkg/kn/commands/source/ping/delete.go b/pkg/kn/commands/source/ping/delete.go
index 3dcecaf2..a2557687 100644
--- a/pkg/kn/commands/source/ping/delete.go
+++ b/pkg/kn/commands/source/ping/delete.go
@@ -41,7 +41,7 @@ func NewPingDeleteCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			err = pingClient.DeletePingSource(name)
+			err = pingClient.DeletePingSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/ping/describe.go b/pkg/kn/commands/source/ping/describe.go
index aa6229db..bcf1f887 100644
--- a/pkg/kn/commands/source/ping/describe.go
+++ b/pkg/kn/commands/source/ping/describe.go
@@ -55,7 +55,7 @@ func NewPingDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			pingSource, err := pingSourceClient.GetPingSource(name)
+			pingSource, err := pingSourceClient.GetPingSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/ping/list.go b/pkg/kn/commands/source/ping/list.go
index 51667d5f..e8edeaa0 100644
--- a/pkg/kn/commands/source/ping/list.go
+++ b/pkg/kn/commands/source/ping/list.go
@@ -45,7 +45,7 @@ func NewPingListCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			sourceList, err := pingClient.ListPingSource()
+			sourceList, err := pingClient.ListPingSource(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/source/ping/update.go b/pkg/kn/commands/source/ping/update.go
index 3ddd0a80..08ef096c 100644
--- a/pkg/kn/commands/source/ping/update.go
+++ b/pkg/kn/commands/source/ping/update.go
@@ -58,7 +58,7 @@ func NewPingUpdateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			source, err := pingSourceClient.GetPingSource(name)
+			source, err := pingSourceClient.GetPingSource(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
@@ -74,7 +74,7 @@ func NewPingUpdateCommand(p *commands.KnParams) *cobra.Command {
 				b.JsonData(updateFlags.data)
 			}
 			if cmd.Flags().Changed("sink") {
-				destination, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+				destination, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 				if err != nil {
 					return err
 				}
@@ -90,7 +90,7 @@ func NewPingUpdateCommand(p *commands.KnParams) *cobra.Command {
 				b.CloudEventOverrides(ceOverridesMap, ceOverridesToRemove)
 			}
 
-			err = pingSourceClient.UpdatePingSource(b.Build())
+			err = pingSourceClient.UpdatePingSource(cmd.Context(), b.Build())
 			if err == nil {
 				fmt.Fprintf(cmd.OutOrStdout(), "Ping source '%s' updated in namespace '%s'.\n", name, pingSourceClient.Namespace())
 			}
diff --git a/pkg/kn/commands/subscription/create.go b/pkg/kn/commands/subscription/create.go
index 867555c4..a7d05c1e 100644
--- a/pkg/kn/commands/subscription/create.go
+++ b/pkg/kn/commands/subscription/create.go
@@ -79,25 +79,25 @@ func NewSubscriptionCreateCommand(p *commands.KnParams) *cobra.Command {
 			}
 			sb.Channel(cref)
 
-			sub, err := subscriberFlag.ResolveSink(dynamicClient, namespace)
+			sub, err := subscriberFlag.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
 			sb.Subscriber(sub)
 
-			rep, err := replyFlag.ResolveSink(dynamicClient, namespace)
+			rep, err := replyFlag.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
 			sb.Reply(rep)
 
-			ds, err := dlsFlag.ResolveSink(dynamicClient, namespace)
+			ds, err := dlsFlag.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
 			sb.DeadLetterSink(ds)
 
-			err = client.CreateSubscription(sb.Build())
+			err = client.CreateSubscription(cmd.Context(), sb.Build())
 			if err != nil {
 				return knerrors.GetError(err)
 			}
diff --git a/pkg/kn/commands/subscription/delete.go b/pkg/kn/commands/subscription/delete.go
index 9fdd0fd7..8d54dcec 100644
--- a/pkg/kn/commands/subscription/delete.go
+++ b/pkg/kn/commands/subscription/delete.go
@@ -43,7 +43,7 @@ func NewSubscriptionDeleteCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			err = subscriptionClient.DeleteSubscription(name)
+			err = subscriptionClient.DeleteSubscription(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/subscription/describe.go b/pkg/kn/commands/subscription/describe.go
index 4e24bba6..667e00f1 100644
--- a/pkg/kn/commands/subscription/describe.go
+++ b/pkg/kn/commands/subscription/describe.go
@@ -54,7 +54,7 @@ func NewSubscriptionDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			subscription, err := client.GetSubscription(name)
+			subscription, err := client.GetSubscription(cmd.Context(), name)
 			if err != nil {
 				return knerrors.GetError(err)
 			}
diff --git a/pkg/kn/commands/subscription/list.go b/pkg/kn/commands/subscription/list.go
index 8ee749d2..8a8101bc 100644
--- a/pkg/kn/commands/subscription/list.go
+++ b/pkg/kn/commands/subscription/list.go
@@ -47,7 +47,7 @@ func NewSubscriptionListCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			subscriptionList, err := client.ListSubscription()
+			subscriptionList, err := client.ListSubscription(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/subscription/update.go b/pkg/kn/commands/subscription/update.go
index 87be5523..07cfc115 100644
--- a/pkg/kn/commands/subscription/update.go
+++ b/pkg/kn/commands/subscription/update.go
@@ -62,32 +62,32 @@ func NewSubscriptionUpdateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			foundSub, err := client.GetSubscription(name)
+			foundSub, err := client.GetSubscription(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
 
 			sb := knmessagingv1beta1.NewSubscriptionBuilderFromExisting(foundSub)
 
-			sub, err := subscriberFlag.ResolveSink(dynamicClient, namespace)
+			sub, err := subscriberFlag.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
 			sb.Subscriber(sub)
 
-			rep, err := replyFlag.ResolveSink(dynamicClient, namespace)
+			rep, err := replyFlag.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
 			sb.Reply(rep)
 
-			ds, err := dlsFlag.ResolveSink(dynamicClient, namespace)
+			ds, err := dlsFlag.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return err
 			}
 			sb.DeadLetterSink(ds)
 
-			err = client.UpdateSubscription(sb.Build())
+			err = client.UpdateSubscription(cmd.Context(), sb.Build())
 			if err != nil {
 				return knerrors.GetError(err)
 			}
diff --git a/pkg/kn/commands/trigger/create.go b/pkg/kn/commands/trigger/create.go
index 965030cb..83284c2e 100644
--- a/pkg/kn/commands/trigger/create.go
+++ b/pkg/kn/commands/trigger/create.go
@@ -63,7 +63,7 @@ func NewTriggerCreateCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			objectRef, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+			objectRef, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 			if err != nil {
 				return fmt.Errorf(
 					"cannot create trigger '%s' in namespace '%s' "+
@@ -96,7 +96,7 @@ func NewTriggerCreateCommand(p *commands.KnParams) *cobra.Command {
 				}
 			}
 
-			err = eventingClient.CreateTrigger(triggerBuilder.Build())
+			err = eventingClient.CreateTrigger(cmd.Context(), triggerBuilder.Build())
 			if err != nil {
 				return fmt.Errorf(
 					"cannot create trigger '%s' in namespace '%s' "+
diff --git a/pkg/kn/commands/trigger/delete.go b/pkg/kn/commands/trigger/delete.go
index b0b10bdf..24d70ad6 100644
--- a/pkg/kn/commands/trigger/delete.go
+++ b/pkg/kn/commands/trigger/delete.go
@@ -46,7 +46,7 @@ func NewTriggerDeleteCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			err = eventingClient.DeleteTrigger(name)
+			err = eventingClient.DeleteTrigger(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/trigger/describe.go b/pkg/kn/commands/trigger/describe.go
index 85c6c003..dcaf44cb 100644
--- a/pkg/kn/commands/trigger/describe.go
+++ b/pkg/kn/commands/trigger/describe.go
@@ -61,7 +61,7 @@ func NewTriggerDescribeCommand(p *commands.KnParams) *cobra.Command {
 				return err
 			}
 
-			trigger, err := eventingClient.GetTrigger(name)
+			trigger, err := eventingClient.GetTrigger(cmd.Context(), name)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/trigger/list.go b/pkg/kn/commands/trigger/list.go
index 8a7ea2a5..ad751a94 100644
--- a/pkg/kn/commands/trigger/list.go
+++ b/pkg/kn/commands/trigger/list.go
@@ -46,7 +46,7 @@ func NewTriggerListCommand(p *commands.KnParams) *cobra.Command {
 			if err != nil {
 				return err
 			}
-			triggerList, err := client.ListTriggers()
+			triggerList, err := client.ListTriggers(cmd.Context())
 			if err != nil {
 				return err
 			}
diff --git a/pkg/kn/commands/trigger/update.go b/pkg/kn/commands/trigger/update.go
index 2b86b870..ca2b1890 100644
--- a/pkg/kn/commands/trigger/update.go
+++ b/pkg/kn/commands/trigger/update.go
@@ -71,7 +71,7 @@ func NewTriggerUpdateCommand(p *commands.KnParams) *cobra.Command {
 
 			var retries = 0
 			for {
-				trigger, err := eventingClient.GetTrigger(name)
+				trigger, err := eventingClient.GetTrigger(cmd.Context(), name)
 				if err != nil {
 					return err
 				}
@@ -95,7 +95,7 @@ func NewTriggerUpdateCommand(p *commands.KnParams) *cobra.Command {
 					b.Filters(existing.Merge(updated).Remove(removed))
 				}
 				if cmd.Flags().Changed("sink") {
-					destination, err := sinkFlags.ResolveSink(dynamicClient, namespace)
+					destination, err := sinkFlags.ResolveSink(cmd.Context(), dynamicClient, namespace)
 					if err != nil {
 						return err
 					}
@@ -104,7 +104,7 @@ func NewTriggerUpdateCommand(p *commands.KnParams) *cobra.Command {
 						URI: destination.URI,
 					})
 				}
-				err = eventingClient.UpdateTrigger(b.Build())
+				err = eventingClient.UpdateTrigger(cmd.Context(), b.Build())
 				if err != nil {
 					if apierrors.IsConflict(err) && retries < MaxUpdateRetries {
 						retries++
diff --git a/pkg/messaging/v1beta1/channels_client.go b/pkg/messaging/v1beta1/channels_client.go
index a247b8b2..92c7739f 100644
--- a/pkg/messaging/v1beta1/channels_client.go
+++ b/pkg/messaging/v1beta1/channels_client.go
@@ -29,16 +29,16 @@ import (
 type KnChannelsClient interface {
 
 	// GetChannel returns a Channel by its name
-	GetChannel(name string) (*v1beta1.Channel, error)
+	GetChannel(ctx context.Context, name string) (*v1beta1.Channel, error)
 
 	// CreteChannel creates a Channel with given spec
-	CreateChannel(channel *v1beta1.Channel) error
+	CreateChannel(ctx context.Context, channel *v1beta1.Channel) error
 
 	// DeleteChannel deletes a Channel by its name
-	DeleteChannel(name string) error
+	DeleteChannel(ctx context.Context, name string) error
 
 	// ListChannel lists all Channels
-	ListChannel() (*v1beta1.ChannelList, error)
+	ListChannel(ctx context.Context) (*v1beta1.ChannelList, error)
 
 	// Namespace returns the namespace for this channel client
 	Namespace() string
@@ -64,8 +64,8 @@ func (c *channelsClient) Namespace() string {
 }
 
 // GetChannel gets Channel by its name
-func (c *channelsClient) GetChannel(name string) (*v1beta1.Channel, error) {
-	channel, err := c.client.Get(context.TODO(), name, metav1.GetOptions{})
+func (c *channelsClient) GetChannel(ctx context.Context, name string) (*v1beta1.Channel, error) {
+	channel, err := c.client.Get(ctx, name, metav1.GetOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
@@ -77,19 +77,19 @@ func (c *channelsClient) GetChannel(name string) (*v1beta1.Channel, error) {
 }
 
 // CreateChannel creates Channel with given spec
-func (c *channelsClient) CreateChannel(channel *v1beta1.Channel) error {
-	_, err := c.client.Create(context.TODO(), channel, metav1.CreateOptions{})
+func (c *channelsClient) CreateChannel(ctx context.Context, channel *v1beta1.Channel) error {
+	_, err := c.client.Create(ctx, channel, metav1.CreateOptions{})
 	return knerrors.GetError(err)
 }
 
 // DeleteChannel deletes Channel by its name
-func (c *channelsClient) DeleteChannel(name string) error {
-	return knerrors.GetError(c.client.Delete(context.TODO(), name, metav1.DeleteOptions{}))
+func (c *channelsClient) DeleteChannel(ctx context.Context, name string) error {
+	return knerrors.GetError(c.client.Delete(ctx, name, metav1.DeleteOptions{}))
 }
 
 // ListChannel lists channels in configured namespace
-func (c *channelsClient) ListChannel() (*v1beta1.ChannelList, error) {
-	channelList, err := c.client.List(context.TODO(), metav1.ListOptions{})
+func (c *channelsClient) ListChannel(ctx context.Context) (*v1beta1.ChannelList, error) {
+	channelList, err := c.client.List(ctx, metav1.ListOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
diff --git a/pkg/messaging/v1beta1/channels_client_mock.go b/pkg/messaging/v1beta1/channels_client_mock.go
index d6803f68..fc4777c1 100644
--- a/pkg/messaging/v1beta1/channels_client_mock.go
+++ b/pkg/messaging/v1beta1/channels_client_mock.go
@@ -15,6 +15,7 @@
 package v1beta1
 
 import (
+	"context"
 	"testing"
 
 	"knative.dev/eventing/pkg/apis/messaging/v1beta1"
@@ -63,7 +64,7 @@ func (sr *ChannelsRecorder) CreateChannel(channels interface{}, err error) {
 }
 
 // CreateChannel performs a previously recorded action, failing if non has been registered
-func (c *MockKnChannelsClient) CreateChannel(channels *v1beta1.Channel) error {
+func (c *MockKnChannelsClient) CreateChannel(ctx context.Context, channels *v1beta1.Channel) error {
 	call := c.recorder.r.VerifyCall("CreateChannel", channels)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -74,7 +75,7 @@ func (sr *ChannelsRecorder) GetChannel(name interface{}, channels *v1beta1.Chann
 }
 
 // GetChannel performs a previously recorded action, failing if non has been registered
-func (c *MockKnChannelsClient) GetChannel(name string) (*v1beta1.Channel, error) {
+func (c *MockKnChannelsClient) GetChannel(ctx context.Context, name string) (*v1beta1.Channel, error) {
 	call := c.recorder.r.VerifyCall("GetChannel", name)
 	return call.Result[0].(*v1beta1.Channel), mock.ErrorOrNil(call.Result[1])
 }
@@ -85,7 +86,7 @@ func (sr *ChannelsRecorder) DeleteChannel(name interface{}, err error) {
 }
 
 // DeleteChannel performs a previously recorded action, failing if non has been registered
-func (c *MockKnChannelsClient) DeleteChannel(name string) error {
+func (c *MockKnChannelsClient) DeleteChannel(ctx context.Context, name string) error {
 	call := c.recorder.r.VerifyCall("DeleteChannel", name)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -96,7 +97,7 @@ func (sr *ChannelsRecorder) ListChannel(channelsList *v1beta1.ChannelList, err e
 }
 
 // ListChannel performs a previously recorded action, failing if non has been registered
-func (c *MockKnChannelsClient) ListChannel() (*v1beta1.ChannelList, error) {
+func (c *MockKnChannelsClient) ListChannel(context.Context) (*v1beta1.ChannelList, error) {
 	call := c.recorder.r.VerifyCall("ListChannel")
 	return call.Result[0].(*v1beta1.ChannelList), mock.ErrorOrNil(call.Result[1])
 }
diff --git a/pkg/messaging/v1beta1/subscriptions_client.go b/pkg/messaging/v1beta1/subscriptions_client.go
index ddc6fbb0..aa82444a 100644
--- a/pkg/messaging/v1beta1/subscriptions_client.go
+++ b/pkg/messaging/v1beta1/subscriptions_client.go
@@ -33,19 +33,19 @@ import (
 type KnSubscriptionsClient interface {
 
 	// GetSubscription returns a Subscription by its name
-	GetSubscription(name string) (*v1beta1.Subscription, error)
+	GetSubscription(ctx context.Context, name string) (*v1beta1.Subscription, error)
 
 	// CreteSubscription creates a Subscription with given spec
-	CreateSubscription(subscription *v1beta1.Subscription) error
+	CreateSubscription(ctx context.Context, subscription *v1beta1.Subscription) error
 
 	// UpdateSubscription updates a Subscription with given spec
-	UpdateSubscription(subscription *v1beta1.Subscription) error
+	UpdateSubscription(ctx context.Context, subscription *v1beta1.Subscription) error
 
 	// DeleteSubscription deletes a Subscription by its name
-	DeleteSubscription(name string) error
+	DeleteSubscription(ctx context.Context, name string) error
 
 	// ListSubscription lists all Subscriptions
-	ListSubscription() (*v1beta1.SubscriptionList, error)
+	ListSubscription(ctx context.Context) (*v1beta1.SubscriptionList, error)
 
 	// Namespace returns the namespace for this subscription client
 	Namespace() string
@@ -71,8 +71,8 @@ func (c *subscriptionsClient) Namespace() string {
 }
 
 // GetSubscription gets Subscription by its name
-func (c *subscriptionsClient) GetSubscription(name string) (*v1beta1.Subscription, error) {
-	subscription, err := c.client.Get(context.TODO(), name, metav1.GetOptions{})
+func (c *subscriptionsClient) GetSubscription(ctx context.Context, name string) (*v1beta1.Subscription, error) {
+	subscription, err := c.client.Get(ctx, name, metav1.GetOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
@@ -84,25 +84,25 @@ func (c *subscriptionsClient) GetSubscription(name string) (*v1beta1.Subscriptio
 }
 
 // CreateSubscription creates Subscription with given spec
-func (c *subscriptionsClient) CreateSubscription(subscription *v1beta1.Subscription) error {
-	_, err := c.client.Create(context.TODO(), subscription, metav1.CreateOptions{})
+func (c *subscriptionsClient) CreateSubscription(ctx context.Context, subscription *v1beta1.Subscription) error {
+	_, err := c.client.Create(ctx, subscription, metav1.CreateOptions{})
 	return knerrors.GetError(err)
 }
 
 // UpdateSubscription creates Subscription with given spec
-func (c *subscriptionsClient) UpdateSubscription(subscription *v1beta1.Subscription) error {
-	_, err := c.client.Update(context.TODO(), subscription, metav1.UpdateOptions{})
+func (c *subscriptionsClient) UpdateSubscription(ctx context.Context, subscription *v1beta1.Subscription) error {
+	_, err := c.client.Update(ctx, subscription, metav1.UpdateOptions{})
 	return knerrors.GetError(err)
 }
 
 // DeleteSubscription deletes Subscription by its name
-func (c *subscriptionsClient) DeleteSubscription(name string) error {
-	return knerrors.GetError(c.client.Delete(context.TODO(), name, metav1.DeleteOptions{}))
+func (c *subscriptionsClient) DeleteSubscription(ctx context.Context, name string) error {
+	return knerrors.GetError(c.client.Delete(ctx, name, metav1.DeleteOptions{}))
 }
 
 // ListSubscription lists subscriptions in configured namespace
-func (c *subscriptionsClient) ListSubscription() (*v1beta1.SubscriptionList, error) {
-	subscriptionList, err := c.client.List(context.TODO(), metav1.ListOptions{})
+func (c *subscriptionsClient) ListSubscription(ctx context.Context) (*v1beta1.SubscriptionList, error) {
+	subscriptionList, err := c.client.List(ctx, metav1.ListOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
diff --git a/pkg/messaging/v1beta1/subscriptions_client_mock.go b/pkg/messaging/v1beta1/subscriptions_client_mock.go
index 1b7866ab..c09d1b46 100644
--- a/pkg/messaging/v1beta1/subscriptions_client_mock.go
+++ b/pkg/messaging/v1beta1/subscriptions_client_mock.go
@@ -17,6 +17,7 @@ limitations under the License.
 package v1beta1
 
 import (
+	"context"
 	"testing"
 
 	"knative.dev/eventing/pkg/apis/messaging/v1beta1"
@@ -67,7 +68,7 @@ func (sr *SubscriptionsRecorder) CreateSubscription(subscription interface{}, er
 }
 
 // CreateSubscription performs a previously recorded action, failing if non has been registered
-func (c *MockKnSubscriptionsClient) CreateSubscription(subscription *v1beta1.Subscription) error {
+func (c *MockKnSubscriptionsClient) CreateSubscription(ctx context.Context, subscription *v1beta1.Subscription) error {
 	call := c.recorder.r.VerifyCall("CreateSubscription", subscription)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -78,7 +79,7 @@ func (sr *SubscriptionsRecorder) GetSubscription(name interface{}, subscription
 }
 
 // GetSubscription performs a previously recorded action, failing if non has been registered
-func (c *MockKnSubscriptionsClient) GetSubscription(name string) (*v1beta1.Subscription, error) {
+func (c *MockKnSubscriptionsClient) GetSubscription(ctx context.Context, name string) (*v1beta1.Subscription, error) {
 	call := c.recorder.r.VerifyCall("GetSubscription", name)
 	return call.Result[0].(*v1beta1.Subscription), mock.ErrorOrNil(call.Result[1])
 }
@@ -89,7 +90,7 @@ func (sr *SubscriptionsRecorder) DeleteSubscription(name interface{}, err error)
 }
 
 // DeleteSubscription performs a previously recorded action, failing if non has been registered
-func (c *MockKnSubscriptionsClient) DeleteSubscription(name string) error {
+func (c *MockKnSubscriptionsClient) DeleteSubscription(ctx context.Context, name string) error {
 	call := c.recorder.r.VerifyCall("DeleteSubscription", name)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -100,7 +101,7 @@ func (sr *SubscriptionsRecorder) ListSubscription(subscriptionsList *v1beta1.Sub
 }
 
 // ListSubscription performs a previously recorded action, failing if non has been registered
-func (c *MockKnSubscriptionsClient) ListSubscription() (*v1beta1.SubscriptionList, error) {
+func (c *MockKnSubscriptionsClient) ListSubscription(context.Context) (*v1beta1.SubscriptionList, error) {
 	call := c.recorder.r.VerifyCall("ListSubscription")
 	return call.Result[0].(*v1beta1.SubscriptionList), mock.ErrorOrNil(call.Result[1])
 }
@@ -111,7 +112,7 @@ func (sr *SubscriptionsRecorder) UpdateSubscription(subscription interface{}, er
 }
 
 // UpdateSubscription performs a previously recorded action, failing if non has been registered
-func (c *MockKnSubscriptionsClient) UpdateSubscription(subscription *v1beta1.Subscription) error {
+func (c *MockKnSubscriptionsClient) UpdateSubscription(ctx context.Context, subscription *v1beta1.Subscription) error {
 	call := c.recorder.r.VerifyCall("UpdateSubscription", subscription)
 	return mock.ErrorOrNil(call.Result[0])
 }
diff --git a/pkg/serving/v1/apply.go b/pkg/serving/v1/apply.go
index 616c4377..11808b42 100644
--- a/pkg/serving/v1/apply.go
+++ b/pkg/serving/v1/apply.go
@@ -40,26 +40,26 @@ import (
 // way for performing the merge (but this is not supported for custom resources)
 // See issue https://github.com/knative/client/issues/1073 for more details how this method should be
 // improved for a better merge strategy.
-func (cl *knServingClient) patch(modifiedService *servingv1.Service, currentService *servingv1.Service, uOriginalService []byte) (bool, error) {
+func (cl *knServingClient) patch(ctx context.Context, modifiedService *servingv1.Service, currentService *servingv1.Service, uOriginalService []byte) (bool, error) {
 	uModifiedService, err := getModifiedConfiguration(modifiedService, true)
 	if err != nil {
 		return false, err
 	}
-	hasChanged, err := cl.patchSimple(currentService, uModifiedService, uOriginalService)
+	hasChanged, err := cl.patchSimple(ctx, currentService, uModifiedService, uOriginalService)
 	for i := 1; i <= 5 && apierrors.IsConflict(err); i++ {
 		if i > 1 {
 			time.Sleep(1 * time.Second)
 		}
-		currentService, err = cl.GetService(currentService.Name)
+		currentService, err = cl.GetService(ctx, currentService.Name)
 		if err != nil {
 			return false, err
 		}
-		hasChanged, err = cl.patchSimple(currentService, uModifiedService, uOriginalService)
+		hasChanged, err = cl.patchSimple(ctx, currentService, uModifiedService, uOriginalService)
 	}
 	return hasChanged, err
 }
 
-func (cl *knServingClient) patchSimple(currentService *servingv1.Service, uModifiedService []byte, uOriginalService []byte) (bool, error) {
+func (cl *knServingClient) patchSimple(ctx context.Context, currentService *servingv1.Service, uModifiedService []byte, uOriginalService []byte) (bool, error) {
 	// Serialize the current configuration of the object from the server.
 	uCurrentService, err := encodeService(currentService)
 	if err != nil {
@@ -76,7 +76,7 @@ func (cl *knServingClient) patchSimple(currentService *servingv1.Service, uModif
 	}
 
 	// Check if the generation has been counted up, only then the backend detected a change
-	savedService, err := cl.patchService(currentService.Name, types.MergePatchType, patch)
+	savedService, err := cl.patchService(ctx, currentService.Name, types.MergePatchType, patch)
 	if err != nil {
 		return false, err
 	}
@@ -84,8 +84,8 @@ func (cl *knServingClient) patchSimple(currentService *servingv1.Service, uModif
 }
 
 // patchService patches the given service
-func (cl *knServingClient) patchService(name string, patchType types.PatchType, patch []byte) (*servingv1.Service, error) {
-	service, err := cl.client.Services(cl.namespace).Patch(context.TODO(), name, patchType, patch, metav1.PatchOptions{})
+func (cl *knServingClient) patchService(ctx context.Context, name string, patchType types.PatchType, patch []byte) (*servingv1.Service, error) {
+	service, err := cl.client.Services(cl.namespace).Patch(ctx, name, patchType, patch, metav1.PatchOptions{})
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/serving/v1/client.go b/pkg/serving/v1/client.go
index 68c5d53c..a0310a6b 100644
--- a/pkg/serving/v1/client.go
+++ b/pkg/serving/v1/client.go
@@ -52,22 +52,22 @@ type KnServingClient interface {
 	Namespace() string
 
 	// Get a service by its unique name
-	GetService(name string) (*servingv1.Service, error)
+	GetService(ctx context.Context, name string) (*servingv1.Service, error)
 
 	// List services
-	ListServices(opts ...ListConfig) (*servingv1.ServiceList, error)
+	ListServices(ctx context.Context, opts ...ListConfig) (*servingv1.ServiceList, error)
 
 	// Create a new service
-	CreateService(service *servingv1.Service) error
+	CreateService(ctx context.Context, service *servingv1.Service) error
 
 	// UpdateService updates the given service. For a more robust variant with automatic
 	// conflict resolution see UpdateServiceWithRetry
-	UpdateService(service *servingv1.Service) (bool, error)
+	UpdateService(ctx context.Context, service *servingv1.Service) (bool, error)
 
 	// UpdateServiceWithRetry updates service and retries if there is a version conflict.
 	// The updateFunc receives a deep copy of the existing service and can add update it in
 	// place. Return if the service creates a new generation or not
-	UpdateServiceWithRetry(name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error)
+	UpdateServiceWithRetry(ctx context.Context, name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error)
 
 	// Apply a service's definition to the cluster. The full service declaration needs to be provided,
 	// which is different to UpdateService which can also do a partial update. If the given
@@ -78,42 +78,42 @@ type KnServingClient interface {
 	// The returned bool indicates whether the service has been changed or whether this operation
 	// was a no-op
 	// An error can indicate a general error or a conflict that occurred during the three way merge.
-	ApplyService(service *servingv1.Service) (bool, error)
+	ApplyService(ctx context.Context, service *servingv1.Service) (bool, error)
 
 	// Delete a service by name
-	DeleteService(name string, timeout time.Duration) error
+	DeleteService(ctx context.Context, name string, timeout time.Duration) error
 
 	// Wait for a service to become ready, but not longer than provided timeout.
 	// Return error and how long has been waited
-	WaitForService(name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration)
+	WaitForService(ctx context.Context, name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration)
 
 	// Get a configuration by name
-	GetConfiguration(name string) (*servingv1.Configuration, error)
+	GetConfiguration(ctx context.Context, name string) (*servingv1.Configuration, error)
 
 	// Get a revision by name
-	GetRevision(name string) (*servingv1.Revision, error)
+	GetRevision(ctx context.Context, name string) (*servingv1.Revision, error)
 
 	// Get the "base" revision for a Service; the one that corresponds to the
 	// current template.
-	GetBaseRevision(service *servingv1.Service) (*servingv1.Revision, error)
+	GetBaseRevision(ctx context.Context, service *servingv1.Service) (*servingv1.Revision, error)
 
 	// Create revision
-	CreateRevision(revision *servingv1.Revision) error
+	CreateRevision(ctx context.Context, revision *servingv1.Revision) error
 
 	// Update revision
-	UpdateRevision(revision *servingv1.Revision) error
+	UpdateRevision(ctx context.Context, revision *servingv1.Revision) error
 
 	// List revisions
-	ListRevisions(opts ...ListConfig) (*servingv1.RevisionList, error)
+	ListRevisions(ctx context.Context, opts ...ListConfig) (*servingv1.RevisionList, error)
 
 	// Delete a revision
-	DeleteRevision(name string, timeout time.Duration) error
+	DeleteRevision(ctx context.Context, name string, timeout time.Duration) error
 
 	// Get a route by its unique name
-	GetRoute(name string) (*servingv1.Route, error)
+	GetRoute(ctx context.Context, name string) (*servingv1.Route, error)
 
 	// List routes
-	ListRoutes(opts ...ListConfig) (*servingv1.RouteList, error)
+	ListRoutes(ctx context.Context, opts ...ListConfig) (*servingv1.RouteList, error)
 }
 
 type listConfigCollector struct {
@@ -185,8 +185,8 @@ func (cl *knServingClient) Namespace() string {
 }
 
 // Get a service by its unique name
-func (cl *knServingClient) GetService(name string) (*servingv1.Service, error) {
-	service, err := cl.client.Services(cl.namespace).Get(context.TODO(), name, v1.GetOptions{})
+func (cl *knServingClient) GetService(ctx context.Context, name string) (*servingv1.Service, error) {
+	service, err := cl.client.Services(cl.namespace).Get(ctx, name, v1.GetOptions{})
 	if err != nil {
 		return nil, clienterrors.GetError(err)
 	}
@@ -197,19 +197,17 @@ func (cl *knServingClient) GetService(name string) (*servingv1.Service, error) {
 	return service, nil
 }
 
-func (cl *knServingClient) WatchService(name string, timeout time.Duration) (watch.Interface, error) {
-	return wait.NewWatcher(cl.client.Services(cl.namespace).Watch,
-		cl.client.RESTClient(), cl.namespace, "services", name, timeout)
+func (cl *knServingClient) WatchService(ctx context.Context, name string, timeout time.Duration) (watch.Interface, error) {
+	return wait.NewWatcher(ctx, cl.client.Services(cl.namespace).Watch, cl.client.RESTClient(), cl.namespace, "services", name, timeout)
 }
 
-func (cl *knServingClient) WatchRevision(name string, timeout time.Duration) (watch.Interface, error) {
-	return wait.NewWatcher(cl.client.Revisions(cl.namespace).Watch,
-		cl.client.RESTClient(), cl.namespace, "revision", name, timeout)
+func (cl *knServingClient) WatchRevision(ctx context.Context, name string, timeout time.Duration) (watch.Interface, error) {
+	return wait.NewWatcher(ctx, cl.client.Revisions(cl.namespace).Watch, cl.client.RESTClient(), cl.namespace, "revision", name, timeout)
 }
 
 // List services
-func (cl *knServingClient) ListServices(config ...ListConfig) (*servingv1.ServiceList, error) {
-	serviceList, err := cl.client.Services(cl.namespace).List(context.TODO(), ListConfigs(config).toListOptions())
+func (cl *knServingClient) ListServices(ctx context.Context, config ...ListConfig) (*servingv1.ServiceList, error) {
+	serviceList, err := cl.client.Services(cl.namespace).List(ctx, ListConfigs(config).toListOptions())
 	if err != nil {
 		return nil, clienterrors.GetError(err)
 	}
@@ -232,8 +230,8 @@ func (cl *knServingClient) ListServices(config ...ListConfig) (*servingv1.Servic
 }
 
 // Create a new service
-func (cl *knServingClient) CreateService(service *servingv1.Service) error {
-	_, err := cl.client.Services(cl.namespace).Create(context.TODO(), service, v1.CreateOptions{})
+func (cl *knServingClient) CreateService(ctx context.Context, service *servingv1.Service) error {
+	_, err := cl.client.Services(cl.namespace).Create(ctx, service, v1.CreateOptions{})
 	if err != nil {
 		return clienterrors.GetError(err)
 	}
@@ -241,8 +239,8 @@ func (cl *knServingClient) CreateService(service *servingv1.Service) error {
 }
 
 // Update the given service
-func (cl *knServingClient) UpdateService(service *servingv1.Service) (bool, error) {
-	updated, err := cl.client.Services(cl.namespace).Update(context.TODO(), service, v1.UpdateOptions{})
+func (cl *knServingClient) UpdateService(ctx context.Context, service *servingv1.Service) (bool, error) {
+	updated, err := cl.client.Services(cl.namespace).Update(ctx, service, v1.UpdateOptions{})
 	if err != nil {
 		return false, err
 	}
@@ -251,15 +249,15 @@ func (cl *knServingClient) UpdateService(service *servingv1.Service) (bool, erro
 }
 
 // Update the given service with a retry in case of a conflict
-func (cl *knServingClient) UpdateServiceWithRetry(name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error) {
-	return updateServiceWithRetry(cl, name, updateFunc, nrRetries)
+func (cl *knServingClient) UpdateServiceWithRetry(ctx context.Context, name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error) {
+	return updateServiceWithRetry(ctx, cl, name, updateFunc, nrRetries)
 }
 
 // Extracted to be usable with the Mocking client
-func updateServiceWithRetry(cl KnServingClient, name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error) {
+func updateServiceWithRetry(ctx context.Context, cl KnServingClient, name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error) {
 	var retries = 0
 	for {
-		service, err := cl.GetService(name)
+		service, err := cl.GetService(ctx, name)
 		if err != nil {
 			return false, err
 		}
@@ -271,7 +269,7 @@ func updateServiceWithRetry(cl KnServingClient, name string, updateFunc ServiceU
 			return false, err
 		}
 
-		changed, err := cl.UpdateService(updatedService)
+		changed, err := cl.UpdateService(ctx, updatedService)
 		if err != nil {
 			// Retry to update when a resource version conflict exists
 			if apierrors.IsConflict(err) && retries < nrRetries {
@@ -287,8 +285,8 @@ func updateServiceWithRetry(cl KnServingClient, name string, updateFunc ServiceU
 }
 
 // ApplyService applies a service definition that contains the service's targer state
-func (cl *knServingClient) ApplyService(modifiedService *servingv1.Service) (bool, error) {
-	currentService, err := cl.GetService(modifiedService.Name)
+func (cl *knServingClient) ApplyService(ctx context.Context, modifiedService *servingv1.Service) (bool, error) {
+	currentService, err := cl.GetService(ctx, modifiedService.Name)
 	if err != nil && !apierrors.IsNotFound(err) {
 		return false, err
 	}
@@ -304,42 +302,42 @@ func (cl *knServingClient) ApplyService(modifiedService *servingv1.Service) (boo
 		if err != nil {
 			return false, err
 		}
-		return true, cl.CreateService(modifiedService)
+		return true, cl.CreateService(ctx, modifiedService)
 	}
 
 	// Merge with existing service
 	uOriginalService := getOriginalConfiguration(currentService)
-	return cl.patch(modifiedService, currentService, uOriginalService)
+	return cl.patch(ctx, modifiedService, currentService, uOriginalService)
 }
 
 // Delete a service by name
 // Param `timeout` represents a duration to wait for a delete op to finish.
 // For `timeout == 0` delete is performed async without any wait.
-func (cl *knServingClient) DeleteService(serviceName string, timeout time.Duration) error {
+func (cl *knServingClient) DeleteService(ctx context.Context, serviceName string, timeout time.Duration) error {
 	if timeout == 0 {
-		return cl.deleteService(serviceName, v1.DeletePropagationBackground)
+		return cl.deleteService(ctx, serviceName, v1.DeletePropagationBackground)
 	}
 	waitC := make(chan error)
-	watcher, err := cl.WatchService(serviceName, timeout)
+	watcher, err := cl.WatchService(ctx, serviceName, timeout)
 	if err != nil {
 		return nil
 	}
 	defer watcher.Stop()
 	go func() {
 		waitForEvent := wait.NewWaitForEvent("service", func(evt *watch.Event) bool { return evt.Type == watch.Deleted })
-		err, _ := waitForEvent.Wait(watcher, serviceName, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback())
+		err, _ := waitForEvent.Wait(ctx, watcher, serviceName, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback())
 		waitC <- err
 	}()
-	err = cl.deleteService(serviceName, v1.DeletePropagationForeground)
+	err = cl.deleteService(ctx, serviceName, v1.DeletePropagationForeground)
 	if err != nil {
 		return err
 	}
 	return <-waitC
 }
 
-func (cl *knServingClient) deleteService(serviceName string, propagationPolicy v1.DeletionPropagation) error {
+func (cl *knServingClient) deleteService(ctx context.Context, serviceName string, propagationPolicy v1.DeletionPropagation) error {
 	err := cl.client.Services(cl.namespace).Delete(
-		context.TODO(),
+		ctx,
 		serviceName,
 		v1.DeleteOptions{PropagationPolicy: &propagationPolicy},
 	)
@@ -351,19 +349,19 @@ func (cl *knServingClient) deleteService(serviceName string, propagationPolicy v
 }
 
 // Wait for a service to become ready, but not longer than provided timeout
-func (cl *knServingClient) WaitForService(name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration) {
-	watcher, err := cl.WatchService(name, timeout)
+func (cl *knServingClient) WaitForService(ctx context.Context, name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration) {
+	watcher, err := cl.WatchService(ctx, name, timeout)
 	if err != nil {
 		return err, timeout
 	}
 	defer watcher.Stop()
 	waitForReady := wait.NewWaitForReady("service", serviceConditionExtractor)
-	return waitForReady.Wait(watcher, name, wait.Options{Timeout: &timeout}, msgCallback)
+	return waitForReady.Wait(ctx, watcher, name, wait.Options{Timeout: &timeout}, msgCallback)
 }
 
 // Get the configuration for a service
-func (cl *knServingClient) GetConfiguration(name string) (*servingv1.Configuration, error) {
-	configuration, err := cl.client.Configurations(cl.namespace).Get(context.TODO(), name, v1.GetOptions{})
+func (cl *knServingClient) GetConfiguration(ctx context.Context, name string) (*servingv1.Configuration, error) {
+	configuration, err := cl.client.Configurations(cl.namespace).Get(ctx, name, v1.GetOptions{})
 	if err != nil {
 		return nil, err
 	}
@@ -375,8 +373,8 @@ func (cl *knServingClient) GetConfiguration(name string) (*servingv1.Configurati
 }
 
 // Get a revision by name
-func (cl *knServingClient) GetRevision(name string) (*servingv1.Revision, error) {
-	revision, err := cl.client.Revisions(cl.namespace).Get(context.TODO(), name, v1.GetOptions{})
+func (cl *knServingClient) GetRevision(ctx context.Context, name string) (*servingv1.Revision, error) {
+	revision, err := cl.client.Revisions(cl.namespace).Get(ctx, name, v1.GetOptions{})
 	if err != nil {
 		return nil, clienterrors.GetError(err)
 	}
@@ -401,21 +399,21 @@ var noBaseRevisionError = &NoBaseRevisionError{"base revision not found"}
 // a Service. It may not be findable with our heuristics, in which case this
 // method returns Errors()["no-base-revision"]. If it simply doesn't exist (like
 // it wasn't yet created or was deleted), return the usual not found error.
-func (cl *knServingClient) GetBaseRevision(service *servingv1.Service) (*servingv1.Revision, error) {
-	return getBaseRevision(cl, service)
+func (cl *knServingClient) GetBaseRevision(ctx context.Context, service *servingv1.Service) (*servingv1.Revision, error) {
+	return getBaseRevision(ctx, cl, service)
 }
 
-func getBaseRevision(cl KnServingClient, service *servingv1.Service) (*servingv1.Revision, error) {
+func getBaseRevision(ctx context.Context, cl KnServingClient, service *servingv1.Service) (*servingv1.Revision, error) {
 	template := service.Spec.Template
 	// First, try to get it by name. If the template has a particular name, the
 	// base revision is the one created with that name.
 	if template.Name != "" {
-		return cl.GetRevision(template.Name)
+		return cl.GetRevision(ctx, template.Name)
 	}
 	// Next, let's try the LatestCreatedRevision, and see if that matches the
 	// template, at least in terms of the image (which is what we care about here).
 	if service.Status.LatestCreatedRevisionName != "" {
-		latestCreated, err := cl.GetRevision(service.Status.LatestCreatedRevisionName)
+		latestCreated, err := cl.GetRevision(ctx, service.Status.LatestCreatedRevisionName)
 		if err != nil {
 			return nil, err
 		}
@@ -441,8 +439,8 @@ func getBaseRevision(cl KnServingClient, service *servingv1.Service) (*servingv1
 }
 
 // Create a revision
-func (cl *knServingClient) CreateRevision(revision *servingv1.Revision) error {
-	rev, err := cl.client.Revisions(cl.namespace).Create(context.TODO(), revision, v1.CreateOptions{})
+func (cl *knServingClient) CreateRevision(ctx context.Context, revision *servingv1.Revision) error {
+	rev, err := cl.client.Revisions(cl.namespace).Create(ctx, revision, v1.CreateOptions{})
 	if err != nil {
 		return clienterrors.GetError(err)
 	}
@@ -450,8 +448,8 @@ func (cl *knServingClient) CreateRevision(revision *servingv1.Revision) error {
 }
 
 // Update the given service
-func (cl *knServingClient) UpdateRevision(revision *servingv1.Revision) error {
-	_, err := cl.client.Revisions(cl.namespace).Update(context.TODO(), revision, v1.UpdateOptions{})
+func (cl *knServingClient) UpdateRevision(ctx context.Context, revision *servingv1.Revision) error {
+	_, err := cl.client.Revisions(cl.namespace).Update(ctx, revision, v1.UpdateOptions{})
 	if err != nil {
 		return err
 	}
@@ -459,8 +457,8 @@ func (cl *knServingClient) UpdateRevision(revision *servingv1.Revision) error {
 }
 
 // Delete a revision by name
-func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) error {
-	revision, err := cl.client.Revisions(cl.namespace).Get(context.TODO(), name, v1.GetOptions{})
+func (cl *knServingClient) DeleteRevision(ctx context.Context, name string, timeout time.Duration) error {
+	revision, err := cl.client.Revisions(cl.namespace).Get(ctx, name, v1.GetOptions{})
 	if err != nil {
 		return clienterrors.GetError(err)
 	}
@@ -468,20 +466,20 @@ func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) er
 		return fmt.Errorf("can't delete revision '%s' because it has been already marked for deletion", name)
 	}
 	if timeout == 0 {
-		return cl.deleteRevision(name)
+		return cl.deleteRevision(ctx, name)
 	}
 	waitC := make(chan error)
-	watcher, err := cl.WatchRevision(name, timeout)
+	watcher, err := cl.WatchRevision(ctx, name, timeout)
 	if err != nil {
 		return err
 	}
 	defer watcher.Stop()
 	go func() {
 		waitForEvent := wait.NewWaitForEvent("revision", func(evt *watch.Event) bool { return evt.Type == watch.Deleted })
-		err, _ := waitForEvent.Wait(watcher, name, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback())
+		err, _ := waitForEvent.Wait(ctx, watcher, name, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback())
 		waitC <- err
 	}()
-	err = cl.deleteRevision(name)
+	err = cl.deleteRevision(ctx, name)
 	if err != nil {
 		return clienterrors.GetError(err)
 	}
@@ -489,8 +487,8 @@ func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) er
 	return <-waitC
 }
 
-func (cl *knServingClient) deleteRevision(name string) error {
-	err := cl.client.Revisions(cl.namespace).Delete(context.TODO(), name, v1.DeleteOptions{})
+func (cl *knServingClient) deleteRevision(ctx context.Context, name string) error {
+	err := cl.client.Revisions(cl.namespace).Delete(ctx, name, v1.DeleteOptions{})
 	if err != nil {
 		return clienterrors.GetError(err)
 	}
@@ -499,8 +497,8 @@ func (cl *knServingClient) deleteRevision(name string) error {
 }
 
 // List revisions
-func (cl *knServingClient) ListRevisions(config ...ListConfig) (*servingv1.RevisionList, error) {
-	revisionList, err := cl.client.Revisions(cl.namespace).List(context.TODO(), ListConfigs(config).toListOptions())
+func (cl *knServingClient) ListRevisions(ctx context.Context, config ...ListConfig) (*servingv1.RevisionList, error) {
+	revisionList, err := cl.client.Revisions(cl.namespace).List(ctx, ListConfigs(config).toListOptions())
 	if err != nil {
 		return nil, clienterrors.GetError(err)
 	}
@@ -508,8 +506,8 @@ func (cl *knServingClient) ListRevisions(config ...ListConfig) (*servingv1.Revis
 }
 
 // Get a route by its unique name
-func (cl *knServingClient) GetRoute(name string) (*servingv1.Route, error) {
-	route, err := cl.client.Routes(cl.namespace).Get(context.TODO(), name, v1.GetOptions{})
+func (cl *knServingClient) GetRoute(ctx context.Context, name string) (*servingv1.Route, error) {
+	route, err := cl.client.Routes(cl.namespace).Get(ctx, name, v1.GetOptions{})
 	if err != nil {
 		return nil, err
 	}
@@ -521,8 +519,8 @@ func (cl *knServingClient) GetRoute(name string) (*servingv1.Route, error) {
 }
 
 // List routes
-func (cl *knServingClient) ListRoutes(config ...ListConfig) (*servingv1.RouteList, error) {
-	routeList, err := cl.client.Routes(cl.namespace).List(context.TODO(), ListConfigs(config).toListOptions())
+func (cl *knServingClient) ListRoutes(ctx context.Context, config ...ListConfig) (*servingv1.RouteList, error) {
+	routeList, err := cl.client.Routes(cl.namespace).List(ctx, ListConfigs(config).toListOptions())
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/serving/v1/client_mock.go b/pkg/serving/v1/client_mock.go
index c2256743..6321a767 100644
--- a/pkg/serving/v1/client_mock.go
+++ b/pkg/serving/v1/client_mock.go
@@ -15,6 +15,7 @@
 package v1
 
 import (
+	"context"
 	"testing"
 	"time"
 
@@ -64,7 +65,7 @@ func (sr *ServingRecorder) GetService(name interface{}, service *servingv1.Servi
 	sr.r.Add("GetService", []interface{}{name}, []interface{}{service, err})
 }
 
-func (c *MockKnServingClient) GetService(name string) (*servingv1.Service, error) {
+func (c *MockKnServingClient) GetService(ctx context.Context, name string) (*servingv1.Service, error) {
 	call := c.recorder.r.VerifyCall("GetService", name)
 	return call.Result[0].(*servingv1.Service), mock.ErrorOrNil(call.Result[1])
 }
@@ -74,7 +75,7 @@ func (sr *ServingRecorder) ListServices(opts interface{}, serviceList *servingv1
 	sr.r.Add("ListServices", []interface{}{opts}, []interface{}{serviceList, err})
 }
 
-func (c *MockKnServingClient) ListServices(opts ...ListConfig) (*servingv1.ServiceList, error) {
+func (c *MockKnServingClient) ListServices(ctx context.Context, opts ...ListConfig) (*servingv1.ServiceList, error) {
 	call := c.recorder.r.VerifyCall("ListServices", opts)
 	return call.Result[0].(*servingv1.ServiceList), mock.ErrorOrNil(call.Result[1])
 }
@@ -84,7 +85,7 @@ func (sr *ServingRecorder) CreateService(service interface{}, err error) {
 	sr.r.Add("CreateService", []interface{}{service}, []interface{}{err})
 }
 
-func (c *MockKnServingClient) CreateService(service *servingv1.Service) error {
+func (c *MockKnServingClient) CreateService(ctx context.Context, service *servingv1.Service) error {
 	call := c.recorder.r.VerifyCall("CreateService", service)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -94,14 +95,14 @@ func (sr *ServingRecorder) UpdateService(service interface{}, hasChanged bool, e
 	sr.r.Add("UpdateService", []interface{}{service}, []interface{}{hasChanged, err})
 }
 
-func (c *MockKnServingClient) UpdateService(service *servingv1.Service) (bool, error) {
+func (c *MockKnServingClient) UpdateService(ctx context.Context, service *servingv1.Service) (bool, error) {
 	call := c.recorder.r.VerifyCall("UpdateService", service)
 	return call.Result[0].(bool), mock.ErrorOrNil(call.Result[1])
 }
 
 // Delegate to shared retry method
-func (c *MockKnServingClient) UpdateServiceWithRetry(name string, updateFunc ServiceUpdateFunc, maxRetry int) (bool, error) {
-	return updateServiceWithRetry(c, name, updateFunc, maxRetry)
+func (c *MockKnServingClient) UpdateServiceWithRetry(ctx context.Context, name string, updateFunc ServiceUpdateFunc, maxRetry int) (bool, error) {
+	return updateServiceWithRetry(ctx, c, name, updateFunc, maxRetry)
 }
 
 // Update the given service
@@ -109,7 +110,7 @@ func (sr *ServingRecorder) ApplyService(service interface{}, hasChanged bool, er
 	sr.r.Add("ApplyService", []interface{}{service}, []interface{}{hasChanged, err})
 }
 
-func (c *MockKnServingClient) ApplyService(service *servingv1.Service) (bool, error) {
+func (c *MockKnServingClient) ApplyService(ctx context.Context, service *servingv1.Service) (bool, error) {
 	call := c.recorder.r.VerifyCall("ApplyService", service)
 	return call.Result[0].(bool), mock.ErrorOrNil(call.Result[1])
 }
@@ -119,7 +120,7 @@ func (sr *ServingRecorder) DeleteService(name, timeout interface{}, err error) {
 	sr.r.Add("DeleteService", []interface{}{name, timeout}, []interface{}{err})
 }
 
-func (c *MockKnServingClient) DeleteService(name string, timeout time.Duration) error {
+func (c *MockKnServingClient) DeleteService(ctx context.Context, name string, timeout time.Duration) error {
 	call := c.recorder.r.VerifyCall("DeleteService", name, timeout)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -129,7 +130,7 @@ func (sr *ServingRecorder) WaitForService(name interface{}, timeout interface{},
 	sr.r.Add("WaitForService", []interface{}{name, timeout, callback}, []interface{}{err, duration})
 }
 
-func (c *MockKnServingClient) WaitForService(name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration) {
+func (c *MockKnServingClient) WaitForService(ctx context.Context, name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration) {
 	call := c.recorder.r.VerifyCall("WaitForService", name, timeout, msgCallback)
 	return mock.ErrorOrNil(call.Result[0]), call.Result[1].(time.Duration)
 }
@@ -139,7 +140,7 @@ func (sr *ServingRecorder) GetRevision(name interface{}, revision *servingv1.Rev
 	sr.r.Add("GetRevision", []interface{}{name}, []interface{}{revision, err})
 }
 
-func (c *MockKnServingClient) GetRevision(name string) (*servingv1.Revision, error) {
+func (c *MockKnServingClient) GetRevision(ctx context.Context, name string) (*servingv1.Revision, error) {
 	call := c.recorder.r.VerifyCall("GetRevision", name)
 	return call.Result[0].(*servingv1.Revision), mock.ErrorOrNil(call.Result[1])
 }
@@ -149,7 +150,7 @@ func (sr *ServingRecorder) ListRevisions(opts interface{}, revisionList *serving
 	sr.r.Add("ListRevisions", []interface{}{opts}, []interface{}{revisionList, err})
 }
 
-func (c *MockKnServingClient) ListRevisions(opts ...ListConfig) (*servingv1.RevisionList, error) {
+func (c *MockKnServingClient) ListRevisions(ctx context.Context, opts ...ListConfig) (*servingv1.RevisionList, error) {
 	call := c.recorder.r.VerifyCall("ListRevisions", opts)
 	return call.Result[0].(*servingv1.RevisionList), mock.ErrorOrNil(call.Result[1])
 }
@@ -159,7 +160,7 @@ func (sr *ServingRecorder) DeleteRevision(name, timeout interface{}, err error)
 	sr.r.Add("DeleteRevision", []interface{}{name, timeout}, []interface{}{err})
 }
 
-func (c *MockKnServingClient) DeleteRevision(name string, timeout time.Duration) error {
+func (c *MockKnServingClient) DeleteRevision(ctx context.Context, name string, timeout time.Duration) error {
 	call := c.recorder.r.VerifyCall("DeleteRevision", name, timeout)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -169,7 +170,7 @@ func (sr *ServingRecorder) GetRoute(name interface{}, route *servingv1.Route, er
 	sr.r.Add("GetRoute", []interface{}{name}, []interface{}{route, err})
 }
 
-func (c *MockKnServingClient) GetRoute(name string) (*servingv1.Route, error) {
+func (c *MockKnServingClient) GetRoute(ctx context.Context, name string) (*servingv1.Route, error) {
 	call := c.recorder.r.VerifyCall("GetRoute", name)
 	return call.Result[0].(*servingv1.Route), mock.ErrorOrNil(call.Result[1])
 
@@ -180,7 +181,7 @@ func (sr *ServingRecorder) ListRoutes(opts interface{}, routeList *servingv1.Rou
 	sr.r.Add("ListRoutes", []interface{}{opts}, []interface{}{routeList, err})
 }
 
-func (c *MockKnServingClient) ListRoutes(opts ...ListConfig) (*servingv1.RouteList, error) {
+func (c *MockKnServingClient) ListRoutes(ctx context.Context, opts ...ListConfig) (*servingv1.RouteList, error) {
 	call := c.recorder.r.VerifyCall("ListRoutes", opts)
 	return call.Result[0].(*servingv1.RouteList), mock.ErrorOrNil(call.Result[1])
 }
@@ -192,12 +193,12 @@ func (sr *ServingRecorder) GetConfiguration(name string, config *servingv1.Confi
 }
 
 // GetBaseRevision returns the base revision
-func (c *MockKnServingClient) GetBaseRevision(service *servingv1.Service) (*servingv1.Revision, error) {
-	return getBaseRevision(c, service)
+func (c *MockKnServingClient) GetBaseRevision(ctx context.Context, service *servingv1.Service) (*servingv1.Revision, error) {
+	return getBaseRevision(ctx, c, service)
 }
 
 // GetConfiguration returns a configuration looked up by name
-func (c *MockKnServingClient) GetConfiguration(name string) (*servingv1.Configuration, error) {
+func (c *MockKnServingClient) GetConfiguration(ctx context.Context, name string) (*servingv1.Configuration, error) {
 	call := c.recorder.r.VerifyCall("GetConfiguration", name)
 	return call.Result[0].(*servingv1.Configuration), mock.ErrorOrNil(call.Result[1])
 }
@@ -208,7 +209,7 @@ func (sr *ServingRecorder) CreateRevision(revision interface{}, err error) {
 }
 
 // CreateRevision creates a new revision
-func (c *MockKnServingClient) CreateRevision(revision *servingv1.Revision) error {
+func (c *MockKnServingClient) CreateRevision(ctx context.Context, revision *servingv1.Revision) error {
 	call := c.recorder.r.VerifyCall("CreateRevision", revision)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -219,7 +220,7 @@ func (sr *ServingRecorder) UpdateRevision(revision interface{}, err error) {
 }
 
 // UpdateRevision updates given revision
-func (c *MockKnServingClient) UpdateRevision(revision *servingv1.Revision) error {
+func (c *MockKnServingClient) UpdateRevision(ctx context.Context, revision *servingv1.Revision) error {
 	call := c.recorder.r.VerifyCall("UpdateRevision", revision)
 	return mock.ErrorOrNil(call.Result[0])
 }
diff --git a/pkg/serving/v1/gitops.go b/pkg/serving/v1/gitops.go
index d27ad8d4..72f1b152 100644
--- a/pkg/serving/v1/gitops.go
+++ b/pkg/serving/v1/gitops.go
@@ -15,6 +15,7 @@
 package v1
 
 import (
+	"context"
 	"fmt"
 	"os"
 	"path/filepath"
@@ -82,12 +83,12 @@ func (cl *knServingGitOpsClient) Namespace() string {
 }
 
 // GetService returns the knative service for the name
-func (cl *knServingGitOpsClient) GetService(name string) (*servingv1.Service, error) {
+func (cl *knServingGitOpsClient) GetService(ctx context.Context, name string) (*servingv1.Service, error) {
 	return readServiceFromFile(cl.getKsvcFilePath(name), name)
 }
 
 // ListServices lists the services in the path provided
-func (cl *knServingGitOpsClient) ListServices(config ...ListConfig) (*servingv1.ServiceList, error) {
+func (cl *knServingGitOpsClient) ListServices(ctx context.Context, opts ...ListConfig) (*servingv1.ServiceList, error) {
 	svcs, err := cl.listServicesFromDirectory()
 	if err != nil {
 		return nil, err
@@ -149,7 +150,7 @@ func (cl *knServingGitOpsClient) listServicesFromDirectory() ([]servingv1.Servic
 
 // CreateService saves the knative service spec in
 // yaml format in the local path provided
-func (cl *knServingGitOpsClient) CreateService(service *servingv1.Service) error {
+func (cl *knServingGitOpsClient) CreateService(ctx context.Context, service *servingv1.Service) error {
 	updateServingGvk(service)
 	if cl.fileMode {
 		return writeFile(service, cl.dir, cl.fileFormat)
@@ -178,27 +179,27 @@ func writeFile(obj runtime.Object, fp, format string) error {
 
 // UpdateService updates the service in
 // the local directory
-func (cl *knServingGitOpsClient) UpdateService(service *servingv1.Service) (bool, error) {
+func (cl *knServingGitOpsClient) UpdateService(ctx context.Context, service *servingv1.Service) (bool, error) {
 	// check if file exist
-	if _, err := cl.GetService(service.ObjectMeta.Name); err != nil {
+	if _, err := cl.GetService(ctx, service.ObjectMeta.Name); err != nil {
 		return false, err
 	}
 	// replace file
-	return true, cl.CreateService(service)
+	return true, cl.CreateService(ctx, service)
 }
 
 // UpdateServiceWithRetry updates the service in the local directory
-func (cl *knServingGitOpsClient) UpdateServiceWithRetry(name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error) {
-	return updateServiceWithRetry(cl, name, updateFunc, nrRetries)
+func (cl *knServingGitOpsClient) UpdateServiceWithRetry(ctx context.Context, name string, updateFunc ServiceUpdateFunc, nrRetries int) (bool, error) {
+	return updateServiceWithRetry(ctx, cl, name, updateFunc, nrRetries)
 }
 
 // DeleteService removes the file from the local file system
-func (cl *knServingGitOpsClient) DeleteService(serviceName string, timeout time.Duration) error {
+func (cl *knServingGitOpsClient) DeleteService(ctx context.Context, serviceName string, timeout time.Duration) error {
 	return os.Remove(cl.getKsvcFilePath(serviceName))
 }
 
 // WaitForService always returns success for this client
-func (cl *knServingGitOpsClient) WaitForService(name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration) {
+func (cl *knServingGitOpsClient) WaitForService(ctx context.Context, name string, timeout time.Duration, msgCallback wait.MessageCallback) (error, time.Duration) {
 	return nil, 1 * time.Second
 }
 
diff --git a/pkg/sources/v1alpha2/apiserver_client.go b/pkg/sources/v1alpha2/apiserver_client.go
index 285255e7..6e155f44 100644
--- a/pkg/sources/v1alpha2/apiserver_client.go
+++ b/pkg/sources/v1alpha2/apiserver_client.go
@@ -33,20 +33,20 @@ import (
 type KnAPIServerSourcesClient interface {
 
 	// Get an ApiServerSource by name
-	GetAPIServerSource(name string) (*v1alpha2.ApiServerSource, error)
+	GetAPIServerSource(ctx context.Context, name string) (*v1alpha2.ApiServerSource, error)
 
 	// Create an ApiServerSource by object
-	CreateAPIServerSource(apiSource *v1alpha2.ApiServerSource) error
+	CreateAPIServerSource(ctx context.Context, apiSource *v1alpha2.ApiServerSource) error
 
 	// Update an ApiServerSource by object
-	UpdateAPIServerSource(apiSource *v1alpha2.ApiServerSource) error
+	UpdateAPIServerSource(ctx context.Context, apiSource *v1alpha2.ApiServerSource) error
 
 	// Delete an ApiServerSource by name
-	DeleteAPIServerSource(name string) error
+	DeleteAPIServerSource(ctx context.Context, name string) error
 
 	// List ApiServerSource
 	// TODO: Support list configs like in service list
-	ListAPIServerSource() (*v1alpha2.ApiServerSourceList, error)
+	ListAPIServerSource(ctx context.Context) (*v1alpha2.ApiServerSourceList, error)
 
 	// Get namespace for this client
 	Namespace() string
@@ -69,8 +69,8 @@ func newKnAPIServerSourcesClient(client clientv1alpha2.ApiServerSourceInterface,
 }
 
 //GetAPIServerSource returns apiSource object if present
-func (c *apiServerSourcesClient) GetAPIServerSource(name string) (*v1alpha2.ApiServerSource, error) {
-	apiSource, err := c.client.Get(context.TODO(), name, metav1.GetOptions{})
+func (c *apiServerSourcesClient) GetAPIServerSource(ctx context.Context, name string) (*v1alpha2.ApiServerSource, error) {
+	apiSource, err := c.client.Get(ctx, name, metav1.GetOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
@@ -82,8 +82,8 @@ func (c *apiServerSourcesClient) GetAPIServerSource(name string) (*v1alpha2.ApiS
 }
 
 //CreateAPIServerSource is used to create an instance of ApiServerSource
-func (c *apiServerSourcesClient) CreateAPIServerSource(apiSource *v1alpha2.ApiServerSource) error {
-	_, err := c.client.Create(context.TODO(), apiSource, metav1.CreateOptions{})
+func (c *apiServerSourcesClient) CreateAPIServerSource(ctx context.Context, apiSource *v1alpha2.ApiServerSource) error {
+	_, err := c.client.Create(ctx, apiSource, metav1.CreateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
@@ -92,8 +92,8 @@ func (c *apiServerSourcesClient) CreateAPIServerSource(apiSource *v1alpha2.ApiSe
 }
 
 //UpdateAPIServerSource is used to update an instance of ApiServerSource
-func (c *apiServerSourcesClient) UpdateAPIServerSource(apiSource *v1alpha2.ApiServerSource) error {
-	_, err := c.client.Update(context.TODO(), apiSource, metav1.UpdateOptions{})
+func (c *apiServerSourcesClient) UpdateAPIServerSource(ctx context.Context, apiSource *v1alpha2.ApiServerSource) error {
+	_, err := c.client.Update(ctx, apiSource, metav1.UpdateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
@@ -102,8 +102,8 @@ func (c *apiServerSourcesClient) UpdateAPIServerSource(apiSource *v1alpha2.ApiSe
 }
 
 //DeleteAPIServerSource is used to create an instance of ApiServerSource
-func (c *apiServerSourcesClient) DeleteAPIServerSource(name string) error {
-	err := c.client.Delete(context.TODO(), name, metav1.DeleteOptions{})
+func (c *apiServerSourcesClient) DeleteAPIServerSource(ctx context.Context, name string) error {
+	err := c.client.Delete(ctx, name, metav1.DeleteOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
@@ -116,8 +116,8 @@ func (c *apiServerSourcesClient) Namespace() string {
 }
 
 // ListAPIServerSource returns the available ApiServer type sources
-func (c *apiServerSourcesClient) ListAPIServerSource() (*v1alpha2.ApiServerSourceList, error) {
-	sourceList, err := c.client.List(context.TODO(), metav1.ListOptions{})
+func (c *apiServerSourcesClient) ListAPIServerSource(ctx context.Context) (*v1alpha2.ApiServerSourceList, error) {
+	sourceList, err := c.client.List(ctx, metav1.ListOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
diff --git a/pkg/sources/v1alpha2/apiserver_client_mock.go b/pkg/sources/v1alpha2/apiserver_client_mock.go
index be02e2ab..ed8fc7da 100644
--- a/pkg/sources/v1alpha2/apiserver_client_mock.go
+++ b/pkg/sources/v1alpha2/apiserver_client_mock.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	v1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -64,7 +65,7 @@ func (sr *APIServerSourcesRecorder) GetAPIServerSource(name interface{}, apiServ
 }
 
 // GetAPIServerSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnAPIServerSourceClient) GetAPIServerSource(name string) (*v1alpha2.ApiServerSource, error) {
+func (c *MockKnAPIServerSourceClient) GetAPIServerSource(ctx context.Context, name string) (*v1alpha2.ApiServerSource, error) {
 	call := c.recorder.r.VerifyCall("GetApiServerSource", name)
 	return call.Result[0].(*v1alpha2.ApiServerSource), mock.ErrorOrNil(call.Result[1])
 }
@@ -75,7 +76,7 @@ func (sr *APIServerSourcesRecorder) CreateAPIServerSource(apiServerSource interf
 }
 
 // CreateAPIServerSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnAPIServerSourceClient) CreateAPIServerSource(apiServerSource *v1alpha2.ApiServerSource) error {
+func (c *MockKnAPIServerSourceClient) CreateAPIServerSource(ctx context.Context, apiServerSource *v1alpha2.ApiServerSource) error {
 	call := c.recorder.r.VerifyCall("CreateApiServerSource", apiServerSource)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -86,7 +87,7 @@ func (sr *APIServerSourcesRecorder) UpdateAPIServerSource(apiServerSource interf
 }
 
 // UpdateAPIServerSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnAPIServerSourceClient) UpdateAPIServerSource(apiServerSource *v1alpha2.ApiServerSource) error {
+func (c *MockKnAPIServerSourceClient) UpdateAPIServerSource(ctx context.Context, apiServerSource *v1alpha2.ApiServerSource) error {
 	call := c.recorder.r.VerifyCall("UpdateAPIServerSource", apiServerSource)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -97,7 +98,7 @@ func (sr *APIServerSourcesRecorder) DeleteAPIServerSource(name interface{}, err
 }
 
 // DeleteAPIServerSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnAPIServerSourceClient) DeleteAPIServerSource(name string) error {
+func (c *MockKnAPIServerSourceClient) DeleteAPIServerSource(ctx context.Context, name string) error {
 	call := c.recorder.r.VerifyCall("DeleteAPIServerSource", name)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -108,7 +109,7 @@ func (sr *APIServerSourcesRecorder) ListAPIServerSource(apiJobSourceList *v1alph
 }
 
 // ListAPIServerSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnAPIServerSourceClient) ListAPIServerSource() (*v1alpha2.ApiServerSourceList, error) {
+func (c *MockKnAPIServerSourceClient) ListAPIServerSource(context.Context) (*v1alpha2.ApiServerSourceList, error) {
 	call := c.recorder.r.VerifyCall("ListAPIServerSource")
 	return call.Result[0].(*v1alpha2.ApiServerSourceList), mock.ErrorOrNil(call.Result[1])
 }
diff --git a/pkg/sources/v1alpha2/binding_client.go b/pkg/sources/v1alpha2/binding_client.go
index e3a4d027..1c0ea00d 100644
--- a/pkg/sources/v1alpha2/binding_client.go
+++ b/pkg/sources/v1alpha2/binding_client.go
@@ -38,15 +38,15 @@ type KnSinkBindingClient interface {
 	// Namespace in which this client is operating for
 	Namespace() string
 	// CreateSinkBinding is used to create an instance of binding
-	CreateSinkBinding(binding *v1alpha2.SinkBinding) error
+	CreateSinkBinding(ctx context.Context, binding *v1alpha2.SinkBinding) error
 	// DeleteSinkBinding is used to delete an instance of binding
-	DeleteSinkBinding(name string) error
+	DeleteSinkBinding(ctx context.Context, name string) error
 	// GetSinkBinding is used to get an instance of binding
-	GetSinkBinding(name string) (*v1alpha2.SinkBinding, error)
+	GetSinkBinding(ctx context.Context, name string) (*v1alpha2.SinkBinding, error)
 	// ListSinkBinding returns list of binding CRDs
-	ListSinkBindings() (*v1alpha2.SinkBindingList, error)
+	ListSinkBindings(ctx context.Context) (*v1alpha2.SinkBindingList, error)
 	// UpdateSinkBinding is used to update an instance of binding
-	UpdateSinkBinding(binding *v1alpha2.SinkBinding) error
+	UpdateSinkBinding(ctx context.Context, binding *v1alpha2.SinkBinding) error
 }
 
 // KnSinkBindingClient is a combination of Sources client interface and namespace
@@ -66,8 +66,8 @@ func newKnSinkBindingClient(client clientv1alpha2.SinkBindingInterface, namespac
 }
 
 //CreateSinkBinding is used to create an instance of binding
-func (c *knBindingClient) CreateSinkBinding(binding *v1alpha2.SinkBinding) error {
-	_, err := c.client.Create(context.TODO(), binding, metav1.CreateOptions{})
+func (c *knBindingClient) CreateSinkBinding(ctx context.Context, binding *v1alpha2.SinkBinding) error {
+	_, err := c.client.Create(ctx, binding, metav1.CreateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
@@ -75,8 +75,8 @@ func (c *knBindingClient) CreateSinkBinding(binding *v1alpha2.SinkBinding) error
 }
 
 //DeleteSinkBinding is used to delete an instance of binding
-func (c *knBindingClient) DeleteSinkBinding(name string) error {
-	err := c.client.Delete(context.TODO(), name, apisv1.DeleteOptions{})
+func (c *knBindingClient) DeleteSinkBinding(ctx context.Context, name string) error {
+	err := c.client.Delete(ctx, name, apisv1.DeleteOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
@@ -84,8 +84,8 @@ func (c *knBindingClient) DeleteSinkBinding(name string) error {
 }
 
 //GetSinkBinding is used to get an instance of binding
-func (c *knBindingClient) GetSinkBinding(name string) (*v1alpha2.SinkBinding, error) {
-	binding, err := c.client.Get(context.TODO(), name, apisv1.GetOptions{})
+func (c *knBindingClient) GetSinkBinding(ctx context.Context, name string) (*v1alpha2.SinkBinding, error) {
+	binding, err := c.client.Get(ctx, name, apisv1.GetOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
@@ -96,8 +96,8 @@ func (c *knBindingClient) GetSinkBinding(name string) (*v1alpha2.SinkBinding, er
 	return binding, nil
 }
 
-func (c *knBindingClient) ListSinkBindings() (*v1alpha2.SinkBindingList, error) {
-	bindingList, err := c.client.List(context.TODO(), apisv1.ListOptions{})
+func (c *knBindingClient) ListSinkBindings(ctx context.Context) (*v1alpha2.SinkBindingList, error) {
+	bindingList, err := c.client.List(ctx, apisv1.ListOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
@@ -120,8 +120,8 @@ func (c *knBindingClient) ListSinkBindings() (*v1alpha2.SinkBindingList, error)
 }
 
 //CreateSinkBinding is used to create an instance of binding
-func (c *knBindingClient) UpdateSinkBinding(binding *v1alpha2.SinkBinding) error {
-	_, err := c.client.Update(context.TODO(), binding, metav1.UpdateOptions{})
+func (c *knBindingClient) UpdateSinkBinding(ctx context.Context, binding *v1alpha2.SinkBinding) error {
+	_, err := c.client.Update(ctx, binding, metav1.UpdateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
diff --git a/pkg/sources/v1alpha2/binding_client_mock.go b/pkg/sources/v1alpha2/binding_client_mock.go
index 37af4961..151a7ba6 100644
--- a/pkg/sources/v1alpha2/binding_client_mock.go
+++ b/pkg/sources/v1alpha2/binding_client_mock.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	v1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -64,7 +65,7 @@ func (sr *EventingRecorder) CreateSinkBinding(binding interface{}, err error) {
 }
 
 // CreateSinkBinding performs a previously recorded action
-func (c *MockKnSinkBindingClient) CreateSinkBinding(binding *v1alpha2.SinkBinding) error {
+func (c *MockKnSinkBindingClient) CreateSinkBinding(ctx context.Context, binding *v1alpha2.SinkBinding) error {
 	call := c.recorder.r.VerifyCall("CreateSinkBinding", binding)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -75,7 +76,7 @@ func (sr *EventingRecorder) GetSinkBinding(name interface{}, binding *v1alpha2.S
 }
 
 // GetSinkBinding performs a previously recorded action
-func (c *MockKnSinkBindingClient) GetSinkBinding(name string) (*v1alpha2.SinkBinding, error) {
+func (c *MockKnSinkBindingClient) GetSinkBinding(ctx context.Context, name string) (*v1alpha2.SinkBinding, error) {
 	call := c.recorder.r.VerifyCall("GetSinkBinding", name)
 	return call.Result[0].(*v1alpha2.SinkBinding), mock.ErrorOrNil(call.Result[1])
 }
@@ -86,7 +87,7 @@ func (sr *EventingRecorder) DeleteSinkBinding(name interface{}, err error) {
 }
 
 // DeleteSinkBinding performs a previously recorded action, failing if non has been registered
-func (c *MockKnSinkBindingClient) DeleteSinkBinding(name string) error {
+func (c *MockKnSinkBindingClient) DeleteSinkBinding(ctx context.Context, name string) error {
 	call := c.recorder.r.VerifyCall("DeleteSinkBinding", name)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -97,7 +98,7 @@ func (sr *EventingRecorder) ListSinkBindings(bindingList *v1alpha2.SinkBindingLi
 }
 
 // ListSinkBindings performs a previously recorded action
-func (c *MockKnSinkBindingClient) ListSinkBindings() (*v1alpha2.SinkBindingList, error) {
+func (c *MockKnSinkBindingClient) ListSinkBindings(context.Context) (*v1alpha2.SinkBindingList, error) {
 	call := c.recorder.r.VerifyCall("ListSinkBindings")
 	return call.Result[0].(*v1alpha2.SinkBindingList), mock.ErrorOrNil(call.Result[1])
 }
@@ -108,7 +109,7 @@ func (sr *EventingRecorder) UpdateSinkBinding(binding interface{}, err error) {
 }
 
 // UpdateSinkBinding performs a previously recorded action
-func (c *MockKnSinkBindingClient) UpdateSinkBinding(binding *v1alpha2.SinkBinding) error {
+func (c *MockKnSinkBindingClient) UpdateSinkBinding(ctx context.Context, binding *v1alpha2.SinkBinding) error {
 	call := c.recorder.r.VerifyCall("UpdateSinkBinding")
 	return mock.ErrorOrNil(call.Result[0])
 }
diff --git a/pkg/sources/v1alpha2/container_client.go b/pkg/sources/v1alpha2/container_client.go
index 33a2e595..e97e2bc1 100644
--- a/pkg/sources/v1alpha2/container_client.go
+++ b/pkg/sources/v1alpha2/container_client.go
@@ -34,19 +34,19 @@ import (
 type KnContainerSourcesClient interface {
 
 	// Get an ContainerSource by name
-	GetContainerSource(name string) (*v1alpha2.ContainerSource, error)
+	GetContainerSource(ctx context.Context, name string) (*v1alpha2.ContainerSource, error)
 
 	// Create an ContainerSource by object
-	CreateContainerSource(containerSrc *v1alpha2.ContainerSource) error
+	CreateContainerSource(ctx context.Context, containerSrc *v1alpha2.ContainerSource) error
 
 	// Update an ContainerSource by object
-	UpdateContainerSource(containerSrc *v1alpha2.ContainerSource) error
+	UpdateContainerSource(ctx context.Context, containerSrc *v1alpha2.ContainerSource) error
 
 	// Delete an ContainerSource by name
-	DeleteContainerSource(name string) error
+	DeleteContainerSource(name string, ctx context.Context) error
 
 	// List ContainerSource
-	ListContainerSources() (*v1alpha2.ContainerSourceList, error)
+	ListContainerSources(ctx context.Context) (*v1alpha2.ContainerSourceList, error)
 
 	// Get namespace for this client
 	Namespace() string
@@ -69,8 +69,8 @@ func newKnContainerSourcesClient(client clientv1alpha2.ContainerSourceInterface,
 }
 
 //GetContainerSource returns containerSrc object if present
-func (c *containerSourcesClient) GetContainerSource(name string) (*v1alpha2.ContainerSource, error) {
-	containerSrc, err := c.client.Get(context.TODO(), name, metav1.GetOptions{})
+func (c *containerSourcesClient) GetContainerSource(ctx context.Context, name string) (*v1alpha2.ContainerSource, error) {
+	containerSrc, err := c.client.Get(ctx, name, metav1.GetOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
@@ -79,8 +79,8 @@ func (c *containerSourcesClient) GetContainerSource(name string) (*v1alpha2.Cont
 }
 
 //CreateContainerSource is used to create an instance of ContainerSource
-func (c *containerSourcesClient) CreateContainerSource(containerSrc *v1alpha2.ContainerSource) error {
-	_, err := c.client.Create(context.TODO(), containerSrc, metav1.CreateOptions{})
+func (c *containerSourcesClient) CreateContainerSource(ctx context.Context, containerSrc *v1alpha2.ContainerSource) error {
+	_, err := c.client.Create(ctx, containerSrc, metav1.CreateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
@@ -89,8 +89,8 @@ func (c *containerSourcesClient) CreateContainerSource(containerSrc *v1alpha2.Co
 }
 
 //UpdateContainerSource is used to update an instance of ContainerSource
-func (c *containerSourcesClient) UpdateContainerSource(containerSrc *v1alpha2.ContainerSource) error {
-	_, err := c.client.Update(context.TODO(), containerSrc, metav1.UpdateOptions{})
+func (c *containerSourcesClient) UpdateContainerSource(ctx context.Context, containerSrc *v1alpha2.ContainerSource) error {
+	_, err := c.client.Update(ctx, containerSrc, metav1.UpdateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
@@ -99,8 +99,8 @@ func (c *containerSourcesClient) UpdateContainerSource(containerSrc *v1alpha2.Co
 }
 
 //DeleteContainerSource is used to create an instance of ContainerSource
-func (c *containerSourcesClient) DeleteContainerSource(name string) error {
-	return c.client.Delete(context.TODO(), name, metav1.DeleteOptions{})
+func (c *containerSourcesClient) DeleteContainerSource(name string, ctx context.Context) error {
+	return c.client.Delete(ctx, name, metav1.DeleteOptions{})
 }
 
 // Return the client's namespace
@@ -109,8 +109,8 @@ func (c *containerSourcesClient) Namespace() string {
 }
 
 // ListContainerSource returns the available container sources
-func (c *containerSourcesClient) ListContainerSources() (*v1alpha2.ContainerSourceList, error) {
-	sourceList, err := c.client.List(context.TODO(), metav1.ListOptions{})
+func (c *containerSourcesClient) ListContainerSources(ctx context.Context) (*v1alpha2.ContainerSourceList, error) {
+	sourceList, err := c.client.List(ctx, metav1.ListOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
diff --git a/pkg/sources/v1alpha2/container_client_mock.go b/pkg/sources/v1alpha2/container_client_mock.go
index 37eb4f62..0234959b 100644
--- a/pkg/sources/v1alpha2/container_client_mock.go
+++ b/pkg/sources/v1alpha2/container_client_mock.go
@@ -17,6 +17,7 @@ limitations under the License.
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	"knative.dev/client/pkg/util/mock"
@@ -67,7 +68,7 @@ func (sr *ConainterSourceRecorder) CreateContainerSource(binding interface{}, er
 }
 
 // CreateContainerSource performs a previously recorded action
-func (c *MockKnContainerSourceClient) CreateContainerSource(binding *v1alpha2.ContainerSource) error {
+func (c *MockKnContainerSourceClient) CreateContainerSource(ctx context.Context, binding *v1alpha2.ContainerSource) error {
 	call := c.recorder.r.VerifyCall("CreateContainerSource", binding)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -78,7 +79,7 @@ func (sr *ConainterSourceRecorder) GetContainerSource(name interface{}, binding
 }
 
 // GetContainerSource performs a previously recorded action
-func (c *MockKnContainerSourceClient) GetContainerSource(name string) (*v1alpha2.ContainerSource, error) {
+func (c *MockKnContainerSourceClient) GetContainerSource(ctx context.Context, name string) (*v1alpha2.ContainerSource, error) {
 	call := c.recorder.r.VerifyCall("GetContainerSource", name)
 	return call.Result[0].(*v1alpha2.ContainerSource), mock.ErrorOrNil(call.Result[1])
 }
@@ -89,7 +90,7 @@ func (sr *ConainterSourceRecorder) DeleteContainerSource(name interface{}, err e
 }
 
 // DeleteContainerSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnContainerSourceClient) DeleteContainerSource(name string) error {
+func (c *MockKnContainerSourceClient) DeleteContainerSource(name string, ctx context.Context) error {
 	call := c.recorder.r.VerifyCall("DeleteContainerSource", name)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -100,7 +101,7 @@ func (sr *ConainterSourceRecorder) ListContainerSources(bindingList *v1alpha2.Co
 }
 
 // ListContainerSources performs a previously recorded action
-func (c *MockKnContainerSourceClient) ListContainerSources() (*v1alpha2.ContainerSourceList, error) {
+func (c *MockKnContainerSourceClient) ListContainerSources(context.Context) (*v1alpha2.ContainerSourceList, error) {
 	call := c.recorder.r.VerifyCall("ListContainerSources")
 	return call.Result[0].(*v1alpha2.ContainerSourceList), mock.ErrorOrNil(call.Result[1])
 }
@@ -111,7 +112,7 @@ func (sr *ConainterSourceRecorder) UpdateContainerSource(binding interface{}, er
 }
 
 // UpdateContainerSource performs a previously recorded action
-func (c *MockKnContainerSourceClient) UpdateContainerSource(binding *v1alpha2.ContainerSource) error {
+func (c *MockKnContainerSourceClient) UpdateContainerSource(ctx context.Context, containerSrc *v1alpha2.ContainerSource) error {
 	call := c.recorder.r.VerifyCall("UpdateContainerSource")
 	return mock.ErrorOrNil(call.Result[0])
 }
diff --git a/pkg/sources/v1alpha2/ping_client.go b/pkg/sources/v1alpha2/ping_client.go
index 029d3f85..a3017366 100644
--- a/pkg/sources/v1alpha2/ping_client.go
+++ b/pkg/sources/v1alpha2/ping_client.go
@@ -31,20 +31,20 @@ import (
 type KnPingSourcesClient interface {
 
 	// GetPingSource fetches a Ping source by its name
-	GetPingSource(name string) (*v1alpha2.PingSource, error)
+	GetPingSource(ctx context.Context, name string) (*v1alpha2.PingSource, error)
 
 	// CreatePingSource creates a Ping source
-	CreatePingSource(pingSource *v1alpha2.PingSource) error
+	CreatePingSource(ctx context.Context, pingSource *v1alpha2.PingSource) error
 
 	// UpdatePingSource updates a Ping source
-	UpdatePingSource(pingSource *v1alpha2.PingSource) error
+	UpdatePingSource(ctx context.Context, pingSource *v1alpha2.PingSource) error
 
 	// DeletePingSource deletes a Ping source
-	DeletePingSource(name string) error
+	DeletePingSource(ctx context.Context, name string) error
 
 	// ListPingSource lists all Ping sources
 	// TODO: Support list configs like in service list
-	ListPingSource() (*v1alpha2.PingSourceList, error)
+	ListPingSource(ctx context.Context) (*v1alpha2.PingSourceList, error)
 
 	// Get namespace for this source
 	Namespace() string
@@ -71,35 +71,35 @@ func (c *pingSourcesClient) Namespace() string {
 	return c.namespace
 }
 
-func (c *pingSourcesClient) CreatePingSource(pingsource *v1alpha2.PingSource) error {
+func (c *pingSourcesClient) CreatePingSource(ctx context.Context, pingsource *v1alpha2.PingSource) error {
 	if pingsource.Spec.Sink.Ref == nil && pingsource.Spec.Sink.URI == nil {
 		return fmt.Errorf("a sink is required for creating a source")
 	}
-	_, err := c.client.Create(context.TODO(), pingsource, metav1.CreateOptions{})
+	_, err := c.client.Create(ctx, pingsource, metav1.CreateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
 	return nil
 }
 
-func (c *pingSourcesClient) UpdatePingSource(pingSource *v1alpha2.PingSource) error {
-	_, err := c.client.Update(context.TODO(), pingSource, metav1.UpdateOptions{})
+func (c *pingSourcesClient) UpdatePingSource(ctx context.Context, pingSource *v1alpha2.PingSource) error {
+	_, err := c.client.Update(ctx, pingSource, metav1.UpdateOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
 	return nil
 }
 
-func (c *pingSourcesClient) DeletePingSource(name string) error {
-	err := c.client.Delete(context.TODO(), name, metav1.DeleteOptions{})
+func (c *pingSourcesClient) DeletePingSource(ctx context.Context, name string) error {
+	err := c.client.Delete(ctx, name, metav1.DeleteOptions{})
 	if err != nil {
 		return knerrors.GetError(err)
 	}
 	return nil
 }
 
-func (c *pingSourcesClient) GetPingSource(name string) (*v1alpha2.PingSource, error) {
-	source, err := c.client.Get(context.TODO(), name, metav1.GetOptions{})
+func (c *pingSourcesClient) GetPingSource(ctx context.Context, name string) (*v1alpha2.PingSource, error) {
+	source, err := c.client.Get(ctx, name, metav1.GetOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
@@ -111,8 +111,8 @@ func (c *pingSourcesClient) GetPingSource(name string) (*v1alpha2.PingSource, er
 }
 
 // ListPingSource returns the available Ping sources
-func (c *pingSourcesClient) ListPingSource() (*v1alpha2.PingSourceList, error) {
-	sourceList, err := c.client.List(context.TODO(), metav1.ListOptions{})
+func (c *pingSourcesClient) ListPingSource(ctx context.Context) (*v1alpha2.PingSourceList, error) {
+	sourceList, err := c.client.List(ctx, metav1.ListOptions{})
 	if err != nil {
 		return nil, knerrors.GetError(err)
 	}
diff --git a/pkg/sources/v1alpha2/ping_client_mock.go b/pkg/sources/v1alpha2/ping_client_mock.go
index be47e479..9cfe2a7b 100644
--- a/pkg/sources/v1alpha2/ping_client_mock.go
+++ b/pkg/sources/v1alpha2/ping_client_mock.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	"knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -63,7 +64,7 @@ func (sr *PingSourcesRecorder) CreatePingSource(pingSource interface{}, err erro
 }
 
 // CreatePingSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnPingSourceClient) CreatePingSource(pingSource *v1alpha2.PingSource) error {
+func (c *MockKnPingSourceClient) CreatePingSource(ctx context.Context, pingSource *v1alpha2.PingSource) error {
 	call := c.recorder.r.VerifyCall("CreatePingSource", pingSource)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -74,7 +75,7 @@ func (sr *PingSourcesRecorder) GetPingSource(name interface{}, pingSource *v1alp
 }
 
 // GetPingSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnPingSourceClient) GetPingSource(name string) (*v1alpha2.PingSource, error) {
+func (c *MockKnPingSourceClient) GetPingSource(ctx context.Context, name string) (*v1alpha2.PingSource, error) {
 	call := c.recorder.r.VerifyCall("GetPingSource", name)
 	return call.Result[0].(*v1alpha2.PingSource), mock.ErrorOrNil(call.Result[1])
 }
@@ -85,7 +86,7 @@ func (sr *PingSourcesRecorder) UpdatePingSource(pingSource interface{}, err erro
 }
 
 // UpdatePingSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnPingSourceClient) UpdatePingSource(pingSource *v1alpha2.PingSource) error {
+func (c *MockKnPingSourceClient) UpdatePingSource(ctx context.Context, pingSource *v1alpha2.PingSource) error {
 	call := c.recorder.r.VerifyCall("UpdatePingSource", pingSource)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -96,7 +97,7 @@ func (sr *PingSourcesRecorder) DeletePingSource(name interface{}, err error) {
 }
 
 // DeletePingSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnPingSourceClient) DeletePingSource(name string) error {
+func (c *MockKnPingSourceClient) DeletePingSource(ctx context.Context, name string) error {
 	call := c.recorder.r.VerifyCall("DeletePingSource", name)
 	return mock.ErrorOrNil(call.Result[0])
 }
@@ -107,7 +108,7 @@ func (sr *PingSourcesRecorder) ListPingSource(pingSourceList *v1alpha2.PingSourc
 }
 
 // ListPingSource performs a previously recorded action, failing if non has been registered
-func (c *MockKnPingSourceClient) ListPingSource() (*v1alpha2.PingSourceList, error) {
+func (c *MockKnPingSourceClient) ListPingSource(context.Context) (*v1alpha2.PingSourceList, error) {
 	call := c.recorder.r.VerifyCall("ListPingSource")
 	return call.Result[0].(*v1alpha2.PingSourceList), mock.ErrorOrNil(call.Result[1])
 }
diff --git a/pkg/wait/poll_watcher.go b/pkg/wait/poll_watcher.go
index cdfb524a..bb5348fc 100644
--- a/pkg/wait/poll_watcher.go
+++ b/pkg/wait/poll_watcher.go
@@ -69,14 +69,14 @@ func newTickerPollInterval(d time.Duration) *tickerPollInterval {
 
 // NewWatcher makes a watch.Interface on the given resource in the client,
 // falling back to polling if the server does not support Watch.
-func NewWatcher(watchFunc watchF, c rest.Interface, ns string, resource string, name string, timeout time.Duration) (watch.Interface, error) {
-	native, err := nativeWatch(watchFunc, name, timeout)
+func NewWatcher(ctx context.Context, watchFunc watchF, c rest.Interface, ns string, resource string, name string, timeout time.Duration) (watch.Interface, error) {
+	native, err := nativeWatch(ctx, watchFunc, name, timeout)
 	if err == nil {
 		return native, nil
 	}
 	polling := &pollingWatcher{
 		c, ns, resource, name, timeout, make(chan bool), make(chan watch.Event), &sync.WaitGroup{},
-		newTickerPollInterval(time.Second), nativePoll(c, ns, resource, name)}
+		newTickerPollInterval(time.Second), nativePoll(ctx, c, ns, resource, name)}
 	polling.start()
 	return polling, nil
 }
@@ -159,18 +159,18 @@ func (w *pollingWatcher) Stop() {
 	close(w.done)
 }
 
-func nativeWatch(watchFunc watchF, name string, timeout time.Duration) (watch.Interface, error) {
+func nativeWatch(ctx context.Context, watchFunc watchF, name string, timeout time.Duration) (watch.Interface, error) {
 	opts := v1.ListOptions{
 		FieldSelector: fields.OneTermEqualSelector("metadata.name", name).String(),
 	}
 	opts.Watch = true
 	addWatchTimeout(&opts, timeout)
-	return watchFunc(context.TODO(), opts)
+	return watchFunc(ctx, opts)
 }
 
-func nativePoll(c rest.Interface, ns, resource, name string) func() (runtime.Object, error) {
+func nativePoll(ctx context.Context, c rest.Interface, ns, resource, name string) func() (runtime.Object, error) {
 	return func() (runtime.Object, error) {
-		return c.Get().Namespace(ns).Resource(resource).Name(name).Do(context.TODO()).Get()
+		return c.Get().Namespace(ns).Resource(resource).Name(name).Do(ctx).Get()
 	}
 }
 
diff --git a/pkg/wait/wait_for_ready.go b/pkg/wait/wait_for_ready.go
index 00b1b3d3..862185ed 100644
--- a/pkg/wait/wait_for_ready.go
+++ b/pkg/wait/wait_for_ready.go
@@ -15,6 +15,7 @@
 package wait
 
 import (
+	"context"
 	"fmt"
 	"io"
 	"time"
@@ -47,7 +48,7 @@ type Wait interface {
 	// Wait on resource the resource with this name
 	// and write event messages for unknown event to the status writer.
 	// Returns an error (if any) and the overall time it took to wait
-	Wait(watcher watch.Interface, name string, options Options, msgCallback MessageCallback) (error, time.Duration)
+	Wait(ctx context.Context, watcher watch.Interface, name string, options Options, msgCallback MessageCallback) (error, time.Duration)
 }
 
 type Options struct {
@@ -108,13 +109,13 @@ func NoopMessageCallback() MessageCallback {
 // (e.g. "service"), `timeout` is a timeout after which the watch should be cancelled if no
 // target state has been entered yet and `out` is used for printing out status messages
 // msgCallback gets called for every event with an 'Ready' condition == UNKNOWN with the event's message.
-func (w *waitForReadyConfig) Wait(watcher watch.Interface, name string, options Options, msgCallback MessageCallback) (error, time.Duration) {
+func (w *waitForReadyConfig) Wait(ctx context.Context, watcher watch.Interface, name string, options Options, msgCallback MessageCallback) (error, time.Duration) {
 
 	timeout := options.timeoutWithDefault()
 	floatingTimeout := timeout
 	for {
 		start := time.Now()
-		retry, timeoutReached, err := w.waitForReadyCondition(watcher, start, floatingTimeout, options.errorWindowWithDefault(), msgCallback)
+		retry, timeoutReached, err := w.waitForReadyCondition(ctx, watcher, start, floatingTimeout, options.errorWindowWithDefault(), msgCallback)
 		if err != nil {
 			return err, time.Since(start)
 		}
@@ -137,7 +138,7 @@ func (w *waitForReadyConfig) Wait(watcher watch.Interface, name string, options
 // An errorWindow can be specified which takes into account of intermediate "false" ready conditions. So before returning
 // an error, this methods waits for the errorWindow duration and if an "True" or "Unknown" event arrives in the meantime
 // for the "Ready" condition, then the method continues to wait.
-func (w *waitForReadyConfig) waitForReadyCondition(watcher watch.Interface, start time.Time, timeout time.Duration, errorWindow time.Duration, msgCallback MessageCallback) (retry bool, timeoutReached bool, err error) {
+func (w *waitForReadyConfig) waitForReadyCondition(ctx context.Context, watcher watch.Interface, start time.Time, timeout time.Duration, errorWindow time.Duration, msgCallback MessageCallback) (retry bool, timeoutReached bool, err error) {
 
 	// channel used to transport the error that has been received
 	errChan := make(chan error)
@@ -154,6 +155,8 @@ func (w *waitForReadyConfig) waitForReadyCondition(watcher watch.Interface, star
 
 	for {
 		select {
+		case <-ctx.Done():
+			return false, false, ctx.Err()
 		case <-time.After(timeout):
 			// We reached a timeout without receiving a "Ready" == "True" event
 			return false, true, nil
@@ -232,7 +235,7 @@ func (w *waitForReadyConfig) waitForReadyCondition(watcher watch.Interface, star
 }
 
 // Wait until the expected EventDone is satisfied
-func (w *waitForEvent) Wait(watcher watch.Interface, name string, options Options, msgCallback MessageCallback) (error, time.Duration) {
+func (w *waitForEvent) Wait(ctx context.Context, watcher watch.Interface, name string, options Options, msgCallback MessageCallback) (error, time.Duration) {
 	timeout := options.timeoutWithDefault()
 	start := time.Now()
 	// channel used to transport the error
@@ -241,6 +244,8 @@ func (w *waitForEvent) Wait(watcher watch.Interface, name string, options Option
 	defer timer.Stop()
 	for {
 		select {
+		case <-ctx.Done():
+			return ctx.Err(), time.Since(start)
 		case <-timer.C:
 			return fmt.Errorf("timeout: %s '%s' not ready after %d seconds", w.kind, name, int(timeout/time.Second)), time.Since(start)
 		case err := <-errChan:


Test patch:
diff --git a/pkg/dynamic/client_mock_test.go b/pkg/dynamic/client_mock_test.go
index 63852a66..74f1c523 100644
--- a/pkg/dynamic/client_mock_test.go
+++ b/pkg/dynamic/client_mock_test.go
@@ -15,6 +15,7 @@
 package dynamic
 
 import (
+	"context"
 	"testing"
 
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -37,13 +38,14 @@ func TestMockKnDynamicClient(t *testing.T) {
 	recorder.ListSourcesUsingGVKs(mock.Any(), mock.Any(), nil, nil)
 	recorder.ListChannelsUsingGVKs(mock.Any(), mock.Any(), nil, nil)
 
-	client.ListCRDs(metav1.ListOptions{})
-	client.ListSourcesTypes()
-	client.ListChannelsTypes()
-	client.ListSources(WithTypeFilter("blub"))
+	ctx := context.Background()
+	client.ListCRDs(ctx, metav1.ListOptions{})
+	client.ListSourcesTypes(ctx)
+	client.ListChannelsTypes(ctx)
+	client.ListSources(ctx, WithTypeFilter("blub"))
 	client.RawClient()
-	client.ListSourcesUsingGVKs(&[]schema.GroupVersionKind{}, WithTypeFilter("blub"))
-	client.ListChannelsUsingGVKs(&[]schema.GroupVersionKind{}, WithTypeFilter("blub"))
+	client.ListSourcesUsingGVKs(ctx, &[]schema.GroupVersionKind{}, WithTypeFilter("blub"))
+	client.ListChannelsUsingGVKs(ctx, &[]schema.GroupVersionKind{}, WithTypeFilter("blub"))
 
 	// Validate
 	recorder.Validate()
diff --git a/pkg/dynamic/client_test.go b/pkg/dynamic/client_test.go
index 8dcc2b1a..37d8eefc 100644
--- a/pkg/dynamic/client_test.go
+++ b/pkg/dynamic/client_test.go
@@ -15,6 +15,7 @@
 package dynamic
 
 import (
+	"context"
 	"strings"
 	"testing"
 
@@ -50,7 +51,7 @@ func TestListCRDs(t *testing.T) {
 
 	t.Run("List CRDs with match", func(t *testing.T) {
 		options := metav1.ListOptions{}
-		uList, err := client.ListCRDs(options)
+		uList, err := client.ListCRDs(context.Background(), options)
 		assert.NilError(t, err)
 		assert.Equal(t, len(uList.Items), 2)
 	})
@@ -59,7 +60,7 @@ func TestListCRDs(t *testing.T) {
 		options := metav1.ListOptions{}
 		sourcesLabels := labels.Set{"duck.knative.dev/source": "true1"}
 		options.LabelSelector = sourcesLabels.String()
-		uList, err := client.ListCRDs(options)
+		uList, err := client.ListCRDs(context.Background(), options)
 		if err != nil {
 			t.Fatal(err)
 		}
@@ -76,7 +77,7 @@ func TestListSourceTypes(t *testing.T) {
 	)
 
 	t.Run("List source types", func(t *testing.T) {
-		uList, err := client.ListSourcesTypes()
+		uList, err := client.ListSourcesTypes(context.Background())
 		if err != nil {
 			t.Fatal(err)
 		}
@@ -93,14 +94,14 @@ func TestListSources(t *testing.T) {
 		obj := newSourceCRDObj("foo")
 		client := createFakeKnDynamicClient(testNamespace, obj)
 		assert.Check(t, client.RawClient() != nil)
-		_, err := client.ListSources()
+		_, err := client.ListSources(context.Background())
 		assert.Check(t, err != nil)
 		assert.Check(t, util.ContainsAll(err.Error(), "can't", "find", "source", "kind", "CRD"))
 	})
 
 	t.Run("sources not installed", func(t *testing.T) {
 		client := createFakeKnDynamicClient(testNamespace)
-		_, err := client.ListSources()
+		_, err := client.ListSources(context.Background())
 		assert.Check(t, err != nil)
 		assert.Check(t, util.ContainsAll(err.Error(), "no sources", "found", "backend", "verify", "installation"))
 	})
@@ -109,7 +110,7 @@ func TestListSources(t *testing.T) {
 		client := createFakeKnDynamicClient(testNamespace,
 			newSourceCRDObjWithSpec("pingsources", "sources.knative.dev", "v1alpha1", "PingSource"),
 		)
-		sources, err := client.ListSources()
+		sources, err := client.ListSources(context.Background())
 		assert.NilError(t, err)
 		assert.Equal(t, len(sources.Items), 0)
 	})
@@ -122,7 +123,7 @@ func TestListSources(t *testing.T) {
 			newSourceUnstructuredObj("a1", "sources.knative.dev/v1alpha1", "ApiServerSource"),
 			newSourceUnstructuredObj("c1", "sources.knative.dev/v1alpha1", "CronJobSource"),
 		)
-		sources, err := client.ListSources(WithTypeFilter("pingsource"), WithTypeFilter("ApiServerSource"))
+		sources, err := client.ListSources(context.Background(), WithTypeFilter("pingsource"), WithTypeFilter("ApiServerSource"))
 		assert.NilError(t, err)
 		assert.Equal(t, len(sources.Items), 2)
 		assert.DeepEqual(t, sources.GroupVersionKind(), schema.GroupVersionKind{Group: sourceListGroup, Version: sourceListVersion, Kind: sourceListKind})
@@ -133,7 +134,7 @@ func TestListSourcesUsingGVKs(t *testing.T) {
 	t.Run("No GVKs given", func(t *testing.T) {
 		client := createFakeKnDynamicClient(testNamespace)
 		assert.Check(t, client.RawClient() != nil)
-		s, err := client.ListSourcesUsingGVKs(nil)
+		s, err := client.ListSourcesUsingGVKs(context.Background(), nil)
 		assert.NilError(t, err)
 		assert.Check(t, s == nil)
 	})
@@ -149,7 +150,7 @@ func TestListSourcesUsingGVKs(t *testing.T) {
 		gv := schema.GroupVersion{Group: "sources.knative.dev", Version: "v1alpha1"}
 		gvks := []schema.GroupVersionKind{gv.WithKind("ApiServerSource"), gv.WithKind("PingSource")}
 
-		s, err := client.ListSourcesUsingGVKs(&gvks)
+		s, err := client.ListSourcesUsingGVKs(context.Background(), &gvks)
 		assert.NilError(t, err)
 		if s == nil {
 			t.Fatal("s = nil, want not nil")
@@ -158,7 +159,7 @@ func TestListSourcesUsingGVKs(t *testing.T) {
 		assert.DeepEqual(t, s.GroupVersionKind(), schema.GroupVersionKind{Group: sourceListGroup, Version: sourceListVersion, Kind: sourceListKind})
 
 		// withType
-		s, err = client.ListSourcesUsingGVKs(&gvks, WithTypeFilter("PingSource"))
+		s, err = client.ListSourcesUsingGVKs(context.Background(), &gvks, WithTypeFilter("PingSource"))
 		assert.NilError(t, err)
 		if s == nil {
 			t.Fatal("s = nil, want not nil")
@@ -306,7 +307,7 @@ func TestListChannelsTypes(t *testing.T) {
 			newChannelCRDObjWithSpec("InMemoryChannel", "messaging.knative.dev", "v1beta1", "InMemoryChannel"),
 		)
 
-		uList, err := client.ListChannelsTypes()
+		uList, err := client.ListChannelsTypes(context.Background())
 		if err != nil {
 			t.Fatal(err)
 		}
@@ -319,7 +320,7 @@ func TestListChannelsTypes(t *testing.T) {
 			testNamespace,
 			newChannelCRDObj("foo"),
 		)
-		uList, err := client.ListChannelsTypes()
+		uList, err := client.ListChannelsTypes(context.Background())
 		assert.Check(t, err == nil)
 		if err != nil {
 			t.Fatal(err)
@@ -333,7 +334,7 @@ func TestListChannelsUsingGVKs(t *testing.T) {
 	t.Run("No GVKs given", func(t *testing.T) {
 		client := createFakeKnDynamicClient(testNamespace)
 		assert.Check(t, client.RawClient() != nil)
-		s, err := client.ListChannelsUsingGVKs(nil)
+		s, err := client.ListChannelsUsingGVKs(context.Background(), nil)
 		assert.NilError(t, err)
 		assert.Check(t, s == nil)
 	})
@@ -347,7 +348,7 @@ func TestListChannelsUsingGVKs(t *testing.T) {
 		gv := schema.GroupVersion{Group: "messaging.knative.dev", Version: "v1beta1"}
 		gvks := []schema.GroupVersionKind{gv.WithKind("InMemoryChannel")}
 
-		s, err := client.ListChannelsUsingGVKs(&gvks)
+		s, err := client.ListChannelsUsingGVKs(context.Background(), &gvks)
 		assert.NilError(t, err)
 		if s == nil {
 			t.Fatal("s = nil, want not nil")
@@ -356,7 +357,7 @@ func TestListChannelsUsingGVKs(t *testing.T) {
 		assert.DeepEqual(t, s.GroupVersionKind(), schema.GroupVersionKind{Group: messaging.GroupName, Version: channelListVersion, Kind: channelListKind})
 
 		// withType
-		s, err = client.ListChannelsUsingGVKs(&gvks, WithTypeFilter("InMemoryChannel"))
+		s, err = client.ListChannelsUsingGVKs(context.Background(), &gvks, WithTypeFilter("InMemoryChannel"))
 		assert.NilError(t, err)
 		if s == nil {
 			t.Fatal("s = nil, want not nil")
diff --git a/pkg/eventing/v1beta1/client_mock_test.go b/pkg/eventing/v1beta1/client_mock_test.go
index 38dc2610..79feaac7 100644
--- a/pkg/eventing/v1beta1/client_mock_test.go
+++ b/pkg/eventing/v1beta1/client_mock_test.go
@@ -15,6 +15,7 @@
 package v1beta1
 
 import (
+	"context"
 	"testing"
 	"time"
 
@@ -40,16 +41,17 @@ func TestMockKnClient(t *testing.T) {
 	recorder.ListBrokers(nil, nil)
 
 	// Call all service
-	client.GetTrigger("hello")
-	client.CreateTrigger(&v1beta1.Trigger{})
-	client.DeleteTrigger("hello")
-	client.ListTriggers()
-	client.UpdateTrigger(&v1beta1.Trigger{})
-
-	client.CreateBroker(&v1beta1.Broker{})
-	client.GetBroker("foo")
-	client.DeleteBroker("foo", time.Duration(10)*time.Second)
-	client.ListBrokers()
+	ctx := context.Background()
+	client.GetTrigger(ctx, "hello")
+	client.CreateTrigger(ctx, &v1beta1.Trigger{})
+	client.DeleteTrigger(ctx, "hello")
+	client.ListTriggers(ctx)
+	client.UpdateTrigger(ctx, &v1beta1.Trigger{})
+
+	client.CreateBroker(ctx, &v1beta1.Broker{})
+	client.GetBroker(ctx, "foo")
+	client.DeleteBroker(ctx, "foo", time.Duration(10)*time.Second)
+	client.ListBrokers(ctx)
 
 	// Validate
 	recorder.Validate()
diff --git a/pkg/eventing/v1beta1/client_test.go b/pkg/eventing/v1beta1/client_test.go
index 99d6de75..6fd111e3 100644
--- a/pkg/eventing/v1beta1/client_test.go
+++ b/pkg/eventing/v1beta1/client_test.go
@@ -15,6 +15,7 @@
 package v1beta1
 
 import (
+	"context"
 	"fmt"
 	"testing"
 	"time"
@@ -55,10 +56,10 @@ func TestDeleteTrigger(t *testing.T) {
 			return true, nil, nil
 		})
 
-	err := client.DeleteTrigger(name)
+	err := client.DeleteTrigger(context.Background(), name)
 	assert.NilError(t, err)
 
-	err = client.DeleteTrigger("errorTrigger")
+	err = client.DeleteTrigger(context.Background(), "errorTrigger")
 	assert.ErrorContains(t, err, "errorTrigger")
 }
 
@@ -80,12 +81,12 @@ func TestCreateTrigger(t *testing.T) {
 		})
 
 	t.Run("create trigger without error", func(t *testing.T) {
-		err := client.CreateTrigger(objNew)
+		err := client.CreateTrigger(context.Background(), objNew)
 		assert.NilError(t, err)
 	})
 
 	t.Run("create trigger with an error returns an error object", func(t *testing.T) {
-		err := client.CreateTrigger(newTrigger("unknown"))
+		err := client.CreateTrigger(context.Background(), newTrigger("unknown"))
 		assert.ErrorContains(t, err, "unknown")
 	})
 }
@@ -103,12 +104,12 @@ func TestGetTrigger(t *testing.T) {
 			return true, newTrigger(name), nil
 		})
 
-	trigger, err := client.GetTrigger(name)
+	trigger, err := client.GetTrigger(context.Background(), name)
 	assert.NilError(t, err)
 	assert.Equal(t, trigger.Name, name)
 	assert.Equal(t, trigger.Spec.Broker, "default")
 
-	_, err = client.GetTrigger("errorTrigger")
+	_, err = client.GetTrigger(context.Background(), "errorTrigger")
 	assert.ErrorContains(t, err, "errorTrigger")
 }
 
@@ -125,7 +126,7 @@ func TestListTrigger(t *testing.T) {
 				return true, &v1beta1.TriggerList{Items: []v1beta1.Trigger{*trigger1, *trigger2}}, nil
 			})
 
-		listTriggers, err := client.ListTriggers()
+		listTriggers, err := client.ListTriggers(context.Background())
 		assert.NilError(t, err)
 		assert.Assert(t, len(listTriggers.Items) == 2)
 		assert.Equal(t, listTriggers.Items[0].Name, "trigger-1")
@@ -209,12 +210,12 @@ func TestBrokerCreate(t *testing.T) {
 		})
 
 	t.Run("create broker without error", func(t *testing.T) {
-		err := client.CreateBroker(objNew)
+		err := client.CreateBroker(context.Background(), objNew)
 		assert.NilError(t, err)
 	})
 
 	t.Run("create broker with an error returns an error object", func(t *testing.T) {
-		err := client.CreateBroker(newBroker("unknown"))
+		err := client.CreateBroker(context.Background(), newBroker("unknown"))
 		assert.ErrorContains(t, err, "unknown")
 	})
 }
@@ -232,11 +233,11 @@ func TestBrokerGet(t *testing.T) {
 			return true, newBroker(name), nil
 		})
 
-	broker, err := client.GetBroker(name)
+	broker, err := client.GetBroker(context.Background(), name)
 	assert.NilError(t, err)
 	assert.Equal(t, broker.Name, name)
 
-	_, err = client.GetBroker("errorBroker")
+	_, err = client.GetBroker(context.Background(), "errorBroker")
 	assert.ErrorContains(t, err, "errorBroker")
 }
 
@@ -253,10 +254,10 @@ func TestBrokerDelete(t *testing.T) {
 			return true, nil, nil
 		})
 
-	err := client.DeleteBroker(name, 0)
+	err := client.DeleteBroker(context.Background(), name, 0)
 	assert.NilError(t, err)
 
-	err = client.DeleteBroker("errorBroker", 0)
+	err = client.DeleteBroker(context.Background(), "errorBroker", 0)
 	assert.ErrorContains(t, err, "errorBroker", 0)
 }
 
@@ -285,10 +286,10 @@ func TestBrokerDeleteWithWait(t *testing.T) {
 			return true, w, nil
 		})
 
-	err := client.DeleteBroker(name, time.Duration(10)*time.Second)
+	err := client.DeleteBroker(context.Background(), name, time.Duration(10)*time.Second)
 	assert.NilError(t, err)
 
-	err = client.DeleteBroker("errorBroker", time.Duration(10)*time.Second)
+	err = client.DeleteBroker(context.Background(), "errorBroker", time.Duration(10)*time.Second)
 	assert.ErrorContains(t, err, "errorBroker", time.Duration(10)*time.Second)
 }
 
@@ -305,7 +306,7 @@ func TestBrokerList(t *testing.T) {
 				return true, &v1beta1.BrokerList{Items: []v1beta1.Broker{*broker1, *broker2}}, nil
 			})
 
-		brokerList, err := client.ListBrokers()
+		brokerList, err := client.ListBrokers(context.Background())
 		assert.NilError(t, err)
 		assert.Assert(t, len(brokerList.Items) == 2)
 		assert.Equal(t, brokerList.Items[0].Name, "foo1")
diff --git a/pkg/kn/commands/channel/list_types_test.go b/pkg/kn/commands/channel/list_types_test.go
index 32e5b462..8b98f142 100644
--- a/pkg/kn/commands/channel/list_types_test.go
+++ b/pkg/kn/commands/channel/list_types_test.go
@@ -16,6 +16,7 @@ limitations under the License.
 package channel
 
 import (
+	"context"
 	"strings"
 	"testing"
 
@@ -103,7 +104,7 @@ func TestChannelListTypesNoHeaders(t *testing.T) {
 
 func TestListBuiltInChannelTypes(t *testing.T) {
 	fakeDynamic := dynamicfake.NewSimpleDynamicClient(runtime.NewScheme())
-	channel, err := listBuiltInChannelTypes(dynamic.NewKnDynamicClient(fakeDynamic, "current"))
+	channel, err := listBuiltInChannelTypes(context.Background(), dynamic.NewKnDynamicClient(fakeDynamic, "current"))
 	assert.NilError(t, err)
 	if channel == nil {
 		t.Fatal("channel = nil, want not nil")
diff --git a/pkg/kn/commands/flags/sink_test.go b/pkg/kn/commands/flags/sink_test.go
index 19d0e1ea..39874538 100644
--- a/pkg/kn/commands/flags/sink_test.go
+++ b/pkg/kn/commands/flags/sink_test.go
@@ -15,6 +15,7 @@
 package flags
 
 import (
+	"context"
 	"testing"
 
 	"github.com/spf13/cobra"
@@ -123,7 +124,7 @@ func TestResolve(t *testing.T) {
 	dynamicClient := dynamicfake.CreateFakeKnDynamicClient("default", mysvc, defaultBroker, pipeChannel)
 	for _, c := range cases {
 		i := &SinkFlags{c.sink}
-		result, err := i.ResolveSink(dynamicClient, "default")
+		result, err := i.ResolveSink(context.Background(), dynamicClient, "default")
 		if c.destination != nil {
 			assert.DeepEqual(t, result, c.destination)
 			assert.NilError(t, err)
@@ -167,7 +168,7 @@ func TestResolveWithNamespace(t *testing.T) {
 	dynamicClient := dynamicfake.CreateFakeKnDynamicClient("my-namespace", mysvc, defaultBroker, pipeChannel)
 	for _, c := range cases {
 		i := &SinkFlags{c.sink}
-		result, err := i.ResolveSink(dynamicClient, "default")
+		result, err := i.ResolveSink(context.Background(), dynamicClient, "default")
 		if c.destination != nil {
 			assert.DeepEqual(t, result, c.destination)
 			assert.Equal(t, c.destination.Ref.Namespace, "my-namespace")
diff --git a/pkg/kn/commands/source/list_test.go b/pkg/kn/commands/source/list_test.go
index 8eef8b99..1b0291f1 100644
--- a/pkg/kn/commands/source/list_test.go
+++ b/pkg/kn/commands/source/list_test.go
@@ -15,6 +15,7 @@
 package source
 
 import (
+	"context"
 	"strings"
 	"testing"
 
@@ -80,7 +81,7 @@ func TestSourceListTypesNoHeaders(t *testing.T) {
 
 func TestListBuiltInSourceTypes(t *testing.T) {
 	fakeDynamic := dynamicfake.NewSimpleDynamicClient(runtime.NewScheme())
-	sources, err := listBuiltInSourceTypes(clientdynamic.NewKnDynamicClient(fakeDynamic, "current"))
+	sources, err := listBuiltInSourceTypes(context.Background(), clientdynamic.NewKnDynamicClient(fakeDynamic, "current"))
 	assert.NilError(t, err)
 	if sources == nil {
 		t.Fatal("sources = nil, want not nil")
diff --git a/pkg/serving/v1/apply_test.go b/pkg/serving/v1/apply_test.go
index eca4d897..20b6d78d 100644
--- a/pkg/serving/v1/apply_test.go
+++ b/pkg/serving/v1/apply_test.go
@@ -15,6 +15,7 @@
 package v1
 
 import (
+	"context"
 	"reflect"
 	"testing"
 
@@ -34,7 +35,7 @@ import (
 func TestApplyServiceWithNoImage(t *testing.T) {
 	_, client := setup()
 	serviceFaulty := newService("faulty-service")
-	_, err := client.ApplyService(serviceFaulty)
+	_, err := client.ApplyService(context.Background(), serviceFaulty)
 	assert.Assert(t, err != nil)
 	assert.Assert(t, util.ContainsAll(err.Error(), "image name"))
 }
@@ -55,7 +56,7 @@ func TestApplyServiceCreate(t *testing.T) {
 			return true, serviceNew, nil
 		})
 
-	hasChanged, err := client.ApplyService(serviceNew)
+	hasChanged, err := client.ApplyService(context.Background(), serviceNew)
 	assert.NilError(t, err)
 	assert.Assert(t, hasChanged, "service has changed")
 }
@@ -79,7 +80,7 @@ func TestApplyServiceUpdate(t *testing.T) {
 			return true, serviceNew, nil
 		})
 
-	hasChanged, err := client.ApplyService(serviceNew)
+	hasChanged, err := client.ApplyService(context.Background(), serviceNew)
 	assert.NilError(t, err)
 	assert.Assert(t, hasChanged, "service has changed")
 }
diff --git a/pkg/serving/v1/client_mock_test.go b/pkg/serving/v1/client_mock_test.go
index 3b3f9ec3..2d36ecfc 100644
--- a/pkg/serving/v1/client_mock_test.go
+++ b/pkg/serving/v1/client_mock_test.go
@@ -15,6 +15,7 @@
 package v1
 
 import (
+	"context"
 	"testing"
 	"time"
 
@@ -50,22 +51,23 @@ func TestMockKnClient(t *testing.T) {
 	recorder.GetConfiguration("hello", nil, nil)
 
 	// Call all services
-	client.GetService("hello")
-	client.ListServices(WithName("blub"))
-	client.ListServices(WithLabel("foo", "bar"))
-	client.CreateService(&servingv1.Service{})
-	client.UpdateService(&servingv1.Service{})
-	client.ApplyService(&servingv1.Service{})
-	client.DeleteService("hello", time.Duration(10)*time.Second)
-	client.WaitForService("hello", time.Duration(10)*time.Second, wait.NoopMessageCallback())
-	client.GetRevision("hello")
-	client.ListRevisions(WithName("blub"))
-	client.CreateRevision(&servingv1.Revision{})
-	client.UpdateRevision(&servingv1.Revision{})
-	client.DeleteRevision("hello", time.Duration(10)*time.Second)
-	client.GetRoute("hello")
-	client.ListRoutes(WithName("blub"))
-	client.GetConfiguration("hello")
+	ctx := context.Background()
+	client.GetService(ctx, "hello")
+	client.ListServices(ctx, WithName("blub"))
+	client.ListServices(ctx, WithLabel("foo", "bar"))
+	client.CreateService(ctx, &servingv1.Service{})
+	client.UpdateService(ctx, &servingv1.Service{})
+	client.ApplyService(ctx, &servingv1.Service{})
+	client.DeleteService(ctx, "hello", time.Duration(10)*time.Second)
+	client.WaitForService(ctx, "hello", time.Duration(10)*time.Second, wait.NoopMessageCallback())
+	client.GetRevision(ctx, "hello")
+	client.ListRevisions(ctx, WithName("blub"))
+	client.CreateRevision(ctx, &servingv1.Revision{})
+	client.UpdateRevision(ctx, &servingv1.Revision{})
+	client.DeleteRevision(ctx, "hello", time.Duration(10)*time.Second)
+	client.GetRoute(ctx, "hello")
+	client.ListRoutes(ctx, WithName("blub"))
+	client.GetConfiguration(ctx, "hello")
 
 	// Validate
 	recorder.Validate()
diff --git a/pkg/serving/v1/client_test.go b/pkg/serving/v1/client_test.go
index a5a2bf6e..7306b542 100644
--- a/pkg/serving/v1/client_test.go
+++ b/pkg/serving/v1/client_test.go
@@ -15,6 +15,7 @@
 package v1
 
 import (
+	"context"
 	"fmt"
 	"testing"
 	"time"
@@ -66,7 +67,7 @@ func TestGetService(t *testing.T) {
 		})
 
 	t.Run("get known service by name returns service", func(t *testing.T) {
-		service, err := client.GetService(serviceName)
+		service, err := client.GetService(context.Background(), serviceName)
 		assert.NilError(t, err)
 		assert.Equal(t, serviceName, service.Name, "service name should be equal")
 		validateGroupVersionKind(t, service)
@@ -74,7 +75,7 @@ func TestGetService(t *testing.T) {
 
 	t.Run("get unknown service name returns error", func(t *testing.T) {
 		nonExistingServiceName := "service-that-does-not-exist"
-		service, err := client.GetService(nonExistingServiceName)
+		service, err := client.GetService(context.Background(), nonExistingServiceName)
 		assert.Assert(t, service == nil, "no service should be returned")
 		assert.ErrorContains(t, err, "not found")
 		assert.ErrorContains(t, err, nonExistingServiceName)
@@ -105,7 +106,7 @@ func TestListService(t *testing.T) {
 				return true, &servingv1.ServiceList{Items: []servingv1.Service{*service1, *service2, *service3, *service4, *service5}}, nil
 			})
 
-		listServices, err := client.ListServices()
+		listServices, err := client.ListServices(context.Background())
 		assert.NilError(t, err)
 		assert.Assert(t, len(listServices.Items) == 5)
 		assert.Equal(t, listServices.Items[0].Name, "service-1")
@@ -114,7 +115,7 @@ func TestListService(t *testing.T) {
 		validateGroupVersionKind(t, &listServices.Items[0])
 		validateGroupVersionKind(t, &listServices.Items[1])
 
-		listFilteredServices, err := client.ListServices(WithLabel(labelKey, labelValue))
+		listFilteredServices, err := client.ListServices(context.Background(), WithLabel(labelKey, labelValue))
 		assert.NilError(t, err)
 		assert.Assert(t, len(listFilteredServices.Items) == 2)
 		assert.Equal(t, listFilteredServices.Items[0].Name, "service-3-with-label")
@@ -142,14 +143,14 @@ func TestCreateService(t *testing.T) {
 		})
 
 	t.Run("create service without error creates a new service", func(t *testing.T) {
-		err := client.CreateService(serviceNew)
+		err := client.CreateService(context.Background(), serviceNew)
 		assert.NilError(t, err)
 		assert.Equal(t, serviceNew.Generation, int64(2))
 		validateGroupVersionKind(t, serviceNew)
 	})
 
 	t.Run("create service with an error returns an error object", func(t *testing.T) {
-		err := client.CreateService(newService("unknown"))
+		err := client.CreateService(context.Background(), newService("unknown"))
 		assert.ErrorContains(t, err, "unknown")
 	})
 }
@@ -172,14 +173,14 @@ func TestUpdateService(t *testing.T) {
 		})
 
 	t.Run("updating a service without error", func(t *testing.T) {
-		changed, err := client.UpdateService(serviceUpdate)
+		changed, err := client.UpdateService(context.Background(), serviceUpdate)
 		assert.NilError(t, err)
 		assert.Assert(t, changed)
 		validateGroupVersionKind(t, serviceUpdate)
 	})
 
 	t.Run("updating a service with error", func(t *testing.T) {
-		_, err := client.UpdateService(newService("unknown"))
+		_, err := client.UpdateService(context.Background(), newService("unknown"))
 		assert.ErrorContains(t, err, "unknown")
 	})
 }
@@ -215,12 +216,12 @@ func TestDeleteService(t *testing.T) {
 		})
 
 	t.Run("delete existing service returns no error", func(t *testing.T) {
-		err := client.DeleteService(serviceName, time.Duration(10)*time.Second)
+		err := client.DeleteService(context.Background(), serviceName, time.Duration(10)*time.Second)
 		assert.NilError(t, err)
 	})
 
 	t.Run("trying to delete non-existing service returns error", func(t *testing.T) {
-		err := client.DeleteService(nonExistingServiceName, time.Duration(10)*time.Second)
+		err := client.DeleteService(context.Background(), nonExistingServiceName, time.Duration(10)*time.Second)
 		assert.ErrorContains(t, err, "not found")
 		assert.ErrorContains(t, err, nonExistingServiceName)
 	})
@@ -256,14 +257,14 @@ func TestGetRevision(t *testing.T) {
 		})
 
 	t.Run("get existing revision returns revision and no error", func(t *testing.T) {
-		revision, err := client.GetRevision(revisionName)
+		revision, err := client.GetRevision(context.Background(), revisionName)
 		assert.NilError(t, err)
 		assert.Equal(t, revisionName, revision.Name)
 		validateGroupVersionKind(t, revision)
 	})
 
 	t.Run("trying to get a revision with a name that does not exist returns an error", func(t *testing.T) {
-		revision, err := client.GetRevision(notExistingRevisionName)
+		revision, err := client.GetRevision(context.Background(), notExistingRevisionName)
 		assert.Assert(t, revision == nil)
 		assert.ErrorContains(t, err, notExistingRevisionName)
 		assert.ErrorContains(t, err, "not found")
@@ -282,7 +283,7 @@ func TestListRevisions(t *testing.T) {
 
 	t.Run("list revisions returns a list of revisions and no error", func(t *testing.T) {
 
-		revisions, err := client.ListRevisions()
+		revisions, err := client.ListRevisions(context.Background())
 		assert.NilError(t, err)
 
 		assert.Assert(t, len(revisions.Items) == 2)
@@ -317,7 +318,7 @@ func TestListRevisionForService(t *testing.T) {
 
 	t.Run("list revisions for a service returns a list of revisions associated with this this service and no error",
 		func(t *testing.T) {
-			revisions, err := client.ListRevisions(WithService(serviceName))
+			revisions, err := client.ListRevisions(context.Background(), WithService(serviceName))
 			assert.NilError(t, err)
 
 			assert.Assert(t, cmp.Len(revisions.Items, 1))
@@ -346,7 +347,7 @@ func TestGetRoute(t *testing.T) {
 		})
 
 	t.Run("get known route by name returns route", func(t *testing.T) {
-		route, err := client.GetRoute(routeName)
+		route, err := client.GetRoute(context.Background(), routeName)
 		assert.NilError(t, err)
 		assert.Equal(t, routeName, route.Name, "route name should be equal")
 		validateGroupVersionKind(t, route)
@@ -354,7 +355,7 @@ func TestGetRoute(t *testing.T) {
 
 	t.Run("get unknown route name returns error", func(t *testing.T) {
 		nonExistingRouteName := "r@ute-that-d$es-n#t-exist"
-		route, err := client.GetRoute(nonExistingRouteName)
+		route, err := client.GetRoute(context.Background(), nonExistingRouteName)
 		assert.Assert(t, route == nil, "no route should be returned")
 		assert.ErrorContains(t, err, "not found")
 		assert.ErrorContains(t, err, nonExistingRouteName)
@@ -383,7 +384,7 @@ func TestListRoutes(t *testing.T) {
 
 	t.Run("list routes returns a list of routes and no error", func(t *testing.T) {
 
-		routes, err := client.ListRoutes()
+		routes, err := client.ListRoutes(context.Background())
 		assert.NilError(t, err)
 
 		assert.Assert(t, len(routes.Items) == 3)
@@ -398,7 +399,7 @@ func TestListRoutes(t *testing.T) {
 
 	t.Run("list routes with a name filter a list with one route and no error", func(t *testing.T) {
 
-		routes, err := client.ListRoutes(WithName(singleRouteName))
+		routes, err := client.ListRoutes(context.Background(), WithName(singleRouteName))
 		assert.NilError(t, err)
 
 		assert.Assert(t, len(routes.Items) == 1)
@@ -432,7 +433,7 @@ func TestWaitForService(t *testing.T) {
 		})
 
 	t.Run("wait on a service to become ready with success", func(t *testing.T) {
-		err, duration := client.WaitForService(serviceName, 60*time.Second, wait.NoopMessageCallback())
+		err, duration := client.WaitForService(context.Background(), serviceName, 60*time.Second, wait.NoopMessageCallback())
 		assert.NilError(t, err)
 		assert.Assert(t, duration > 0)
 	})
@@ -477,7 +478,7 @@ func TestGetBaseRevision(t *testing.T) {
 		service.Spec.Template.Spec.Containers = []corev1.Container{{}}
 		service.Spec.Template.Spec.Containers[0].Image = c.templateImage
 
-		r, err := client.GetBaseRevision(&service)
+		r, err := client.GetBaseRevision(context.Background(), &service)
 		if err == nil {
 			assert.Equal(t, r.Spec.Containers[0].Image, c.foundRevisionImage)
 		} else {
@@ -509,14 +510,14 @@ func TestGetConfiguration(t *testing.T) {
 		})
 
 	t.Run("getting existing configuration returns configuration and no error", func(t *testing.T) {
-		configuration, err := client.GetConfiguration(configName)
+		configuration, err := client.GetConfiguration(context.Background(), configName)
 		assert.NilError(t, err)
 		assert.Equal(t, configName, configuration.Name)
 		validateGroupVersionKind(t, configuration)
 	})
 
 	t.Run("trying to get a configuration with a name that does not exist returns an error", func(t *testing.T) {
-		configuration, err := client.GetConfiguration(notExistingConfigurationName)
+		configuration, err := client.GetConfiguration(context.Background(), notExistingConfigurationName)
 		assert.Assert(t, configuration == nil)
 		assert.ErrorContains(t, err, notExistingConfigurationName)
 		assert.ErrorContains(t, err, "not found")
diff --git a/pkg/serving/v1/gitops_test.go b/pkg/serving/v1/gitops_test.go
index 814a8cc5..41613cbe 100644
--- a/pkg/serving/v1/gitops_test.go
+++ b/pkg/serving/v1/gitops_test.go
@@ -64,69 +64,69 @@ func TestGitOpsOperations(t *testing.T) {
 		assert.Equal(t, "baz-ns", ns)
 	})
 	t.Run("create service foo in foo namespace", func(t *testing.T) {
-		err := fooclient.CreateService(fooSvc)
+		err := fooclient.CreateService(context.Background(), fooSvc)
 		assert.NilError(t, err)
 	})
 	t.Run("wait for foo service in foo namespace", func(t *testing.T) {
-		err, d := fooclient.WaitForService("foo", 5*time.Second, nil)
+		err, d := fooclient.WaitForService(context.Background(), "foo", 5*time.Second, nil)
 		assert.NilError(t, err)
 		assert.Equal(t, 1*time.Second, d)
 	})
 	t.Run("get service foo", func(t *testing.T) {
-		result, err := fooclient.GetService("foo")
+		result, err := fooclient.GetService(context.Background(), "foo")
 		assert.NilError(t, err)
 		assert.DeepEqual(t, fooSvc, result)
 	})
 	t.Run("create service bar in foo namespace", func(t *testing.T) {
-		err := fooclient.CreateService(barSvc)
+		err := fooclient.CreateService(context.Background(), barSvc)
 		assert.NilError(t, err)
 	})
 	t.Run("create service bar in baz namespace", func(t *testing.T) {
-		err := bazclient.CreateService(barSvc)
+		err := bazclient.CreateService(context.Background(), barSvc)
 		assert.NilError(t, err)
 	})
 	t.Run("list services in foo namespace", func(t *testing.T) {
-		result, err := fooclient.ListServices()
+		result, err := fooclient.ListServices(context.Background())
 		assert.NilError(t, err)
 		assert.DeepEqual(t, fooserviceList, result)
 	})
 	t.Run("create service without tmp directory", func(t *testing.T) {
-		err := diffClusterClient.CreateService(fooSvc)
+		err := diffClusterClient.CreateService(context.Background(), fooSvc)
 		assert.ErrorContains(t, err, "directory 'tmp' not present, please create the directory and try again")
 	})
 	diffClusterClient = NewKnServingGitOpsClient("", c2TempDir)
 	t.Run("create service foo in foo namespace in cluster 2", func(t *testing.T) {
-		err := diffClusterClient.CreateService(fooSvc)
+		err := diffClusterClient.CreateService(context.Background(), fooSvc)
 		assert.NilError(t, err)
 	})
 	t.Run("list services in all namespaces in cluster 1", func(t *testing.T) {
-		result, err := globalclient.ListServices()
+		result, err := globalclient.ListServices(context.Background())
 		assert.NilError(t, err)
 		assert.DeepEqual(t, allServices, result)
 	})
 	t.Run("update service with retry foo", func(t *testing.T) {
-		changed, err := fooclient.UpdateServiceWithRetry("foo", func(svc *servingv1.Service) (*servingv1.Service, error) {
+		changed, err := fooclient.UpdateServiceWithRetry(context.Background(), "foo", func(svc *servingv1.Service) (*servingv1.Service, error) {
 			return svc, nil
 		}, 1)
 		assert.Assert(t, changed)
 		assert.NilError(t, err)
 	})
 	t.Run("update service foo", func(t *testing.T) {
-		changed, err := fooclient.UpdateService(fooUpdateSvc)
+		changed, err := fooclient.UpdateService(context.Background(), fooUpdateSvc)
 		assert.Assert(t, changed)
 		assert.NilError(t, err)
 	})
 	t.Run("check updated service foo", func(t *testing.T) {
-		result, err := fooclient.GetService("foo")
+		result, err := fooclient.GetService(context.Background(), "foo")
 		assert.NilError(t, err)
 		assert.DeepEqual(t, fooUpdateSvc, result)
 	})
 	t.Run("delete service foo", func(t *testing.T) {
-		err := fooclient.DeleteService("foo", 5*time.Second)
+		err := fooclient.DeleteService(context.Background(), "foo", 5*time.Second)
 		assert.NilError(t, err)
 	})
 	t.Run("get service foo", func(t *testing.T) {
-		_, err := fooclient.GetService("foo")
+		_, err := fooclient.GetService(context.Background(), "foo")
 		assert.ErrorType(t, err, apierrors.IsNotFound)
 	})
 }
@@ -155,72 +155,72 @@ func TestGitOpsSingleFile(t *testing.T) {
 		assert.Equal(t, "", ns)
 	})
 	t.Run("create service in single file mode in different formats", func(t *testing.T) {
-		err := fooclient.CreateService(testSvc)
+		err := fooclient.CreateService(context.Background(), testSvc)
 		assert.NilError(t, err)
 
-		err = barclient.CreateService(testSvc)
+		err = barclient.CreateService(context.Background(), testSvc)
 		assert.NilError(t, err)
 
-		err = bazclient.CreateService(testSvc)
+		err = bazclient.CreateService(context.Background(), testSvc)
 		assert.NilError(t, err)
 	})
 	t.Run("retrieve services", func(t *testing.T) {
-		result, err := fooclient.GetService("test")
+		result, err := fooclient.GetService(context.Background(), "test")
 		assert.NilError(t, err)
 		assert.DeepEqual(t, testSvc, result)
 
-		result, err = barclient.GetService("test")
+		result, err = barclient.GetService(context.Background(), "test")
 		assert.NilError(t, err)
 		assert.DeepEqual(t, testSvc, result)
 
-		result, err = bazclient.GetService("test")
+		result, err = bazclient.GetService(context.Background(), "test")
 		assert.NilError(t, err)
 		assert.DeepEqual(t, testSvc, result)
 	})
 	t.Run("update service foo", func(t *testing.T) {
-		changed, err := fooclient.UpdateService(updateSvc)
+		changed, err := fooclient.UpdateService(context.Background(), updateSvc)
 		assert.NilError(t, err)
 		assert.Assert(t, changed)
 
-		changed, err = barclient.UpdateService(updateSvc)
+		changed, err = barclient.UpdateService(context.Background(), updateSvc)
 		assert.NilError(t, err)
 		assert.Assert(t, changed)
 
-		changed, err = bazclient.UpdateService(updateSvc)
+		changed, err = bazclient.UpdateService(context.Background(), updateSvc)
 		assert.NilError(t, err)
 		assert.Assert(t, changed)
 	})
 	t.Run("list services", func(t *testing.T) {
-		result, err := fooclient.ListServices()
+		result, err := fooclient.ListServices(context.Background())
 		assert.NilError(t, err)
 		assert.DeepEqual(t, svcList, result)
 
-		result, err = barclient.ListServices()
+		result, err = barclient.ListServices(context.Background())
 		assert.NilError(t, err)
 		assert.DeepEqual(t, svcList, result)
 
-		result, err = bazclient.ListServices()
+		result, err = bazclient.ListServices(context.Background())
 		assert.NilError(t, err)
 		assert.DeepEqual(t, svcList, result)
 	})
 	t.Run("delete service foo", func(t *testing.T) {
-		err := fooclient.DeleteService("test", 5*time.Second)
+		err := fooclient.DeleteService(context.Background(), "test", 5*time.Second)
 		assert.NilError(t, err)
 
-		err = barclient.DeleteService("test", 5*time.Second)
+		err = barclient.DeleteService(context.Background(), "test", 5*time.Second)
 		assert.NilError(t, err)
 
-		err = bazclient.DeleteService("test", 5*time.Second)
+		err = bazclient.DeleteService(context.Background(), "test", 5*time.Second)
 		assert.NilError(t, err)
 	})
 	t.Run("get service foo", func(t *testing.T) {
-		_, err := fooclient.GetService("test")
+		_, err := fooclient.GetService(context.Background(), "test")
 		assert.ErrorType(t, err, apierrors.IsNotFound)
 
-		_, err = barclient.GetService("test")
+		_, err = barclient.GetService(context.Background(), "test")
 		assert.ErrorType(t, err, apierrors.IsNotFound)
 
-		_, err = bazclient.GetService("test")
+		_, err = bazclient.GetService(context.Background(), "test")
 		assert.ErrorType(t, err, apierrors.IsNotFound)
 	})
 }
diff --git a/pkg/sources/v1alpha2/apiserver_client_mock_test.go b/pkg/sources/v1alpha2/apiserver_client_mock_test.go
index f01fd9ce..8f23c18a 100644
--- a/pkg/sources/v1alpha2/apiserver_client_mock_test.go
+++ b/pkg/sources/v1alpha2/apiserver_client_mock_test.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	v1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -33,10 +34,11 @@ func TestMockKnAPIServerSourceClient(t *testing.T) {
 	recorder.DeleteAPIServerSource("hello", nil)
 
 	// Call all service
-	client.GetAPIServerSource("hello")
-	client.CreateAPIServerSource(&v1alpha2.ApiServerSource{})
-	client.UpdateAPIServerSource(&v1alpha2.ApiServerSource{})
-	client.DeleteAPIServerSource("hello")
+	ctx := context.Background()
+	client.GetAPIServerSource(ctx, "hello")
+	client.CreateAPIServerSource(ctx, &v1alpha2.ApiServerSource{})
+	client.UpdateAPIServerSource(ctx, &v1alpha2.ApiServerSource{})
+	client.DeleteAPIServerSource(ctx, "hello")
 
 	// Validate
 	recorder.Validate()
diff --git a/pkg/sources/v1alpha2/apiserver_client_test.go b/pkg/sources/v1alpha2/apiserver_client_test.go
index 5e1f6492..fc8898af 100644
--- a/pkg/sources/v1alpha2/apiserver_client_test.go
+++ b/pkg/sources/v1alpha2/apiserver_client_test.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"fmt"
 	"testing"
 
@@ -49,10 +50,10 @@ func TestDeleteApiServerSource(t *testing.T) {
 			return true, nil, nil
 		})
 
-	err := client.DeleteAPIServerSource("foo")
+	err := client.DeleteAPIServerSource(context.Background(), "foo")
 	assert.NilError(t, err)
 
-	err = client.DeleteAPIServerSource("errorSource")
+	err = client.DeleteAPIServerSource(context.Background(), "errorSource")
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -68,10 +69,10 @@ func TestCreateApiServerSource(t *testing.T) {
 			}
 			return true, newSource, nil
 		})
-	err := client.CreateAPIServerSource(newAPIServerSource("foo", "Event"))
+	err := client.CreateAPIServerSource(context.Background(), newAPIServerSource("foo", "Event"))
 	assert.NilError(t, err)
 
-	err = client.CreateAPIServerSource(newAPIServerSource("errorSource", "Event"))
+	err = client.CreateAPIServerSource(context.Background(), newAPIServerSource("errorSource", "Event"))
 	assert.ErrorContains(t, err, "errorSource")
 
 }
@@ -87,12 +88,12 @@ func TestGetApiServerSource(t *testing.T) {
 			}
 			return true, newAPIServerSource(name, "Event"), nil
 		})
-	testsource, err := client.GetAPIServerSource("foo")
+	testsource, err := client.GetAPIServerSource(context.Background(), "foo")
 	assert.NilError(t, err)
 	assert.Equal(t, testsource.Name, "foo")
 	assert.Equal(t, testsource.Spec.Sink.Ref.Name, "foosvc")
 
-	_, err = client.GetAPIServerSource("errorSource")
+	_, err = client.GetAPIServerSource(context.Background(), "errorSource")
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -108,10 +109,10 @@ func TestUpdateApiServerSource(t *testing.T) {
 			}
 			return true, NewAPIServerSourceBuilderFromExisting(updatedSource.(*v1alpha2.ApiServerSource)).Build(), nil
 		})
-	err := client.UpdateAPIServerSource(newAPIServerSource("foo", "Event"))
+	err := client.UpdateAPIServerSource(context.Background(), newAPIServerSource("foo", "Event"))
 	assert.NilError(t, err)
 
-	err = client.UpdateAPIServerSource(newAPIServerSource("errorSource", "Event"))
+	err = client.UpdateAPIServerSource(context.Background(), newAPIServerSource("errorSource", "Event"))
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -124,7 +125,7 @@ func TestListAPIServerSource(t *testing.T) {
 			return true, &v1alpha2.ApiServerSourceList{Items: []v1alpha2.ApiServerSource{*cJSource}}, nil
 		})
 
-	sourceList, err := client.ListAPIServerSource()
+	sourceList, err := client.ListAPIServerSource(context.Background())
 	assert.NilError(t, err)
 	assert.Equal(t, len(sourceList.Items), 1)
 }
diff --git a/pkg/sources/v1alpha2/binding_client_mock_test.go b/pkg/sources/v1alpha2/binding_client_mock_test.go
index 1e245034..cd6d2da3 100644
--- a/pkg/sources/v1alpha2/binding_client_mock_test.go
+++ b/pkg/sources/v1alpha2/binding_client_mock_test.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	v1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -33,11 +34,12 @@ func TestMockKnClient(t *testing.T) {
 	recorder.UpdateSinkBinding(&v1alpha2.SinkBinding{}, nil)
 
 	// Call all service
-	client.GetSinkBinding("hello")
-	client.CreateSinkBinding(&v1alpha2.SinkBinding{})
-	client.DeleteSinkBinding("hello")
-	client.ListSinkBindings()
-	client.UpdateSinkBinding(&v1alpha2.SinkBinding{})
+	ctx := context.Background()
+	client.GetSinkBinding(ctx, "hello")
+	client.CreateSinkBinding(ctx, &v1alpha2.SinkBinding{})
+	client.DeleteSinkBinding(ctx, "hello")
+	client.ListSinkBindings(ctx)
+	client.UpdateSinkBinding(ctx, &v1alpha2.SinkBinding{})
 
 	// Validate
 	recorder.Validate()
diff --git a/pkg/sources/v1alpha2/binding_client_test.go b/pkg/sources/v1alpha2/binding_client_test.go
index 9cd747d2..d298bbbf 100644
--- a/pkg/sources/v1alpha2/binding_client_test.go
+++ b/pkg/sources/v1alpha2/binding_client_test.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"fmt"
 	"testing"
 
@@ -50,10 +51,10 @@ func TestDeleteSinkBinding(t *testing.T) {
 			return true, nil, nil
 		})
 
-	err := client.DeleteSinkBinding(name)
+	err := client.DeleteSinkBinding(context.Background(), name)
 	assert.NilError(t, err)
 
-	err = client.DeleteSinkBinding("errorSinkBinding")
+	err = client.DeleteSinkBinding(context.Background(), "errorSinkBinding")
 	assert.ErrorContains(t, err, "errorSinkBinding")
 }
 
@@ -75,12 +76,12 @@ func TestCreateSinkBinding(t *testing.T) {
 		})
 
 	t.Run("create binding without error", func(t *testing.T) {
-		err := client.CreateSinkBinding(objNew)
+		err := client.CreateSinkBinding(context.Background(), objNew)
 		assert.NilError(t, err)
 	})
 
 	t.Run("create binding with an error returns an error object", func(t *testing.T) {
-		err := client.CreateSinkBinding(newSinkBinding("unknown", "mysvc", "mypings"))
+		err := client.CreateSinkBinding(context.Background(), newSinkBinding("unknown", "mysvc", "mypings"))
 		assert.ErrorContains(t, err, "unknown")
 	})
 }
@@ -98,13 +99,13 @@ func TestGetSinkBinding(t *testing.T) {
 			return true, newSinkBinding(name, "mysvc", "myping"), nil
 		})
 
-	binding, err := client.GetSinkBinding(name)
+	binding, err := client.GetSinkBinding(context.Background(), name)
 	assert.NilError(t, err)
 	assert.Equal(t, binding.Name, name)
 	assert.Equal(t, binding.Spec.Sink.Ref.Name, "mysvc")
 	assert.Equal(t, binding.Spec.Subject.Name, "myping")
 
-	_, err = client.GetSinkBinding("errorSinkBinding")
+	_, err = client.GetSinkBinding(context.Background(), "errorSinkBinding")
 	assert.ErrorContains(t, err, "errorSinkBinding")
 }
 
@@ -121,7 +122,7 @@ func TestListSinkBinding(t *testing.T) {
 				return true, &v1alpha2.SinkBindingList{Items: []v1alpha2.SinkBinding{*binding1, *binding2}}, nil
 			})
 
-		listSinkBindings, err := client.ListSinkBindings()
+		listSinkBindings, err := client.ListSinkBindings(context.Background())
 		assert.NilError(t, err)
 		assert.Assert(t, len(listSinkBindings.Items) == 2)
 		assert.Equal(t, listSinkBindings.Items[0].Name, "binding-1")
diff --git a/pkg/sources/v1alpha2/container_client_mock_test.go b/pkg/sources/v1alpha2/container_client_mock_test.go
index 2d91b6a4..27ad1af9 100644
--- a/pkg/sources/v1alpha2/container_client_mock_test.go
+++ b/pkg/sources/v1alpha2/container_client_mock_test.go
@@ -17,6 +17,7 @@ limitations under the License.
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	v1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -35,11 +36,12 @@ func TestMockKnConatinerSourceClient(t *testing.T) {
 	recorder.UpdateContainerSource(&v1alpha2.ContainerSource{}, nil)
 
 	// Call all service
-	client.GetContainerSource("hello")
-	client.CreateContainerSource(&v1alpha2.ContainerSource{})
-	client.DeleteContainerSource("hello")
-	client.ListContainerSources()
-	client.UpdateContainerSource(&v1alpha2.ContainerSource{})
+	ctx := context.Background()
+	client.GetContainerSource(ctx, "hello")
+	client.CreateContainerSource(ctx, &v1alpha2.ContainerSource{})
+	client.DeleteContainerSource("hello", ctx)
+	client.ListContainerSources(ctx)
+	client.UpdateContainerSource(ctx, &v1alpha2.ContainerSource{})
 
 	// Validate
 	recorder.Validate()
diff --git a/pkg/sources/v1alpha2/container_client_test.go b/pkg/sources/v1alpha2/container_client_test.go
index db9c32f3..084b850c 100644
--- a/pkg/sources/v1alpha2/container_client_test.go
+++ b/pkg/sources/v1alpha2/container_client_test.go
@@ -17,6 +17,7 @@ limitations under the License.
 package v1alpha2
 
 import (
+	"context"
 	"fmt"
 	"testing"
 
@@ -49,10 +50,10 @@ func TestDeleteContainerSourceSource(t *testing.T) {
 			return true, nil, nil
 		})
 
-	err := client.DeleteContainerSource("foo")
+	err := client.DeleteContainerSource("foo", context.Background())
 	assert.NilError(t, err)
 
-	err = client.DeleteContainerSource("errorSource")
+	err = client.DeleteContainerSource("errorSource", context.Background())
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -68,10 +69,10 @@ func TestCreateContainerSourceSource(t *testing.T) {
 			}
 			return true, newSource, nil
 		})
-	err := client.CreateContainerSource(newContainerSource("foo", "Event"))
+	err := client.CreateContainerSource(context.Background(), newContainerSource("foo", "Event"))
 	assert.NilError(t, err)
 
-	err = client.CreateContainerSource(newContainerSource("errorSource", "Event"))
+	err = client.CreateContainerSource(context.Background(), newContainerSource("errorSource", "Event"))
 	assert.ErrorContains(t, err, "errorSource")
 
 }
@@ -87,12 +88,12 @@ func TestGetContainerSource(t *testing.T) {
 			}
 			return true, newContainerSource(name, "Event"), nil
 		})
-	testsource, err := client.GetContainerSource("foo")
+	testsource, err := client.GetContainerSource(context.Background(), "foo")
 	assert.NilError(t, err)
 	assert.Equal(t, testsource.Name, "foo")
 	assert.Equal(t, testsource.Spec.Sink.Ref.Name, "foosvc")
 
-	_, err = client.GetContainerSource("errorSource")
+	_, err = client.GetContainerSource(context.Background(), "errorSource")
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -108,10 +109,10 @@ func TestUpdateContainerSource(t *testing.T) {
 			}
 			return true, NewContainerSourceBuilderFromExisting(updatedSource.(*v1alpha2.ContainerSource)).Build(), nil
 		})
-	err := client.UpdateContainerSource(newContainerSource("foo", "Event"))
+	err := client.UpdateContainerSource(context.Background(), newContainerSource("foo", "Event"))
 	assert.NilError(t, err)
 
-	err = client.UpdateContainerSource(newContainerSource("errorSource", "Event"))
+	err = client.UpdateContainerSource(context.Background(), newContainerSource("errorSource", "Event"))
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -124,7 +125,7 @@ func TestListContainerSource(t *testing.T) {
 			return true, &v1alpha2.ContainerSourceList{Items: []v1alpha2.ContainerSource{*cJSource}}, nil
 		})
 
-	sourceList, err := client.ListContainerSources()
+	sourceList, err := client.ListContainerSources(context.Background())
 	assert.NilError(t, err)
 	assert.Equal(t, len(sourceList.Items), 1)
 }
diff --git a/pkg/sources/v1alpha2/ping_client_mock_test.go b/pkg/sources/v1alpha2/ping_client_mock_test.go
index ed9ea6c8..89141403 100644
--- a/pkg/sources/v1alpha2/ping_client_mock_test.go
+++ b/pkg/sources/v1alpha2/ping_client_mock_test.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"testing"
 
 	"knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -33,10 +34,11 @@ func TestMockKnPingSourceClient(t *testing.T) {
 	recorder.DeletePingSource("hello", nil)
 
 	// Call all service
-	client.GetPingSource("hello")
-	client.CreatePingSource(&v1alpha2.PingSource{})
-	client.UpdatePingSource(&v1alpha2.PingSource{})
-	client.DeletePingSource("hello")
+	ctx := context.Background()
+	client.GetPingSource(ctx, "hello")
+	client.CreatePingSource(ctx, &v1alpha2.PingSource{})
+	client.UpdatePingSource(ctx, &v1alpha2.PingSource{})
+	client.DeletePingSource(ctx, "hello")
 
 	// Validate
 	recorder.Validate()
diff --git a/pkg/sources/v1alpha2/ping_client_test.go b/pkg/sources/v1alpha2/ping_client_test.go
index 4a4a1d5e..bf15ab00 100644
--- a/pkg/sources/v1alpha2/ping_client_test.go
+++ b/pkg/sources/v1alpha2/ping_client_test.go
@@ -15,6 +15,7 @@
 package v1alpha2
 
 import (
+	"context"
 	"fmt"
 	"testing"
 
@@ -47,14 +48,14 @@ func TestCreatePingSource(t *testing.T) {
 			return true, newSource, nil
 		})
 
-	err := client.CreatePingSource(newPingSource("testsource", "mysvc"))
+	err := client.CreatePingSource(context.Background(), newPingSource("testsource", "mysvc"))
 	assert.NilError(t, err)
 
-	err = client.CreatePingSource(newPingSource("testsource", ""))
+	err = client.CreatePingSource(context.Background(), newPingSource("testsource", ""))
 	assert.ErrorContains(t, err, "sink")
 	assert.ErrorContains(t, err, "required")
 
-	err = client.CreatePingSource(newPingSource("errorSource", "mysvc"))
+	err = client.CreatePingSource(context.Background(), newPingSource("errorSource", "mysvc"))
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -71,10 +72,10 @@ func TestUpdatePingSource(t *testing.T) {
 			return true, NewPingSourceBuilderFromExisting(newSource.(*v1alpha2.PingSource)).Build(), nil
 		})
 
-	err := client.UpdatePingSource(newPingSource("testsource", ""))
+	err := client.UpdatePingSource(context.Background(), newPingSource("testsource", ""))
 	assert.NilError(t, err)
 
-	err = client.UpdatePingSource(newPingSource("errorSource", ""))
+	err = client.UpdatePingSource(context.Background(), newPingSource("errorSource", ""))
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -90,10 +91,10 @@ func TestDeletePingSource(t *testing.T) {
 			return true, nil, nil
 		})
 
-	err := client.DeletePingSource("testsource")
+	err := client.DeletePingSource(context.Background(), "testsource")
 	assert.NilError(t, err)
 
-	err = client.DeletePingSource("errorSource")
+	err = client.DeletePingSource(context.Background(), "errorSource")
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -109,12 +110,12 @@ func TestGetPingSource(t *testing.T) {
 			return true, newPingSource(name, "mysvc"), nil
 		})
 
-	source, err := client.GetPingSource("testsource")
+	source, err := client.GetPingSource(context.Background(), "testsource")
 	assert.NilError(t, err)
 	assert.Equal(t, source.Name, "testsource")
 	assert.Equal(t, source.Spec.Sink.Ref.Name, "mysvc")
 
-	_, err = client.GetPingSource("errorSource")
+	_, err = client.GetPingSource(context.Background(), "errorSource")
 	assert.ErrorContains(t, err, "errorSource")
 }
 
@@ -127,7 +128,7 @@ func TestListPingSource(t *testing.T) {
 			return true, &v1alpha2.PingSourceList{Items: []v1alpha2.PingSource{*cJSource}}, nil
 		})
 
-	sourceList, err := client.ListPingSource()
+	sourceList, err := client.ListPingSource(context.Background())
 	assert.NilError(t, err)
 	assert.Equal(t, len(sourceList.Items), 1)
 }
diff --git a/pkg/wait/wait_for_ready_test.go b/pkg/wait/wait_for_ready_test.go
index b909efc0..6fbcefdb 100644
--- a/pkg/wait/wait_for_ready_test.go
+++ b/pkg/wait/wait_for_ready_test.go
@@ -15,6 +15,8 @@
 package wait
 
 import (
+	"context"
+	"errors"
 	"testing"
 	"time"
 
@@ -34,6 +36,39 @@ type waitForReadyTestCase struct {
 	messagesExpected []string
 }
 
+func TestWaitCancellation(t *testing.T) {
+	fakeWatchApi := NewFakeWatch([]watch.Event{})
+	fakeWatchApi.Start()
+	wfe := NewWaitForEvent("foobar", func(e *watch.Event) bool {
+		return false
+	})
+
+	timeout := time.Second * 5
+
+	ctx, cancel := context.WithCancel(context.Background())
+	defer cancel()
+	go func() {
+		time.Sleep(time.Millisecond * 500)
+		cancel()
+	}()
+	err, _ := wfe.Wait(ctx, fakeWatchApi, "foobar", Options{Timeout: &timeout}, NoopMessageCallback())
+	assert.Assert(t, errors.Is(err, context.Canceled))
+
+	ctx, cancel = context.WithCancel(context.Background())
+	defer cancel()
+	go func() {
+		time.Sleep(time.Millisecond * 500)
+		cancel()
+	}()
+	wfr := NewWaitForReady(
+		"blub",
+		func(obj runtime.Object) (apis.Conditions, error) {
+			return apis.Conditions(obj.(*servingv1.Service).Status.Conditions), nil
+		})
+	err, _ = wfr.Wait(ctx, fakeWatchApi, "foobar", Options{Timeout: &timeout}, NoopMessageCallback())
+	assert.Assert(t, errors.Is(err, context.Canceled))
+}
+
 func TestAddWaitForReady(t *testing.T) {
 
 	for i, tc := range prepareTestCases("test-service") {
@@ -46,7 +81,7 @@ func TestAddWaitForReady(t *testing.T) {
 			})
 		fakeWatchApi.Start()
 		var msgs []string
-		err, _ := waitForReady.Wait(fakeWatchApi, "foobar", Options{Timeout: &tc.timeout}, func(_ time.Duration, msg string) {
+		err, _ := waitForReady.Wait(context.Background(), fakeWatchApi, "foobar", Options{Timeout: &tc.timeout}, func(_ time.Duration, msg string) {
 			msgs = append(msgs, msg)
 		})
 		close(fakeWatchApi.eventChan)
@@ -82,7 +117,7 @@ func TestAddWaitForDelete(t *testing.T) {
 			func(evt *watch.Event) bool { return evt.Type == watch.Deleted })
 		fakeWatchAPI.Start()
 
-		err, _ := waitForEvent.Wait(fakeWatchAPI, "foobar", Options{Timeout: &tc.timeout}, NoopMessageCallback())
+		err, _ := waitForEvent.Wait(context.Background(), fakeWatchAPI, "foobar", Options{Timeout: &tc.timeout}, NoopMessageCallback())
 		close(fakeWatchAPI.eventChan)
 
 		if tc.errorText == "" && err != nil {