Skip to content

Instantly share code, notes, and snippets.

@pierDipi
Last active December 16, 2020 22:10
Show Gist options
  • Save pierDipi/8d29a06d481cd4aa5bb4f703c73c4508 to your computer and use it in GitHub Desktop.
Save pierDipi/8d29a06d481cd4aa5bb4f703c73c4508 to your computer and use it in GitHub Desktop.

Notes

  • "sleep 900" means wait for jobs to be completed and pods to be running
#!/usr/bin/env bash

echo "Install v0.14.2"
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml

sleep 900

echo "Upgrade to v0.15.4"
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-core.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/upgrade-to-v0.15.0.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/storage-version-migration-v0.15.0.yaml

sleep 900

echo "Upgrade to v0.16.2"
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/pre-install-to-v0.16.0.yaml

sleep 900

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/eventing-core.yaml

sleep 900

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/post-install-to-v0.16.0.yaml

sleep 900

echo "Upgrade to v0.17.9"
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-core.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-post-install-jobs.yaml

sleep 900

echo "Upgrade to v0.18.6"
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.18.6/eventing-pre-install-jobs.yaml

sleep 900

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.18.6/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.18.6/eventing-core.yaml

sleep 900

echo "Upgrade to v0.19.3"
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.19.3/eventing-core.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.19.3/eventing-crds.yaml

kubectl apply -f  https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.19.0/eventing-kafka-controller.yaml
kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.19.0/eventing-kafka-broker.yaml
kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.19.0/eventing-kafka-sink.yaml
@LeonardAukea
Copy link

@pierDipi This is great thanks. I will test it now.

@LeonardAukea
Copy link

LeonardAukea commented Dec 16, 2020

Here is the output with the listed errors for the first step ->

