eventing icon indicating copy to clipboard operation
eventing copied to clipboard

Setting the namespace of the sequence's step does not take effect

Open qzwzqty opened this issue 3 years ago • 1 comments

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: {}

qzwzqty avatar Sep 23 '22 13:09 qzwzqty

The namespace in the reply does not work either

qzwzqty avatar Sep 23 '22 14:09 qzwzqty

I found that only trigger can cross namespaces, was it designed that way?

qzwzqty avatar Oct 06 '22 02:10 qzwzqty

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?

pierDipi avatar Oct 06 '22 07:10 pierDipi

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.

daper avatar Oct 06 '22 17:10 daper

This is a bug: https://github.com/knative/eventing/blob/main/pkg/reconciler/subscription/subscription.go#L201

/triage accepted

lionelvillard avatar Oct 06 '22 17:10 lionelvillard

/assign

creydr avatar Jan 09 '23 11:01 creydr