Setting the namespace of the sequence's step does not take effect
Describe the bug
Failed to resolve spec.subscriber: failed to get object knative-sequence-demo/knative-demo1-dotnet: services.serving.knative.dev "knative-demo1-dotnet" not found
Expected behavior
To Reproduce create a sequence yaml, and set step's namespace.
Knative release version
1.7
Additional context
sequence yaml:
apiVersion: flows.knative.dev/v1
kind: Sequence
metadata:
name: my-sequence-demo1
namespace: knative-sequence-demo
spec:
channelTemplate:
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
steps:
- ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /test1
delivery:
deadLetterSink:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /handle-fail
- ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /test2
delivery:
deadLetterSink:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /handle-fail
- ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /test3
delivery:
deadLetterSink:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /handle-fail
reply:
ref:
kind: Broker
apiVersion: eventing.knative.dev/v1
name: kafka-broker-demo2
namespace: knative-service-demo
Automatically generated yaml for the first step:
apiVersion: messaging.knative.dev/v1
kind: Subscription
metadata:
annotations:
messaging.knative.dev/creator: system:serviceaccount:knative-eventing:eventing-controller
messaging.knative.dev/lastModifier: system:serviceaccount:knative-eventing:eventing-controller
creationTimestamp: "2022-09-23T13:03:24Z"
finalizers:
- subscriptions.messaging.knative.dev
generation: 1
managedFields:
- apiVersion: messaging.knative.dev/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:finalizers:
.: {}
v:"subscriptions.messaging.knative.dev": {}
f:ownerReferences:
.: {}
k:{"uid":"c7d6733a-6ff8-48f3-91fe-b8c3ad78a645"}: {}
f:spec:
.: {}
f:channel:
.: {}
f:apiVersion: {}
f:kind: {}
f:name: {}
f:delivery:
.: {}
f:deadLetterSink:
.: {}
f:ref:
.: {}
f:apiVersion: {}
f:kind: {}
f:name: {}
f:namespace: {}
f:uri: {}
f:reply:
.: {}
f:ref:
.: {}
f:apiVersion: {}
f:kind: {}
f:name: {}
f:namespace: {}
f:subscriber:
.: {}
f:ref:
.: {}
f:apiVersion: {}
f:kind: {}
f:name: {}
f:namespace: {}
f:uri: {}
manager: controller
operation: Update
time: "2022-09-23T13:03:24Z"
- apiVersion: messaging.knative.dev/v1
fieldsType: FieldsV1
fieldsV1:
f:status:
.: {}
f:conditions: {}
f:observedGeneration: {}
f:physicalSubscription: {}
manager: controller
operation: Update
subresource: status
time: "2022-09-23T13:03:24Z"
name: my-sequence-demo1-kn-sequence-0
namespace: knative-sequence-demo
ownerReferences:
- apiVersion: flows.knative.dev/v1
blockOwnerDeletion: true
controller: true
kind: Sequence
name: my-sequence-demo1
uid: c7d6733a-6ff8-48f3-91fe-b8c3ad78a645
resourceVersion: "1387664"
uid: daf0dcdb-1e06-4932-981d-32ec22b687d0
spec:
channel:
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
name: my-sequence-demo1-kn-sequence-0
delivery:
deadLetterSink:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /handle-fail
reply:
ref:
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
name: my-sequence-demo1-kn-sequence-1
namespace: knative-sequence-demo
subscriber:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: knative-demo1-dotnet
namespace: knative-service-demo
uri: /test1
status:
conditions:
- lastTransitionTime: "2022-09-23T13:03:24Z"
status: Unknown
type: AddedToChannel
- lastTransitionTime: "2022-09-23T13:03:24Z"
status: Unknown
type: ChannelReady
- lastTransitionTime: "2022-09-23T13:03:24Z"
message: 'Failed to resolve spec.subscriber: failed to get object knative-sequence-demo/knative-demo1-dotnet:
services.serving.knative.dev "knative-demo1-dotnet" not found'
reason: SubscriberResolveFailed
status: "False"
type: Ready
- lastTransitionTime: "2022-09-23T13:03:24Z"
message: 'Failed to resolve spec.subscriber: failed to get object knative-sequence-demo/knative-demo1-dotnet:
services.serving.knative.dev "knative-demo1-dotnet" not found'
reason: SubscriberResolveFailed
status: "False"
type: ReferencesResolved
observedGeneration: 1
physicalSubscription: {}
The namespace in the reply does not work either
I found that only trigger can cross namespaces, was it designed that way?
Hi @qzwzqty, do you have the ksvc running in that namespace? what's the output of kubectl describe ksvc -n knative-sequence-demo knative-demo1-dotnet?
On my case I had a Subscription with a .spec.subscriber.ref pointing to a Service in another namespace. The Subscription never become Ready because it was trying to find the Service on the Subscription's namespace.
As a workaround I commented out the ref part and completed the uri with the .Status.Address.URL of the ksvc.
This is a bug: https://github.com/knative/eventing/blob/main/pkg/reconciler/subscription/subscription.go#L201
/triage accepted
/assign