Install v0.14.2
customresourcedefinition.apiextensions.k8s.io/eventtypes.eventing.knative.dev configured
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{\"registry.knative.dev/eventTypes\":\"[\\n  { \\\"type\\\": \\\"dev.knative.apiserver.resource.add\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.resource.delete\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.resource.update\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.ref.add\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.ref.delete\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.ref.update\\\" }\\n]\\n\"},\"creationTimestamp\":null,\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"apiserversources.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\"],\"kind\":\"ApiServerSource\",\"plural\":\"apiserversources\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1alpha2\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","sources"]},"validation":{"openAPIV3Schema":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1alpha2","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "apiserversources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "apiserversources.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"brokers.eventing.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"eventing.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Broker\",\"plural\":\"brokers\",\"singular\":\"broker\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "brokers.eventing.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "brokers.eventing.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\",\"messaging.knative.dev/subscribable\":\"true\"},\"name\":\"channels.messaging.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"messaging.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"messaging\",\"channel\"],\"kind\":\"Channel\",\"plural\":\"channels\",\"shortNames\":[\"ch\"],\"singular\":\"channel\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"versions\":[{\"name\":\"v1alpha1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"channelTemplate\":{\"description\":\"Channel implementation which dictates the durability guarantees of events. If not specified then the default channel is used. More information: https://knative.dev/docs/eventing/channels/default-channels.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the channel implementation.\",\"minLength\":1,\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the channel implementation to use (InMemoryChannel, KafkaChannel, etc.).\",\"minLength\":1,\"type\":\"string\"},\"spec\":{\"type\":\"object\"}},\"required\":[\"apiVersion\",\"kind\"],\"type\":\"object\"},\"subscribable\":{\"properties\":{\"subscribers\":{\"description\":\"Events received on the channel are forwarded to its subscribers.\",\"items\":{\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"},\"uid\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"namespace\",\"name\",\"uid\"],\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"replyURI\":{\"description\":\"Endpoint for the reply.\",\"minLength\":1,\"type\":\"string\"},\"subscriberURI\":{\"description\":\"Endpoint for the subscriber.\",\"minLength\":1,\"type\":\"string\"},\"uid\":{\"description\":\"Used to understand the origin of the subscriber.\",\"minLength\":1,\"type\":\"string\"}},\"required\":[\"uid\"],\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"type\":\"array\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"versions":[{"name":"v1alpha1","schema":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"channelTemplate":{"description":"Channel implementation which dictates the durability guarantees of events. If not specified then the default channel is used. More information: https://knative.dev/docs/eventing/channels/default-channels.","properties":{"apiVersion":{"description":"API version of the channel implementation.","minLength":1,"type":"string"},"kind":{"description":"Kind of the channel implementation to use (InMemoryChannel, KafkaChannel, etc.).","minLength":1,"type":"string"},"spec":{"type":"object"}},"required":["apiVersion","kind"],"type":"object"},"subscribable":{"properties":{"subscribers":{"description":"Events received on the channel are forwarded to its subscribers.","items":{"properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"name":{"minLength":1,"type":"string"},"namespace":{"minLength":1,"type":"string"},"uid":{"minLength":1,"type":"string"}},"required":["namespace","name","uid"],"type":"object","x-kubernetes-preserve-unknown-fields":true},"replyURI":{"description":"Endpoint for the reply.","minLength":1,"type":"string"},"subscriberURI":{"description":"Endpoint for the subscriber.","minLength":1,"type":"string"},"uid":{"description":"Used to understand the origin of the subscriber.","minLength":1,"type":"string"}},"required":["uid"],"type":"object","x-kubernetes-preserve-unknown-fields":true},"type":"array"}},"type":"object"}},"type":"object"},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":true},{"name":"v1beta1","schema":{"openAPIV3Schema":{"properties":{"spec":{"type":"object","x-kubernetes-preserve-unknown-fields":true},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "channels.messaging.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "channels.messaging.knative.dev" is invalid: [spec.validation: Forbidden: top-level and per-version schemas are mutually exclusive, spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"containersources.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\"],\"kind\":\"ContainerSource\",\"plural\":\"containersources\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha2\",\"served\":true,\"storage\":true}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":null,"names":{"categories":["all","knative","eventing","sources"]},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha2","served":true,"storage":true}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "containersources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "containersources.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"parallels.flows.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"flows.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"flows\"],\"kind\":\"Parallel\",\"plural\":\"parallels\",\"singular\":\"parallel\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","flows"]},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "parallels.flows.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "parallels.flows.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{\"registry.knative.dev/eventTypes\":\"[\\n  { \\\"type\\\": \\\"dev.knative.sources.ping\\\" }\\n]\\n\"},\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"pingsources.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\"],\"kind\":\"PingSource\",\"plural\":\"pingsources\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1alpha2\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","sources"]},"validation":{"openAPIV3Schema":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1alpha2","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "pingsources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "pingsources.sources.knative.dev" is invalid: [spec.version: Invalid value: "v1alpha2": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"sequences.flows.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"flows.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"flows\"],\"kind\":\"Sequence\",\"plural\":\"sequences\",\"singular\":\"sequence\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","flows"]},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "sequences.flows.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "sequences.flows.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/binding\":\"true\",\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"sinkbindings.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\",\"bindings\"],\"kind\":\"SinkBinding\",\"plural\":\"sinkbindings\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1alpha2\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","sources","bindings"]},"validation":{"openAPIV3Schema":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1alpha2","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "sinkbindings.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "sinkbindings.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"subscriptions.messaging.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"None\"},\"group\":\"messaging.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Subscription\",\"plural\":\"subscriptions\",\"shortNames\":[\"sub\"],\"singular\":\"subscription\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"channel\":{\"description\":\"Channel that forwards incoming events to the subscription.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"delivery\":{\"description\":\"Subscription delivery options. More information: https://knative.dev/docs/eventing/event-delivery.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"reply\":{\"description\":\"the destination that (optionally) receive events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"minLength\":1,\"type\":\"string\"}},\"type\":\"object\"},\"subscriber\":{\"description\":\"the subscriber that (optionally) processes events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"minLength\":1,\"type\":\"string\"}},\"type\":\"object\"}},\"required\":[\"channel\"],\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"strategy":"None","webhook":null},"names":{"categories":["all","knative","eventing"]},"validation":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"channel":{"description":"Channel that forwards incoming events to the subscription.","properties":{"apiVersion":{"minLength":1},"name":{"minLength":1}},"required":["apiVersion","kind","name"]},"delivery":{"description":"Subscription delivery options. More information: https://knative.dev/docs/eventing/event-delivery.","x-kubernetes-preserve-unknown-fields":true},"reply":{"description":"the destination that (optionally) receive events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1},"kind":{"minLength":1},"name":{"minLength":1},"namespace":{"minLength":1}},"required":["apiVersion","kind","name"]},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","minLength":1}}},"subscriber":{"description":"the subscriber that (optionally) processes events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1},"kind":{"minLength":1},"name":{"minLength":1},"namespace":{"minLength":1}},"required":["apiVersion","kind","name"]},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","minLength":1}}}},"required":["channel"]},"status":{"x-kubernetes-preserve-unknown-fields":true}}}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "subscriptions.messaging.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "subscriptions.messaging.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, spec.conversion.webhookClientConfig: Forbidden: should not be set when strategy is not set to Webhook, spec.conversion.conversionReviewVersions: Forbidden: should not be set when strategy is not set to Webhook, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"triggers.eventing.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".spec.broker\",\"name\":\"Broker\",\"type\":\"string\"},{\"JSONPath\":\".status.subscriberUri\",\"name\":\"Subscriber_URI\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"eventing.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Trigger\",\"plural\":\"triggers\",\"singular\":\"trigger\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"versions\":[{\"name\":\"v1alpha1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"broker\":{\"description\":\"Broker that this trigger receives events from. If not specified, will default to 'default'.\",\"type\":\"string\"},\"filter\":{\"properties\":{\"attributes\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Map of CloudEvents attributes used for filtering events.\",\"type\":\"object\"},\"sourceAndType\":{\"properties\":{\"source\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"},\"subscriber\":{\"description\":\"the destination that should receive events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"type\":\"string\"}},\"type\":\"object\"}},\"required\":[\"subscriber\"],\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"broker\":{\"description\":\"Broker that this trigger receives events from. If not specified, will default to 'default'.\",\"type\":\"string\"},\"filter\":{\"properties\":{\"attributes\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Map of CloudEvents attributes used for filtering events.\",\"type\":\"object\"}},\"type\":\"object\"},\"subscriber\":{\"description\":\"the destination that should receive events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"type\":\"string\"}},\"type\":\"object\"}},\"required\":[\"subscriber\"],\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".spec.broker","name":"Broker","type":"string"},{"JSONPath":".status.subscriberUri","name":"Subscriber_URI","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"versions":[{"name":"v1alpha1","schema":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"broker":{"description":"Broker that this trigger receives events from. If not specified, will default to 'default'.","type":"string"},"filter":{"properties":{"attributes":{"additionalProperties":{"type":"string"},"description":"Map of CloudEvents attributes used for filtering events.","type":"object"},"sourceAndType":{"properties":{"source":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"},"subscriber":{"description":"the destination that should receive events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1,"type":"string"},"kind":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"namespace":{"minLength":1,"type":"string"}},"required":["apiVersion","kind","name"],"type":"object"},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","type":"string"}},"type":"object"}},"required":["subscriber"],"type":"object"},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":true},{"name":"v1beta1","schema":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"broker":{"description":"Broker that this trigger receives events from. If not specified, will default to 'default'.","type":"string"},"filter":{"properties":{"attributes":{"additionalProperties":{"type":"string"},"description":"Map of CloudEvents attributes used for filtering events.","type":"object"}},"type":"object"},"subscriber":{"description":"the destination that should receive events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1,"type":"string"},"kind":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"namespace":{"minLength":1,"type":"string"}},"required":["apiVersion","kind","name"],"type":"object"},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","type":"string"}},"type":"object"}},"required":["subscriber"],"type":"object"},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "triggers.eventing.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "triggers.eventing.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
namespace/knative-eventing configured
serviceaccount/eventing-controller configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-resolver configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-source-observer configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-sources-controller configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-manipulator configured
serviceaccount/pingsource-jobrunner created
clusterrolebinding.rbac.authorization.k8s.io/pingsource-jobrunner created
serviceaccount/eventing-webhook configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-webhook configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-webhook-resolver configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-webhook-podspecable-binding configured
configmap/config-br-default-channel configured
configmap/config-br-defaults configured
configmap/default-ch-webhook configured
configmap/config-leader-election configured
configmap/config-logging configured
configmap/config-observability configured
configmap/config-tracing configured
deployment.apps/eventing-controller configured
deployment.apps/eventing-webhook configured
service/eventing-webhook configured
customresourcedefinition.apiextensions.k8s.io/eventtypes.eventing.knative.dev unchanged
clusterrole.rbac.authorization.k8s.io/addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/service-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/serving-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/channel-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/broker-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/messaging-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/flows-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/eventing-broker-filter configured
clusterrole.rbac.authorization.k8s.io/eventing-broker-ingress configured
clusterrole.rbac.authorization.k8s.io/eventing-config-reader configured
clusterrole.rbac.authorization.k8s.io/channelable-manipulator configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-messaging-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-flows-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-sources-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-namespaced-edit configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-namespaced-view configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-controller configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-jobrunner created
clusterrole.rbac.authorization.k8s.io/podspecable-binding configured
clusterrole.rbac.authorization.k8s.io/builtin-podspecable-binding configured
clusterrole.rbac.authorization.k8s.io/source-observer configured
clusterrole.rbac.authorization.k8s.io/eventing-sources-source-observer configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-sources-controller configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-webhook configured
validatingwebhookconfiguration.admissionregistration.k8s.io/config.webhook.eventing.knative.dev configured
mutatingwebhookconfiguration.admissionregistration.k8s.io/webhook.eventing.knative.dev configured
validatingwebhookconfiguration.admissionregistration.k8s.io/validation.webhook.eventing.knative.dev configured
secret/eventing-webhook-certs configured
mutatingwebhookconfiguration.admissionregistration.k8s.io/sinkbindings.webhook.sources.knative.dev configured
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{\"registry.knative.dev/eventTypes\":\"[\\n  { \\\"type\\\": \\\"dev.knative.apiserver.resource.add\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.resource.delete\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.resource.update\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.ref.add\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.ref.delete\\\" },\\n  { \\\"type\\\": \\\"dev.knative.apiserver.ref.update\\\" }\\n]\\n\"},\"creationTimestamp\":null,\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"apiserversources.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\"],\"kind\":\"ApiServerSource\",\"plural\":\"apiserversources\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1alpha2\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","sources"]},"validation":{"openAPIV3Schema":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1alpha2","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "apiserversources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "apiserversources.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"brokers.eventing.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"eventing.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Broker\",\"plural\":\"brokers\",\"singular\":\"broker\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "brokers.eventing.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "brokers.eventing.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\",\"messaging.knative.dev/subscribable\":\"true\"},\"name\":\"channels.messaging.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"messaging.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"messaging\",\"channel\"],\"kind\":\"Channel\",\"plural\":\"channels\",\"shortNames\":[\"ch\"],\"singular\":\"channel\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"versions\":[{\"name\":\"v1alpha1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"channelTemplate\":{\"description\":\"Channel implementation which dictates the durability guarantees of events. If not specified then the default channel is used. More information: https://knative.dev/docs/eventing/channels/default-channels.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the channel implementation.\",\"minLength\":1,\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the channel implementation to use (InMemoryChannel, KafkaChannel, etc.).\",\"minLength\":1,\"type\":\"string\"},\"spec\":{\"type\":\"object\"}},\"required\":[\"apiVersion\",\"kind\"],\"type\":\"object\"},\"subscribable\":{\"properties\":{\"subscribers\":{\"description\":\"Events received on the channel are forwarded to its subscribers.\",\"items\":{\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"},\"uid\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"namespace\",\"name\",\"uid\"],\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"replyURI\":{\"description\":\"Endpoint for the reply.\",\"minLength\":1,\"type\":\"string\"},\"subscriberURI\":{\"description\":\"Endpoint for the subscriber.\",\"minLength\":1,\"type\":\"string\"},\"uid\":{\"description\":\"Used to understand the origin of the subscriber.\",\"minLength\":1,\"type\":\"string\"}},\"required\":[\"uid\"],\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"type\":\"array\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"versions":[{"name":"v1alpha1","schema":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"channelTemplate":{"description":"Channel implementation which dictates the durability guarantees of events. If not specified then the default channel is used. More information: https://knative.dev/docs/eventing/channels/default-channels.","properties":{"apiVersion":{"description":"API version of the channel implementation.","minLength":1,"type":"string"},"kind":{"description":"Kind of the channel implementation to use (InMemoryChannel, KafkaChannel, etc.).","minLength":1,"type":"string"},"spec":{"type":"object"}},"required":["apiVersion","kind"],"type":"object"},"subscribable":{"properties":{"subscribers":{"description":"Events received on the channel are forwarded to its subscribers.","items":{"properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"name":{"minLength":1,"type":"string"},"namespace":{"minLength":1,"type":"string"},"uid":{"minLength":1,"type":"string"}},"required":["namespace","name","uid"],"type":"object","x-kubernetes-preserve-unknown-fields":true},"replyURI":{"description":"Endpoint for the reply.","minLength":1,"type":"string"},"subscriberURI":{"description":"Endpoint for the subscriber.","minLength":1,"type":"string"},"uid":{"description":"Used to understand the origin of the subscriber.","minLength":1,"type":"string"}},"required":["uid"],"type":"object","x-kubernetes-preserve-unknown-fields":true},"type":"array"}},"type":"object"}},"type":"object"},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":true},{"name":"v1beta1","schema":{"openAPIV3Schema":{"properties":{"spec":{"type":"object","x-kubernetes-preserve-unknown-fields":true},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "channels.messaging.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "channels.messaging.knative.dev" is invalid: [spec.validation: Forbidden: top-level and per-version schemas are mutually exclusive, spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"containersources.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\"],\"kind\":\"ContainerSource\",\"plural\":\"containersources\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha2\",\"served\":true,\"storage\":true}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":null,"names":{"categories":["all","knative","eventing","sources"]},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha2","served":true,"storage":true}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "containersources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "containersources.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"parallels.flows.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"flows.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"flows\"],\"kind\":\"Parallel\",\"plural\":\"parallels\",\"singular\":\"parallel\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","flows"]},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "parallels.flows.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "parallels.flows.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{\"registry.knative.dev/eventTypes\":\"[\\n  { \\\"type\\\": \\\"dev.knative.sources.ping\\\" }\\n]\\n\"},\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"pingsources.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\"],\"kind\":\"PingSource\",\"plural\":\"pingsources\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1alpha2\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","sources"]},"validation":{"openAPIV3Schema":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1alpha2","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "pingsources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "pingsources.sources.knative.dev" is invalid: [spec.version: Invalid value: "v1alpha2": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"sequences.flows.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"flows.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"flows\"],\"kind\":\"Sequence\",\"plural\":\"sequences\",\"singular\":\"sequence\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".status.address.url","name":"URL","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","flows"]},"validation":{"openAPIV3Schema":{"x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "sequences.flows.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "sequences.flows.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/binding\":\"true\",\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.14.2\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"sinkbindings.sources.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\",\"sources\",\"bindings\"],\"kind\":\"SinkBinding\",\"plural\":\"sinkbindings\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1alpha2\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"},{"JSONPath":".status.sinkUri","name":"Sink","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"names":{"categories":["all","knative","eventing","sources","bindings"]},"validation":{"openAPIV3Schema":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1alpha2","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "sinkbindings.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "sinkbindings.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1beta1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"subscriptions.messaging.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"None\"},\"group\":\"messaging.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Subscription\",\"plural\":\"subscriptions\",\"shortNames\":[\"sub\"],\"singular\":\"subscription\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"validation\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"channel\":{\"description\":\"Channel that forwards incoming events to the subscription.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"delivery\":{\"description\":\"Subscription delivery options. More information: https://knative.dev/docs/eventing/event-delivery.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"reply\":{\"description\":\"the destination that (optionally) receive events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"minLength\":1,\"type\":\"string\"}},\"type\":\"object\"},\"subscriber\":{\"description\":\"the subscriber that (optionally) processes events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"minLength\":1,\"type\":\"string\"}},\"type\":\"object\"}},\"required\":[\"channel\"],\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"versions\":[{\"name\":\"v1alpha1\",\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"strategy":"None","webhook":null},"names":{"categories":["all","knative","eventing"]},"validation":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"channel":{"description":"Channel that forwards incoming events to the subscription.","properties":{"apiVersion":{"minLength":1},"name":{"minLength":1}},"required":["apiVersion","kind","name"]},"delivery":{"description":"Subscription delivery options. More information: https://knative.dev/docs/eventing/event-delivery.","x-kubernetes-preserve-unknown-fields":true},"reply":{"description":"the destination that (optionally) receive events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1},"kind":{"minLength":1},"name":{"minLength":1},"namespace":{"minLength":1}},"required":["apiVersion","kind","name"]},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","minLength":1}}},"subscriber":{"description":"the subscriber that (optionally) processes events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1},"kind":{"minLength":1},"name":{"minLength":1},"namespace":{"minLength":1}},"required":["apiVersion","kind","name"]},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","minLength":1}}}},"required":["channel"]},"status":{"x-kubernetes-preserve-unknown-fields":true}}}},"versions":[{"name":"v1alpha1","served":true,"storage":true},{"name":"v1beta1","served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "subscriptions.messaging.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "subscriptions.messaging.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, spec.conversion.webhookClientConfig: Forbidden: should not be set when strategy is not set to Webhook, spec.conversion.conversionReviewVersions: Forbidden: should not be set when strategy is not set to Webhook, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1beta1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"eventing.knative.dev/release\":\"v0.14.2\",\"knative.dev/crd-install\":\"true\"},\"name\":\"triggers.eventing.knative.dev\"},\"spec\":{\"additionalPrinterColumns\":[{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"JSONPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"},{\"JSONPath\":\".spec.broker\",\"name\":\"Broker\",\"type\":\"string\"},{\"JSONPath\":\".status.subscriberUri\",\"name\":\"Subscriber_URI\",\"type\":\"string\"},{\"JSONPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"conversion\":{\"strategy\":\"Webhook\",\"webhookClientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}}},\"group\":\"eventing.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Trigger\",\"plural\":\"triggers\",\"singular\":\"trigger\"},\"preserveUnknownFields\":false,\"scope\":\"Namespaced\",\"subresources\":{\"status\":{}},\"versions\":[{\"name\":\"v1alpha1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"broker\":{\"description\":\"Broker that this trigger receives events from. If not specified, will default to 'default'.\",\"type\":\"string\"},\"filter\":{\"properties\":{\"attributes\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Map of CloudEvents attributes used for filtering events.\",\"type\":\"object\"},\"sourceAndType\":{\"properties\":{\"source\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"},\"subscriber\":{\"description\":\"the destination that should receive events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"type\":\"string\"}},\"type\":\"object\"}},\"required\":[\"subscriber\"],\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":true},{\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"spec\":{\"properties\":{\"broker\":{\"description\":\"Broker that this trigger receives events from. If not specified, will default to 'default'.\",\"type\":\"string\"},\"filter\":{\"properties\":{\"attributes\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Map of CloudEvents attributes used for filtering events.\",\"type\":\"object\"}},\"type\":\"object\"},\"subscriber\":{\"description\":\"the destination that should receive events.\",\"properties\":{\"ref\":{\"description\":\"a reference to a Kubernetes object from which to retrieve the target URI.\",\"properties\":{\"apiVersion\":{\"minLength\":1,\"type\":\"string\"},\"kind\":{\"minLength\":1,\"type\":\"string\"},\"name\":{\"minLength\":1,\"type\":\"string\"},\"namespace\":{\"minLength\":1,\"type\":\"string\"}},\"required\":[\"apiVersion\",\"kind\",\"name\"],\"type\":\"object\"},\"uri\":{\"description\":\"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.\",\"type\":\"string\"}},\"type\":\"object\"}},\"required\":[\"subscriber\"],\"type\":\"object\"},\"status\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"}},\"served\":true,\"storage\":false}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.14.2"}},"spec":{"additionalPrinterColumns":[{"JSONPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"JSONPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"},{"JSONPath":".spec.broker","name":"Broker","type":"string"},{"JSONPath":".status.subscriberUri","name":"Subscriber_URI","type":"string"},{"JSONPath":".metadata.creationTimestamp","name":"Age","type":"date"}],"conversion":{"webhook":null},"versions":[{"name":"v1alpha1","schema":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"broker":{"description":"Broker that this trigger receives events from. If not specified, will default to 'default'.","type":"string"},"filter":{"properties":{"attributes":{"additionalProperties":{"type":"string"},"description":"Map of CloudEvents attributes used for filtering events.","type":"object"},"sourceAndType":{"properties":{"source":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"},"subscriber":{"description":"the destination that should receive events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1,"type":"string"},"kind":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"namespace":{"minLength":1,"type":"string"}},"required":["apiVersion","kind","name"],"type":"object"},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","type":"string"}},"type":"object"}},"required":["subscriber"],"type":"object"},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":true},{"name":"v1beta1","schema":{"openAPIV3Schema":{"properties":{"spec":{"properties":{"broker":{"description":"Broker that this trigger receives events from. If not specified, will default to 'default'.","type":"string"},"filter":{"properties":{"attributes":{"additionalProperties":{"type":"string"},"description":"Map of CloudEvents attributes used for filtering events.","type":"object"}},"type":"object"},"subscriber":{"description":"the destination that should receive events.","properties":{"ref":{"description":"a reference to a Kubernetes object from which to retrieve the target URI.","properties":{"apiVersion":{"minLength":1,"type":"string"},"kind":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"namespace":{"minLength":1,"type":"string"}},"required":["apiVersion","kind","name"],"type":"object"},"uri":{"description":"the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.","type":"string"}},"type":"object"}},"required":["subscriber"],"type":"object"},"status":{"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"}},"served":true,"storage":false}]}}
to:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"
Name: "triggers.eventing.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "triggers.eventing.knative.dev" is invalid: [spec.version: Invalid value: "v1beta1": must match the first version in spec.versions, status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions]

@pierDipi
Copy link
Author

pierDipi commented Dec 16, 2020

What's the output of

kubectl get crd brokers.eventing.knative.dev  -o=jsonpath='{.metadata.labels}'

and

kubectl version

?

@LeonardAukea
Copy link

After further cleanup of CRD's and complete cleanup (I guess). I managed to reach to echo "Upgrade to v0.17.9" without errors.

It seems to expect v1alpha1 in the stored versions for the respective CRD's which kind of points towards them maybe not being deleted and reapplied. I also did use the following for e.g workers & subscriptions since deletion would not work otherwise:

kubectl patch crd/brokers.eventing.knative.dev -p '{"metadata":{"finalizers":[]}}' --type=merge

Errors

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-core.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-post-install-jobs.yaml

namespace/knative-eventing configured
serviceaccount/eventing-controller configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-resolver configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-source-observer configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-sources-controller configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-controller-manipulator configured
serviceaccount/pingsource-mt-adapter configured
clusterrolebinding.rbac.authorization.k8s.io/knative-eventing-pingsource-mt-adapter configured
serviceaccount/eventing-webhook configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-webhook configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-webhook-resolver configured
clusterrolebinding.rbac.authorization.k8s.io/eventing-webhook-podspecable-binding configured
configmap/config-br-default-channel configured
configmap/config-br-defaults configured
configmap/default-ch-webhook configured
configmap/config-leader-election configured
configmap/config-logging configured
configmap/config-observability configured
configmap/config-tracing configured
deployment.apps/eventing-controller configured
deployment.apps/eventing-webhook configured
service/eventing-webhook configured
customresourcedefinition.apiextensions.k8s.io/apiserversources.sources.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/channels.messaging.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/containersources.sources.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/eventtypes.eventing.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/parallels.flows.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/sequences.flows.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/sinkbindings.sources.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/subscriptions.messaging.knative.dev configured
customresourcedefinition.apiextensions.k8s.io/triggers.eventing.knative.dev configured
clusterrole.rbac.authorization.k8s.io/addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/service-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/serving-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/channel-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/broker-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/messaging-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/flows-addressable-resolver configured
clusterrole.rbac.authorization.k8s.io/eventing-broker-filter configured
clusterrole.rbac.authorization.k8s.io/eventing-broker-ingress configured
clusterrole.rbac.authorization.k8s.io/eventing-config-reader configured
clusterrole.rbac.authorization.k8s.io/channelable-manipulator configured
clusterrole.rbac.authorization.k8s.io/meta-channelable-manipulator configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-messaging-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-flows-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-sources-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-bindings-namespaced-admin configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-namespaced-edit configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-namespaced-view configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-controller configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-pingsource-adapter configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-pingsource-mt-adapter configured
clusterrole.rbac.authorization.k8s.io/podspecable-binding configured
clusterrole.rbac.authorization.k8s.io/builtin-podspecable-binding configured
clusterrole.rbac.authorization.k8s.io/source-observer configured
clusterrole.rbac.authorization.k8s.io/eventing-sources-source-observer configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-sources-controller configured
clusterrole.rbac.authorization.k8s.io/knative-eventing-webhook configured
validatingwebhookconfiguration.admissionregistration.k8s.io/config.webhook.eventing.knative.dev configured
mutatingwebhookconfiguration.admissionregistration.k8s.io/webhook.eventing.knative.dev configured
validatingwebhookconfiguration.admissionregistration.k8s.io/validation.webhook.eventing.knative.dev configured
secret/eventing-webhook-certs configured
mutatingwebhookconfiguration.admissionregistration.k8s.io/sinkbindings.webhook.sources.knative.dev configured
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.17.9\",\"knative.dev/crd-install\":\"true\"},\"name\":\"brokers.eventing.knative.dev\"},\"spec\":{\"conversion\":{\"strategy\":\"Webhook\",\"webhook\":{\"clientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}},\"conversionReviewVersions\":[\"v1\",\"v1beta1\"]}},\"group\":\"eventing.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Broker\",\"plural\":\"brokers\",\"singular\":\"broker\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.\",\"properties\":{\"spec\":{\"description\":\"Spec defines the desired state of the Broker.\",\"properties\":{\"config\":{\"description\":\"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"delivery\":{\"description\":\"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.\",\"properties\":{\"backoffDelay\":{\"description\":\"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\\u003cnumberOfRetries\\u003e.\",\"type\":\"string\"},\"backoffPolicy\":{\"description\":\" BackoffPolicy is the retry backoff policy (linear, exponential).\",\"type\":\"string\"},\"deadLetterSink\":{\"description\":\"DeadLetterSink is the sink receiving event that could not be sent to a destination.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"retry\":{\"description\":\"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"Status represents the current state of the Broker. This data may be out of date.\",\"properties\":{\"address\":{\"description\":\"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.\",\"properties\":{\"url\":{\"type\":\"string\"}},\"type\":\"object\"},\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}},{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.\",\"properties\":{\"spec\":{\"description\":\"Spec defines the desired state of the Broker.\",\"properties\":{\"config\":{\"description\":\"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"delivery\":{\"description\":\"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.\",\"properties\":{\"backoffDelay\":{\"description\":\"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\\u003cnumberOfRetries\\u003e.\",\"type\":\"string\"},\"backoffPolicy\":{\"description\":\" BackoffPolicy is the retry backoff policy (linear, exponential).\",\"type\":\"string\"},\"deadLetterSink\":{\"description\":\"DeadLetterSink is the sink receiving event that could not be sent to a destination.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"retry\":{\"description\":\"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"Status represents the current state of the Broker. This data may be out of date.\",\"properties\":{\"address\":{\"description\":\"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.\",\"properties\":{\"url\":{\"type\":\"string\"}},\"type\":\"object\"},\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":false,\"subresources\":{\"status\":{}}}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.17.9"}},"spec":{"versions":[{"additionalPrinterColumns":[{"jsonPath":".status.address.url","name":"URL","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"}],"name":"v1beta1","schema":{"openAPIV3Schema":{"description":"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.","properties":{"spec":{"description":"Spec defines the desired state of the Broker.","properties":{"config":{"description":"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"delivery":{"description":"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.","properties":{"backoffDelay":{"description":"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\u003cnumberOfRetries\u003e.","type":"string"},"backoffPolicy":{"description":" BackoffPolicy is the retry backoff policy (linear, exponential).","type":"string"},"deadLetterSink":{"description":"DeadLetterSink is the sink receiving event that could not be sent to a destination.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"retry":{"description":"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.","format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"status":{"description":"Status represents the current state of the Broker. This data may be out of date.","properties":{"address":{"description":"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.","properties":{"url":{"type":"string"}},"type":"object"},"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.","format":"int64","type":"integer"}},"type":"object"}},"type":"object"}},"served":true,"storage":true,"subresources":{"status":{}}},{"additionalPrinterColumns":[{"jsonPath":".status.address.url","name":"URL","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"}],"name":"v1","schema":{"openAPIV3Schema":{"description":"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.","properties":{"spec":{"description":"Spec defines the desired state of the Broker.","properties":{"config":{"description":"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"delivery":{"description":"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.","properties":{"backoffDelay":{"description":"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\u003cnumberOfRetries\u003e.","type":"string"},"backoffPolicy":{"description":" BackoffPolicy is the retry backoff policy (linear, exponential).","type":"string"},"deadLetterSink":{"description":"DeadLetterSink is the sink receiving event that could not be sent to a destination.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"retry":{"description":"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.","format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"status":{"description":"Status represents the current state of the Broker. This data may be out of date.","properties":{"address":{"description":"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.","properties":{"url":{"type":"string"}},"type":"object"},"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.","format":"int64","type":"integer"}},"type":"object"}},"type":"object"}},"served":true,"storage":false,"subresources":{"status":{}}}]}}
to:
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "brokers.eventing.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.17.9/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "brokers.eventing.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{\"registry.knative.dev/eventTypes\":\"[\\n  { \\\"type\\\": \\\"dev.knative.sources.ping\\\" }\\n]\\n\"},\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.17.9\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"pingsources.sources.knative.dev\"},\"spec\":{\"conversion\":{\"strategy\":\"Webhook\",\"webhook\":{\"clientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}},\"conversionReviewVersions\":[\"v1\",\"v1beta1\"]}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"sources\"],\"kind\":\"PingSource\",\"plural\":\"pingsources\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1alpha2\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"PingSource describes an event source with a fixed payload produced on a specified cron schedule.\",\"properties\":{\"spec\":{\"description\":\"PingSourceSpec defines the desired state of the PingSource (from the client).\",\"properties\":{\"ceOverrides\":{\"description\":\"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.\",\"properties\":{\"extensions\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"},\"jsonData\":{\"description\":\"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \\\"application/json\\\".\",\"type\":\"string\"},\"schedule\":{\"description\":\"Schedule is the cronjob schedule. Defaults to `* * * * *`.\",\"type\":\"string\"},\"sink\":{\"description\":\"Sink is a reference to an object that will resolve to a uri to use as the sink.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"PingSourceStatus defines the observed state of PingSource (from the controller).\",\"properties\":{\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"ceAttributes\":{\"description\":\"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.\",\"items\":{\"properties\":{\"source\":{\"description\":\"Source is the CloudEvents source attribute.\",\"type\":\"string\"},\"type\":{\"description\":\"Type refers to the CloudEvent type attribute.\",\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"array\"},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the \\\"Generation\\\" of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"},\"sinkUri\":{\"description\":\"SinkURI is the current active sink URI that has been configured for the Source.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}},{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"PingSource describes an event source with a fixed payload produced on a specified cron schedule.\",\"properties\":{\"spec\":{\"description\":\"PingSourceSpec defines the desired state of the PingSource (from the client).\",\"properties\":{\"ceOverrides\":{\"description\":\"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.\",\"properties\":{\"extensions\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"},\"jsonData\":{\"description\":\"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \\\"application/json\\\".\",\"type\":\"string\"},\"schedule\":{\"description\":\"Schedule is the cronjob schedule. Defaults to `* * * * *`.\",\"type\":\"string\"},\"sink\":{\"description\":\"Sink is a reference to an object that will resolve to a uri to use as the sink.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"timezone\":{\"description\":\"Timezone modifies the actual time relative to the specified timezone. Defaults to the system time zone. More general information about time zones: https://www.iana.org/time-zones List of valid timezone values: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\",\"type\":\"string\"}},\"type\":\"object\"},\"status\":{\"description\":\"PingSourceStatus defines the observed state of PingSource (from the controller).\",\"properties\":{\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"ceAttributes\":{\"description\":\"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.\",\"items\":{\"properties\":{\"source\":{\"description\":\"Source is the CloudEvents source attribute.\",\"type\":\"string\"},\"type\":{\"description\":\"Type refers to the CloudEvent type attribute.\",\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"array\"},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the \\\"Generation\\\" of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"},\"sinkUri\":{\"description\":\"SinkURI is the current active sink URI that has been configured for the Source.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":false,\"subresources\":{\"status\":{}}}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.17.9"}},"spec":{"names":{"categories":["all","knative","sources"]},"versions":[{"additionalPrinterColumns":[{"jsonPath":".status.sinkUri","name":"Sink","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"}],"name":"v1alpha2","schema":{"openAPIV3Schema":{"description":"PingSource describes an event source with a fixed payload produced on a specified cron schedule.","properties":{"spec":{"description":"PingSourceSpec defines the desired state of the PingSource (from the client).","properties":{"ceOverrides":{"description":"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.","properties":{"extensions":{"additionalProperties":{"type":"string"},"description":"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.","type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"},"jsonData":{"description":"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \"application/json\".","type":"string"},"schedule":{"description":"Schedule is the cronjob schedule. Defaults to `* * * * *`.","type":"string"},"sink":{"description":"Sink is a reference to an object that will resolve to a uri to use as the sink.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"}},"type":"object"},"status":{"description":"PingSourceStatus defines the observed state of PingSource (from the controller).","properties":{"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"ceAttributes":{"description":"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.","items":{"properties":{"source":{"description":"Source is the CloudEvents source attribute.","type":"string"},"type":{"description":"Type refers to the CloudEvent type attribute.","type":"string"}},"type":"object"},"type":"array"},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the \"Generation\" of the Service that was last processed by the controller.","format":"int64","type":"integer"},"sinkUri":{"description":"SinkURI is the current active sink URI that has been configured for the Source.","type":"string"}},"type":"object"}},"type":"object"}},"served":true,"storage":true,"subresources":{"status":{}}},{"additionalPrinterColumns":[{"jsonPath":".status.sinkUri","name":"Sink","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"}],"name":"v1beta1","schema":{"openAPIV3Schema":{"description":"PingSource describes an event source with a fixed payload produced on a specified cron schedule.","properties":{"spec":{"description":"PingSourceSpec defines the desired state of the PingSource (from the client).","properties":{"ceOverrides":{"description":"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.","properties":{"extensions":{"additionalProperties":{"type":"string"},"description":"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.","type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"},"jsonData":{"description":"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \"application/json\".","type":"string"},"schedule":{"description":"Schedule is the cronjob schedule. Defaults to `* * * * *`.","type":"string"},"sink":{"description":"Sink is a reference to an object that will resolve to a uri to use as the sink.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"timezone":{"description":"Timezone modifies the actual time relative to the specified timezone. Defaults to the system time zone. More general information about time zones: https://www.iana.org/time-zones List of valid timezone values: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones","type":"string"}},"type":"object"},"status":{"description":"PingSourceStatus defines the observed state of PingSource (from the controller).","properties":{"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"ceAttributes":{"description":"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.","items":{"properties":{"source":{"description":"Source is the CloudEvents source attribute.","type":"string"},"type":{"description":"Type refers to the CloudEvent type attribute.","type":"string"}},"type":"object"},"type":"array"},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the \"Generation\" of the Service that was last processed by the controller.","format":"int64","type":"integer"},"sinkUri":{"description":"SinkURI is the current active sink URI that has been configured for the Source.","type":"string"}},"type":"object"}},"type":"object"}},"served":true,"storage":false,"subresources":{"status":{}}}]}}
to:
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "pingsources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.17.9/eventing-core.yaml": CustomResourceDefinition.apiextensions.k8s.io "pingsources.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": must appear in spec.versions
customresourcedefinition.apiextensions.k8s.io/apiserversources.sources.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/channels.messaging.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/containersources.sources.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/eventtypes.eventing.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/parallels.flows.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/sequences.flows.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/sinkbindings.sources.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/subscriptions.messaging.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/triggers.eventing.knative.dev unchanged
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.17.9\",\"knative.dev/crd-install\":\"true\"},\"name\":\"brokers.eventing.knative.dev\"},\"spec\":{\"conversion\":{\"strategy\":\"Webhook\",\"webhook\":{\"clientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}},\"conversionReviewVersions\":[\"v1\",\"v1beta1\"]}},\"group\":\"eventing.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Broker\",\"plural\":\"brokers\",\"singular\":\"broker\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.\",\"properties\":{\"spec\":{\"description\":\"Spec defines the desired state of the Broker.\",\"properties\":{\"config\":{\"description\":\"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"delivery\":{\"description\":\"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.\",\"properties\":{\"backoffDelay\":{\"description\":\"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\\u003cnumberOfRetries\\u003e.\",\"type\":\"string\"},\"backoffPolicy\":{\"description\":\" BackoffPolicy is the retry backoff policy (linear, exponential).\",\"type\":\"string\"},\"deadLetterSink\":{\"description\":\"DeadLetterSink is the sink receiving event that could not be sent to a destination.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"retry\":{\"description\":\"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"Status represents the current state of the Broker. This data may be out of date.\",\"properties\":{\"address\":{\"description\":\"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.\",\"properties\":{\"url\":{\"type\":\"string\"}},\"type\":\"object\"},\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}},{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.\",\"properties\":{\"spec\":{\"description\":\"Spec defines the desired state of the Broker.\",\"properties\":{\"config\":{\"description\":\"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"delivery\":{\"description\":\"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.\",\"properties\":{\"backoffDelay\":{\"description\":\"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\\u003cnumberOfRetries\\u003e.\",\"type\":\"string\"},\"backoffPolicy\":{\"description\":\" BackoffPolicy is the retry backoff policy (linear, exponential).\",\"type\":\"string\"},\"deadLetterSink\":{\"description\":\"DeadLetterSink is the sink receiving event that could not be sent to a destination.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"retry\":{\"description\":\"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"Status represents the current state of the Broker. This data may be out of date.\",\"properties\":{\"address\":{\"description\":\"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.\",\"properties\":{\"url\":{\"type\":\"string\"}},\"type\":\"object\"},\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":false,\"subresources\":{\"status\":{}}}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.17.9"}},"spec":{"versions":[{"additionalPrinterColumns":[{"jsonPath":".status.address.url","name":"URL","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"}],"name":"v1beta1","schema":{"openAPIV3Schema":{"description":"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.","properties":{"spec":{"description":"Spec defines the desired state of the Broker.","properties":{"config":{"description":"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"delivery":{"description":"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.","properties":{"backoffDelay":{"description":"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\u003cnumberOfRetries\u003e.","type":"string"},"backoffPolicy":{"description":" BackoffPolicy is the retry backoff policy (linear, exponential).","type":"string"},"deadLetterSink":{"description":"DeadLetterSink is the sink receiving event that could not be sent to a destination.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"retry":{"description":"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.","format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"status":{"description":"Status represents the current state of the Broker. This data may be out of date.","properties":{"address":{"description":"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.","properties":{"url":{"type":"string"}},"type":"object"},"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.","format":"int64","type":"integer"}},"type":"object"}},"type":"object"}},"served":true,"storage":true,"subresources":{"status":{}}},{"additionalPrinterColumns":[{"jsonPath":".status.address.url","name":"URL","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"}],"name":"v1","schema":{"openAPIV3Schema":{"description":"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.","properties":{"spec":{"description":"Spec defines the desired state of the Broker.","properties":{"config":{"description":"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"delivery":{"description":"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.","properties":{"backoffDelay":{"description":"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\u003cnumberOfRetries\u003e.","type":"string"},"backoffPolicy":{"description":" BackoffPolicy is the retry backoff policy (linear, exponential).","type":"string"},"deadLetterSink":{"description":"DeadLetterSink is the sink receiving event that could not be sent to a destination.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"retry":{"description":"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.","format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"status":{"description":"Status represents the current state of the Broker. This data may be out of date.","properties":{"address":{"description":"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.","properties":{"url":{"type":"string"}},"type":"object"},"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.","format":"int64","type":"integer"}},"type":"object"}},"type":"object"}},"served":true,"storage":false,"subresources":{"status":{}}}]}}
to:
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "brokers.eventing.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "brokers.eventing.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{\"registry.knative.dev/eventTypes\":\"[\\n  { \\\"type\\\": \\\"dev.knative.sources.ping\\\" }\\n]\\n\"},\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.17.9\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"pingsources.sources.knative.dev\"},\"spec\":{\"conversion\":{\"strategy\":\"Webhook\",\"webhook\":{\"clientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}},\"conversionReviewVersions\":[\"v1\",\"v1beta1\"]}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"sources\"],\"kind\":\"PingSource\",\"plural\":\"pingsources\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1alpha2\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"PingSource describes an event source with a fixed payload produced on a specified cron schedule.\",\"properties\":{\"spec\":{\"description\":\"PingSourceSpec defines the desired state of the PingSource (from the client).\",\"properties\":{\"ceOverrides\":{\"description\":\"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.\",\"properties\":{\"extensions\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"},\"jsonData\":{\"description\":\"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \\\"application/json\\\".\",\"type\":\"string\"},\"schedule\":{\"description\":\"Schedule is the cronjob schedule. Defaults to `* * * * *`.\",\"type\":\"string\"},\"sink\":{\"description\":\"Sink is a reference to an object that will resolve to a uri to use as the sink.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"PingSourceStatus defines the observed state of PingSource (from the controller).\",\"properties\":{\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"ceAttributes\":{\"description\":\"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.\",\"items\":{\"properties\":{\"source\":{\"description\":\"Source is the CloudEvents source attribute.\",\"type\":\"string\"},\"type\":{\"description\":\"Type refers to the CloudEvent type attribute.\",\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"array\"},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the \\\"Generation\\\" of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"},\"sinkUri\":{\"description\":\"SinkURI is the current active sink URI that has been configured for the Source.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}},{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"PingSource describes an event source with a fixed payload produced on a specified cron schedule.\",\"properties\":{\"spec\":{\"description\":\"PingSourceSpec defines the desired state of the PingSource (from the client).\",\"properties\":{\"ceOverrides\":{\"description\":\"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.\",\"properties\":{\"extensions\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"},\"jsonData\":{\"description\":\"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \\\"application/json\\\".\",\"type\":\"string\"},\"schedule\":{\"description\":\"Schedule is the cronjob schedule. Defaults to `* * * * *`.\",\"type\":\"string\"},\"sink\":{\"description\":\"Sink is a reference to an object that will resolve to a uri to use as the sink.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"timezone\":{\"description\":\"Timezone modifies the actual time relative to the specified timezone. Defaults to the system time zone. More general information about time zones: https://www.iana.org/time-zones List of valid timezone values: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\",\"type\":\"string\"}},\"type\":\"object\"},\"status\":{\"description\":\"PingSourceStatus defines the observed state of PingSource (from the controller).\",\"properties\":{\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"ceAttributes\":{\"description\":\"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.\",\"items\":{\"properties\":{\"source\":{\"description\":\"Source is the CloudEvents source attribute.\",\"type\":\"string\"},\"type\":{\"description\":\"Type refers to the CloudEvent type attribute.\",\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"array\"},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the \\\"Generation\\\" of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"},\"sinkUri\":{\"description\":\"SinkURI is the current active sink URI that has been configured for the Source.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":false,\"subresources\":{\"status\":{}}}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.17.9"}},"spec":{"names":{"categories":["all","knative","sources"]},"versions":[{"additionalPrinterColumns":[{"jsonPath":".status.sinkUri","name":"Sink","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"}],"name":"v1alpha2","schema":{"openAPIV3Schema":{"description":"PingSource describes an event source with a fixed payload produced on a specified cron schedule.","properties":{"spec":{"description":"PingSourceSpec defines the desired state of the PingSource (from the client).","properties":{"ceOverrides":{"description":"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.","properties":{"extensions":{"additionalProperties":{"type":"string"},"description":"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.","type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"},"jsonData":{"description":"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \"application/json\".","type":"string"},"schedule":{"description":"Schedule is the cronjob schedule. Defaults to `* * * * *`.","type":"string"},"sink":{"description":"Sink is a reference to an object that will resolve to a uri to use as the sink.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"}},"type":"object"},"status":{"description":"PingSourceStatus defines the observed state of PingSource (from the controller).","properties":{"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"ceAttributes":{"description":"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.","items":{"properties":{"source":{"description":"Source is the CloudEvents source attribute.","type":"string"},"type":{"description":"Type refers to the CloudEvent type attribute.","type":"string"}},"type":"object"},"type":"array"},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the \"Generation\" of the Service that was last processed by the controller.","format":"int64","type":"integer"},"sinkUri":{"description":"SinkURI is the current active sink URI that has been configured for the Source.","type":"string"}},"type":"object"}},"type":"object"}},"served":true,"storage":true,"subresources":{"status":{}}},{"additionalPrinterColumns":[{"jsonPath":".status.sinkUri","name":"Sink","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"}],"name":"v1beta1","schema":{"openAPIV3Schema":{"description":"PingSource describes an event source with a fixed payload produced on a specified cron schedule.","properties":{"spec":{"description":"PingSourceSpec defines the desired state of the PingSource (from the client).","properties":{"ceOverrides":{"description":"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.","properties":{"extensions":{"additionalProperties":{"type":"string"},"description":"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.","type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"},"jsonData":{"description":"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \"application/json\".","type":"string"},"schedule":{"description":"Schedule is the cronjob schedule. Defaults to `* * * * *`.","type":"string"},"sink":{"description":"Sink is a reference to an object that will resolve to a uri to use as the sink.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"timezone":{"description":"Timezone modifies the actual time relative to the specified timezone. Defaults to the system time zone. More general information about time zones: https://www.iana.org/time-zones List of valid timezone values: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones","type":"string"}},"type":"object"},"status":{"description":"PingSourceStatus defines the observed state of PingSource (from the controller).","properties":{"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"ceAttributes":{"description":"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.","items":{"properties":{"source":{"description":"Source is the CloudEvents source attribute.","type":"string"},"type":{"description":"Type refers to the CloudEvent type attribute.","type":"string"}},"type":"object"},"type":"array"},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the \"Generation\" of the Service that was last processed by the controller.","format":"int64","type":"integer"},"sinkUri":{"description":"SinkURI is the current active sink URI that has been configured for the Source.","type":"string"}},"type":"object"}},"type":"object"}},"served":true,"storage":false,"subresources":{"status":{}}}]}}
to:
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "pingsources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "pingsources.sources.knative.dev" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": must appear in spec.versions
job.batch/v0.17.0-pingsource-cleanup created

@LeonardAukea
Copy link

LeonardAukea commented Dec 16, 2020

Trying once again: this is the output now after deleting uninstalling Eventing:

k get crd | grep knative                                                                                ✘ 1
certificates.networking.internal.knative.dev         2020-12-10T15:37:47Z
configurations.serving.knative.dev                   2020-12-10T15:37:47Z
images.caching.internal.knative.dev                  2020-12-10T15:37:50Z
ingresses.networking.internal.knative.dev            2020-12-10T15:37:47Z
metrics.autoscaling.internal.knative.dev             2020-12-10T15:37:48Z
podautoscalers.autoscaling.internal.knative.dev      2020-12-10T15:37:48Z
revisions.serving.knative.dev                        2020-12-10T15:37:48Z
routes.serving.knative.dev                           2020-12-10T15:37:49Z
serverlessservices.networking.internal.knative.dev   2020-12-10T15:37:49Z
services.serving.knative.dev                         2020-12-10T15:37:49Z
 k api-versions | grep knative                                                                           ✘ 1
autoscaling.internal.knative.dev/v1alpha1
caching.internal.knative.dev/v1alpha1
networking.internal.knative.dev/v1alpha1
serving.knative.dev/v1
k get ns | grep knative                                                                                 ✘ 1
knative-serving          Active   6d4h
knative-sources          Active   6d1h

@LeonardAukea
Copy link

I'm deleting knative-sources now as well just in case as it has the Kafka controller manager

@pierDipi
Copy link
Author

tl;dr

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml --force # <--
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-core.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-post-install-jobs.yaml

This is what I did:

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.14.2/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.14.2/eventing-core.yaml

kubectl get knative -A # Everything is working
NAMESPACE   NAME                                   READY   REASON   URL   AGE
default     broker.eventing.knative.dev/mybroker                          24s

NAMESPACE   NAME                                              READY   REASON     SINK   AGE
default     pingsource.sources.knative.dev/test-ping-source   False   NotFound          23s

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-core.yaml

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/eventing-core.yaml

kubectl get knative -A # Everything is NOT working
NAMESPACE   NAME                                              READY   REASON     SINK   AGE
default     pingsource.sources.knative.dev/test-ping-source   False   NotFound          3m33s
Error from server: conversion webhook for eventing.knative.dev/v1alpha1, Kind=Broker failed: conversion not supported for type [kind=Broker group=eventing.knative.dev version=v1]

# Downgrade

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-core.yaml

# Error 
The CustomResourceDefinition "subscriptions.messaging.knative.dev" is invalid: 
* spec.conversion.webhookClientConfig: Forbidden: should not be set when strategy is not set to Webhook
* spec.conversion.conversionReviewVersions: Forbidden: should not be set when strategy is not set to Webhook

# Force downgrade
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-crds.yaml --force # <--
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/eventing-core.yaml

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.15.4/storage-version-migration-v0.15.0.yaml

# Wait for the completion

kubectl delete jobs.batch -n knative-eventing storage-version-migration

kubectl get knative
NAME                                   READY   REASON   URL   AGE
broker.eventing.knative.dev/mybroker                          9m17s

NAME                                              READY   REASON     SINK   AGE
pingsource.sources.knative.dev/test-ping-source   False   NotFound          9m16s

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/pre-install-to-v0.16.0.yaml

# Wait for the completion

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/eventing-core.yaml

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.16.2/post-install-to-v0.16.0.yaml

kubectl delete -n knative-eventing jobs.batch v0.16.0-broker-cleanup

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml 

# Output
customresourcedefinition.apiextensions.k8s.io/apiserversources.sources.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/channels.messaging.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/containersources.sources.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/eventtypes.eventing.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/parallels.flows.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/sequences.flows.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/sinkbindings.sources.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/subscriptions.messaging.knative.dev unchanged
customresourcedefinition.apiextensions.k8s.io/triggers.eventing.knative.dev unchanged
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"duck.knative.dev/addressable\":\"true\",\"eventing.knative.dev/release\":\"v0.17.9\",\"knative.dev/crd-install\":\"true\"},\"name\":\"brokers.eventing.knative.dev\"},\"spec\":{\"conversion\":{\"strategy\":\"Webhook\",\"webhook\":{\"clientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}},\"conversionReviewVersions\":[\"v1\",\"v1beta1\"]}},\"group\":\"eventing.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"eventing\"],\"kind\":\"Broker\",\"plural\":\"brokers\",\"singular\":\"broker\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.\",\"properties\":{\"spec\":{\"description\":\"Spec defines the desired state of the Broker.\",\"properties\":{\"config\":{\"description\":\"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"delivery\":{\"description\":\"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.\",\"properties\":{\"backoffDelay\":{\"description\":\"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\\u003cnumberOfRetries\\u003e.\",\"type\":\"string\"},\"backoffPolicy\":{\"description\":\" BackoffPolicy is the retry backoff policy (linear, exponential).\",\"type\":\"string\"},\"deadLetterSink\":{\"description\":\"DeadLetterSink is the sink receiving event that could not be sent to a destination.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"retry\":{\"description\":\"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"Status represents the current state of the Broker. This data may be out of date.\",\"properties\":{\"address\":{\"description\":\"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.\",\"properties\":{\"url\":{\"type\":\"string\"}},\"type\":\"object\"},\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}},{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.address.url\",\"name\":\"URL\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type==\\\"Ready\\\")].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.\",\"properties\":{\"spec\":{\"description\":\"Spec defines the desired state of the Broker.\",\"properties\":{\"config\":{\"description\":\"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"delivery\":{\"description\":\"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.\",\"properties\":{\"backoffDelay\":{\"description\":\"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\\u003cnumberOfRetries\\u003e.\",\"type\":\"string\"},\"backoffPolicy\":{\"description\":\" BackoffPolicy is the retry backoff policy (linear, exponential).\",\"type\":\"string\"},\"deadLetterSink\":{\"description\":\"DeadLetterSink is the sink receiving event that could not be sent to a destination.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"retry\":{\"description\":\"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"Status represents the current state of the Broker. This data may be out of date.\",\"properties\":{\"address\":{\"description\":\"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.\",\"properties\":{\"url\":{\"type\":\"string\"}},\"type\":\"object\"},\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":false,\"subresources\":{\"status\":{}}}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.17.9"}},"spec":{"versions":[{"additionalPrinterColumns":[{"jsonPath":".status.address.url","name":"URL","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"}],"name":"v1beta1","schema":{"openAPIV3Schema":{"description":"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.","properties":{"spec":{"description":"Spec defines the desired state of the Broker.","properties":{"config":{"description":"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"delivery":{"description":"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.","properties":{"backoffDelay":{"description":"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\u003cnumberOfRetries\u003e.","type":"string"},"backoffPolicy":{"description":" BackoffPolicy is the retry backoff policy (linear, exponential).","type":"string"},"deadLetterSink":{"description":"DeadLetterSink is the sink receiving event that could not be sent to a destination.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"retry":{"description":"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.","format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"status":{"description":"Status represents the current state of the Broker. This data may be out of date.","properties":{"address":{"description":"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.","properties":{"url":{"type":"string"}},"type":"object"},"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.","format":"int64","type":"integer"}},"type":"object"}},"type":"object"}},"served":true,"storage":true,"subresources":{"status":{}}},{"additionalPrinterColumns":[{"jsonPath":".status.address.url","name":"URL","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type==\"Ready\")].reason","name":"Reason","type":"string"}],"name":"v1","schema":{"openAPIV3Schema":{"description":"Broker collects a pool of events that are consumable using Triggers. Brokers provide a well-known endpoint for event delivery that senders can use with minimal knowledge of the event routing strategy. Subscribers use Triggers to request delivery of events from a Broker's pool to a specific URL or Addressable endpoint.","properties":{"spec":{"description":"Spec defines the desired state of the Broker.","properties":{"config":{"description":"Config is a KReference to the configuration that specifies configuration options for this Broker. For example, this could be a pointer to a ConfigMap.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"delivery":{"description":"Delivery is the delivery specification for Events within the Broker mesh. This includes things like retries, DLQ, etc.","properties":{"backoffDelay":{"description":"BackoffDelay is the delay before retrying. More information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html - https://en.wikipedia.org/wiki/ISO_8601  For linear policy, backoff delay is the time interval between retries. For exponential policy , backoff delay is backoffDelay*2^\u003cnumberOfRetries\u003e.","type":"string"},"backoffPolicy":{"description":" BackoffPolicy is the retry backoff policy (linear, exponential).","type":"string"},"deadLetterSink":{"description":"DeadLetterSink is the sink receiving event that could not be sent to a destination.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"retry":{"description":"Retry is the minimum number of retries the sender should attempt when sending an event before moving it to the dead letter sink.","format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"status":{"description":"Status represents the current state of the Broker. This data may be out of date.","properties":{"address":{"description":"Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.","properties":{"url":{"type":"string"}},"type":"object"},"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.","format":"int64","type":"integer"}},"type":"object"}},"type":"object"}},"served":true,"storage":false,"subresources":{"status":{}}}]}}
to:
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "brokers.eventing.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "brokers.eventing.knative.dev" is invalid: status.storedVersions[1]: Invalid value: "v1alpha1": must appear in spec.versions
Error from server (Invalid): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{\"registry.knative.dev/eventTypes\":\"[\\n  { \\\"type\\\": \\\"dev.knative.sources.ping\\\" }\\n]\\n\"},\"labels\":{\"duck.knative.dev/source\":\"true\",\"eventing.knative.dev/release\":\"v0.17.9\",\"eventing.knative.dev/source\":\"true\",\"knative.dev/crd-install\":\"true\"},\"name\":\"pingsources.sources.knative.dev\"},\"spec\":{\"conversion\":{\"strategy\":\"Webhook\",\"webhook\":{\"clientConfig\":{\"service\":{\"name\":\"eventing-webhook\",\"namespace\":\"knative-eventing\"}},\"conversionReviewVersions\":[\"v1\",\"v1beta1\"]}},\"group\":\"sources.knative.dev\",\"names\":{\"categories\":[\"all\",\"knative\",\"sources\"],\"kind\":\"PingSource\",\"plural\":\"pingsources\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1alpha2\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"PingSource describes an event source with a fixed payload produced on a specified cron schedule.\",\"properties\":{\"spec\":{\"description\":\"PingSourceSpec defines the desired state of the PingSource (from the client).\",\"properties\":{\"ceOverrides\":{\"description\":\"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.\",\"properties\":{\"extensions\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"},\"jsonData\":{\"description\":\"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \\\"application/json\\\".\",\"type\":\"string\"},\"schedule\":{\"description\":\"Schedule is the cronjob schedule. Defaults to `* * * * *`.\",\"type\":\"string\"},\"sink\":{\"description\":\"Sink is a reference to an object that will resolve to a uri to use as the sink.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"},\"status\":{\"description\":\"PingSourceStatus defines the observed state of PingSource (from the controller).\",\"properties\":{\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"ceAttributes\":{\"description\":\"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.\",\"items\":{\"properties\":{\"source\":{\"description\":\"Source is the CloudEvents source attribute.\",\"type\":\"string\"},\"type\":{\"description\":\"Type refers to the CloudEvent type attribute.\",\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"array\"},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the \\\"Generation\\\" of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"},\"sinkUri\":{\"description\":\"SinkURI is the current active sink URI that has been configured for the Source.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}},{\"additionalPrinterColumns\":[{\"jsonPath\":\".status.sinkUri\",\"name\":\"Sink\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].status\",\"name\":\"Ready\",\"type\":\"string\"},{\"jsonPath\":\".status.conditions[?(@.type=='Ready')].reason\",\"name\":\"Reason\",\"type\":\"string\"}],\"name\":\"v1beta1\",\"schema\":{\"openAPIV3Schema\":{\"description\":\"PingSource describes an event source with a fixed payload produced on a specified cron schedule.\",\"properties\":{\"spec\":{\"description\":\"PingSourceSpec defines the desired state of the PingSource (from the client).\",\"properties\":{\"ceOverrides\":{\"description\":\"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.\",\"properties\":{\"extensions\":{\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"},\"jsonData\":{\"description\":\"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \\\"application/json\\\".\",\"type\":\"string\"},\"schedule\":{\"description\":\"Schedule is the cronjob schedule. Defaults to `* * * * *`.\",\"type\":\"string\"},\"sink\":{\"description\":\"Sink is a reference to an object that will resolve to a uri to use as the sink.\",\"properties\":{\"ref\":{\"description\":\"Ref points to an Addressable.\",\"properties\":{\"apiVersion\":{\"description\":\"API version of the referent.\",\"type\":\"string\"},\"kind\":{\"description\":\"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\"type\":\"string\"},\"namespace\":{\"description\":\"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.\",\"type\":\"string\"}},\"type\":\"object\"},\"uri\":{\"description\":\"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.\",\"type\":\"string\"}},\"type\":\"object\"},\"timezone\":{\"description\":\"Timezone modifies the actual time relative to the specified timezone. Defaults to the system time zone. More general information about time zones: https://www.iana.org/time-zones List of valid timezone values: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\",\"type\":\"string\"}},\"type\":\"object\"},\"status\":{\"description\":\"PingSourceStatus defines the observed state of PingSource (from the controller).\",\"properties\":{\"annotations\":{\"description\":\"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"ceAttributes\":{\"description\":\"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.\",\"items\":{\"properties\":{\"source\":{\"description\":\"Source is the CloudEvents source attribute.\",\"type\":\"string\"},\"type\":{\"description\":\"Type refers to the CloudEvent type attribute.\",\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"array\"},\"conditions\":{\"description\":\"Conditions the latest available observations of a resource's current state.\",\"items\":{\"properties\":{\"lastTransitionTime\":{\"description\":\"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).\",\"type\":\"string\"},\"message\":{\"description\":\"A human readable message indicating details about the transition.\",\"type\":\"string\"},\"reason\":{\"description\":\"The reason for the condition's last transition.\",\"type\":\"string\"},\"severity\":{\"description\":\"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.\",\"type\":\"string\"},\"status\":{\"description\":\"Status of the condition, one of True, False, Unknown.\",\"type\":\"string\"},\"type\":{\"description\":\"Type of condition.\",\"type\":\"string\"}},\"required\":[\"type\",\"status\"],\"type\":\"object\"},\"type\":\"array\"},\"observedGeneration\":{\"description\":\"ObservedGeneration is the \\\"Generation\\\" of the Service that was last processed by the controller.\",\"format\":\"int64\",\"type\":\"integer\"},\"sinkUri\":{\"description\":\"SinkURI is the current active sink URI that has been configured for the Source.\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"}},\"served\":true,\"storage\":false,\"subresources\":{\"status\":{}}}]}}\n"},"labels":{"eventing.knative.dev/release":"v0.17.9"}},"spec":{"names":{"categories":["all","knative","sources"]},"versions":[{"additionalPrinterColumns":[{"jsonPath":".status.sinkUri","name":"Sink","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"}],"name":"v1alpha2","schema":{"openAPIV3Schema":{"description":"PingSource describes an event source with a fixed payload produced on a specified cron schedule.","properties":{"spec":{"description":"PingSourceSpec defines the desired state of the PingSource (from the client).","properties":{"ceOverrides":{"description":"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.","properties":{"extensions":{"additionalProperties":{"type":"string"},"description":"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.","type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"},"jsonData":{"description":"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \"application/json\".","type":"string"},"schedule":{"description":"Schedule is the cronjob schedule. Defaults to `* * * * *`.","type":"string"},"sink":{"description":"Sink is a reference to an object that will resolve to a uri to use as the sink.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"}},"type":"object"},"status":{"description":"PingSourceStatus defines the observed state of PingSource (from the controller).","properties":{"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"ceAttributes":{"description":"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.","items":{"properties":{"source":{"description":"Source is the CloudEvents source attribute.","type":"string"},"type":{"description":"Type refers to the CloudEvent type attribute.","type":"string"}},"type":"object"},"type":"array"},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the \"Generation\" of the Service that was last processed by the controller.","format":"int64","type":"integer"},"sinkUri":{"description":"SinkURI is the current active sink URI that has been configured for the Source.","type":"string"}},"type":"object"}},"type":"object"}},"served":true,"storage":true,"subresources":{"status":{}}},{"additionalPrinterColumns":[{"jsonPath":".status.sinkUri","name":"Sink","type":"string"},{"jsonPath":".metadata.creationTimestamp","name":"Age","type":"date"},{"jsonPath":".status.conditions[?(@.type=='Ready')].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type=='Ready')].reason","name":"Reason","type":"string"}],"name":"v1beta1","schema":{"openAPIV3Schema":{"description":"PingSource describes an event source with a fixed payload produced on a specified cron schedule.","properties":{"spec":{"description":"PingSourceSpec defines the desired state of the PingSource (from the client).","properties":{"ceOverrides":{"description":"CloudEventOverrides defines overrides to control the output format and modifications of the event sent to the sink.","properties":{"extensions":{"additionalProperties":{"type":"string"},"description":"Extensions specify what attribute are added or overridden on the outbound event. Each `Extensions` key-value pair are set on the event as an attribute extension independently.","type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"},"jsonData":{"description":"JsonData is json encoded data used as the body of the event posted to the sink. Default is empty. If set, datacontenttype will also be set to \"application/json\".","type":"string"},"schedule":{"description":"Schedule is the cronjob schedule. Defaults to `* * * * *`.","type":"string"},"sink":{"description":"Sink is a reference to an object that will resolve to a uri to use as the sink.","properties":{"ref":{"description":"Ref points to an Addressable.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.","type":"string"}},"type":"object"},"uri":{"description":"URI can be an absolute URL(non-empty scheme and non-empty host) pointing to the target or a relative URI. Relative URIs will be resolved using the base URI retrieved from Ref.","type":"string"}},"type":"object"},"timezone":{"description":"Timezone modifies the actual time relative to the specified timezone. Defaults to the system time zone. More general information about time zones: https://www.iana.org/time-zones List of valid timezone values: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones","type":"string"}},"type":"object"},"status":{"description":"PingSourceStatus defines the observed state of PingSource (from the controller).","properties":{"annotations":{"description":"Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.","type":"object","x-kubernetes-preserve-unknown-fields":true},"ceAttributes":{"description":"CloudEventAttributes are the specific attributes that the Source uses as part of its CloudEvents.","items":{"properties":{"source":{"description":"Source is the CloudEvents source attribute.","type":"string"},"type":{"description":"Type refers to the CloudEvent type attribute.","type":"string"}},"type":"object"},"type":"array"},"conditions":{"description":"Conditions the latest available observations of a resource's current state.","items":{"properties":{"lastTransitionTime":{"description":"LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).","type":"string"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"severity":{"description":"Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type of condition.","type":"string"}},"required":["type","status"],"type":"object"},"type":"array"},"observedGeneration":{"description":"ObservedGeneration is the \"Generation\" of the Service that was last processed by the controller.","format":"int64","type":"integer"},"sinkUri":{"description":"SinkURI is the current active sink URI that has been configured for the Source.","type":"string"}},"type":"object"}},"type":"object"}},"served":true,"storage":false,"subresources":{"status":{}}}]}}
to:
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "pingsources.sources.knative.dev", Namespace: ""
for: "https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml": CustomResourceDefinition.apiextensions.k8s.io "pingsources.sources.knative.dev" is invalid: status.storedVersions[1]: Invalid value: "v1alpha1": must appear in spec.versions

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-crds.yaml --force # <--
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-core.yaml 
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.17.9/eventing-post-install-jobs.yaml

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.18.6/eventing-pre-install-jobs.yaml

# Wait for the completion

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.18.6/eventing-crds.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.18.6/eventing-core.yaml

kubectl apply -f https://github.com/knative/eventing/releases/download/v0.19.3/eventing-core.yaml
kubectl apply -f https://github.com/knative/eventing/releases/download/v0.19.3/eventing-crds.yaml

kubectl apply -f  https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.19.0/eventing-kafka-controller.yaml
kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.19.0/eventing-kafka-broker.yaml
kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.19.0/eventing-kafka-sink.yaml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment