From 580dfc428a9ea43a22179160499dfb1add0029ca Mon Sep 17 00:00:00 2001 From: Carlos Santana Date: Wed, 5 May 2021 16:46:53 -0400 Subject: [PATCH 01/38] change name for menu item for preview (#3533) Signed-off-by: Carlos Santana --- help/contributor/publishing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/help/contributor/publishing.md b/help/contributor/publishing.md index 00403102a62..f803cf5b09a 100644 --- a/help/contributor/publishing.md +++ b/help/contributor/publishing.md @@ -1,6 +1,6 @@ --- title: "Staging and publishing Knative documentation" -linkTitle: "Website help" +linkTitle: "Preview Website" weight: "60" type: "docs" --- From 56d5097d6970fcc9ae66baa1f7d5287701ec5ae0 Mon Sep 17 00:00:00 2001 From: RichardJJG Date: Tue, 11 May 2021 12:53:46 +0100 Subject: [PATCH 02/38] Added detail per issue #3425 (#3514) --- docs/eventing/channels/_index.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/docs/eventing/channels/_index.md b/docs/eventing/channels/_index.md index 114c9ee08d1..7e8b7c5e688 100644 --- a/docs/eventing/channels/_index.md +++ b/docs/eventing/channels/_index.md @@ -7,11 +7,27 @@ aliases: - /docs/eventing/channels/default-channels --- -Channels are Kubernetes [custom resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) that define a single event forwarding and persistence layer. +An event might be relevant to many consumers. One way to handle this is to directly tie each consumer +to the producer that creates the event, making a fan-out pattern. -A channel provides an event delivery mechanism that can fan-out received events, through subscriptions, to multiple destinations, or sinks. Examples of sinks include brokers and Knative services. +This fan-out pattern, however, introduces complex problems for the application architecture, such as +retries, timeouts, and persistence. Instead of burdening the producer with these problems, you can +use channels. - +A channel is a Kubernetes [custom resource](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) that defines a single event forwarding and persistence layer. + +Channels function as event delivery mechanisms that can fan out received events, through +subscriptions, to multiple destinations, referred to as sinks. Examples of sinks include brokers and +Knative services. + +
+ +There are several kinds of channels, but they all make it possible to deliver events to all relevant +consumers and, importantly, make the events persist. + +When you create a channel, you can choose which kind of channel is most appropriate for your use +case. For development use cases, an in-memory channel might suffice, but for production persistence, +you might need retry and replay capabilities. ## Next steps From 08df9a45ca68082c3f97f244a2a0a574da447226 Mon Sep 17 00:00:00 2001 From: knative-automation Date: Wed, 12 May 2021 09:37:47 -0700 Subject: [PATCH 03/38] Update knative/community files (#3553) Signed-off-by: Knative Automation --- OWNERS_ALIASES | 4 ---- 1 file changed, 4 deletions(-) diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index b1054f45818..a5693e3574e 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -167,12 +167,10 @@ aliases: pkg-configmap-reviewers: - dprotaso - mattmoor - - mdemirhan - vagababov pkg-configmap-writers: - dprotaso - mattmoor - - mdemirhan - vagababov pkg-controller-reviewers: - dprotaso @@ -209,11 +207,9 @@ aliases: - evankanderson - julz serving-observability-reviewers: - - mdemirhan - skonto - yanweiguo serving-observability-writers: - - mdemirhan - yanweiguo serving-reviewers: - julz From 59494a1a4ed7081cd5376a679a36127ef829a3c8 Mon Sep 17 00:00:00 2001 From: Shashankft9 <48708039+Shashankft9@users.noreply.github.com> Date: Wed, 12 May 2021 22:17:47 +0530 Subject: [PATCH 04/38] tracing cm fix (#3506) --- docs/eventing/accessing-traces.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/eventing/accessing-traces.md b/docs/eventing/accessing-traces.md index 06a53a7e736..a5138ed229c 100644 --- a/docs/eventing/accessing-traces.md +++ b/docs/eventing/accessing-traces.md @@ -41,7 +41,7 @@ metadata: name: config-tracing namespace: knative-eventing data: - enable: "true" + backend: "zipkin" zipkin-endpoint: "http://zipkin.istio-system.svc.cluster.local:9411/api/v2/spans" sample-rate: "0.1" ``` From 702b26b3da490021e9299b39c1dad17c5f4886e0 Mon Sep 17 00:00:00 2001 From: Carlos Santana Date: Wed, 12 May 2021 13:23:47 -0400 Subject: [PATCH 05/38] remove unnecessary requrirements to do a release (#3563) Signed-off-by: Carlos Santana --- help/maintainer/docs-release-process.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/help/maintainer/docs-release-process.md b/help/maintainer/docs-release-process.md index 44c7236501c..b9870608dcc 100644 --- a/help/maintainer/docs-release-process.md +++ b/help/maintainer/docs-release-process.md @@ -11,22 +11,12 @@ branch and corresponding section knative.dev. ## Before you begin -* For updating and building website on knative.dev - * Be granted access to Netlify for staging - * Contact Caroline Lee or Richie Escarez - * For GitHub * [Set up keys for SSH access](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh) * [Configure two remote repos](https://articles.assembla.com/en/articles/1136998-how-to-add-a-new-remote-to-your-git-repo) for your local /docs and /website clones: * "origin" - pointed at main repo (git@github.com:knative/docs.git) * "upstream" - pointed at your fork of main repo (git@github.com:/docs.git) -* For building website locally: - * [Install Hugo](https://www.docsy.dev/docs/getting-started/#install-hugo) - * (for Mac) Install gnu-sed using brew: brew install gnu-sed - * Update path to gnu-sed: `PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"` - * [Go version 1.11+](https://golang.org/dl/) - * Clone git@github.com:knative/website.git (has build script) * To create combined PRs. Make your first pull request, choose Create a new branch. Give it a name you will remember. Then when you make your subsequent updates, make sure you select the branch you just created so you can add all your From 135e998d49cf4895678a7ea530ff44730ab29443 Mon Sep 17 00:00:00 2001 From: Ashleigh Brennan Date: Thu, 13 May 2021 11:55:49 -0500 Subject: [PATCH 06/38] #3543 fix link (#3567) --- community/samples/_index.md | 5 ++- .../serving/helloworld-clojure/index.md | 3 +- .../samples/serving/helloworld-dart/index.md | 2 +- .../samples/serving/helloworld-deno/index.md | 3 +- .../serving/helloworld-haskell/index.md | 3 +- .../helloworld-java-micronaut/index.md | 2 +- .../serving/helloworld-java-quarkus/index.md | 2 +- .../samples/serving/helloworld-r/index.md | 3 +- .../serving/helloworld-rserver/index.md | 2 +- .../samples/serving/helloworld-rust/index.md | 2 +- .../samples/serving/helloworld-swift/index.md | 2 +- .../samples/serving/helloworld-vertx/index.md | 2 +- .../machinelearning-python-bentoml/index.md | 2 +- docs/eventing/event-registry.md | 11 ++---- docs/eventing/getting-started.md | 10 +++--- docs/install/install-eventing-with-yaml.md | 18 +++++----- docs/install/install-extensions.md | 32 +++++++++--------- docs/install/installing-istio.md | 5 +-- docs/samples.md | 6 ++-- docs/serving/_index.md | 24 ++++++------- docs/serving/autoscaling/_index.md | 14 ++++---- .../serving/autoscaling/autoscale-go/index.md | 2 +- docs/serving/deploying/private-registry.md | 30 ++++++++-------- docs/serving/feature-flags.md | 2 +- docs/serving/getting-started-knative-app.md | 12 +++---- docs/serving/samples/_index.md | 25 +++++++------- .../cloudevents/cloudevents-dotnet/index.md | 2 +- .../cloudevents/cloudevents-go/index.md | 2 +- .../cloudevents/cloudevents-nodejs/index.md | 2 +- .../cloudevents/cloudevents-rust/index.md | 2 +- .../cloudevents/cloudevents-spring/index.md | 2 +- .../cloudevents/cloudevents-vertx/index.md | 3 +- .../hello-world/helloworld-csharp/index.md | 4 +-- .../hello-world/helloworld-go/index.md | 2 +- .../helloworld-java-spark/index.md | 2 +- .../helloworld-java-spring/index.md | 2 +- .../hello-world/helloworld-kotlin/index.md | 2 +- .../hello-world/helloworld-nodejs/index.md | 2 +- .../hello-world/helloworld-php/index.md | 2 +- .../hello-world/helloworld-python/index.md | 4 +-- .../hello-world/helloworld-ruby/index.md | 4 +-- .../hello-world/helloworld-scala/index.md | 2 +- .../hello-world/helloworld-shell/index.md | 2 +- docs/serving/using-a-custom-domain.md | 4 +-- docs/serving/using-external-dns-on-gcp.md | 2 +- hack/__pycache__/macros.cpython-36.pyc | Bin 0 -> 964 bytes template-docs-page.md | 4 +-- 47 files changed, 130 insertions(+), 145 deletions(-) create mode 100644 hack/__pycache__/macros.cpython-36.pyc diff --git a/community/samples/_index.md b/community/samples/_index.md index 72187cda7c6..6060e06eed5 100644 --- a/community/samples/_index.md +++ b/community/samples/_index.md @@ -14,7 +14,7 @@ something isn't working, lend a helping hand and fix it in a PR. [Learn more about the lifespan of samples](https://github.com/knative/docs/tree/main/CONTRIBUTING.md#user-focused-content) -[**See all Knative code samples**](../../docs/samples.md) +[**See all Knative code samples**](../../docs/samples) ### Interactive serving sample @@ -30,7 +30,7 @@ Knative Serving sample apps. | Sample Name | Description | Language(s) | | ----------- | ----------- | ----------- | -| Hello World | A quick introduction to Knative Serving that highlights how to deploy an app. | [Clojure](./serving/helloworld-clojure/README.md), [Dart](./serving/helloworld-dart/README.md), [Elixir](./serving/helloworld-elixir/README.md), [Haskell](./serving/helloworld-haskell/README.md), [Java - Micronaut](./serving/helloworld-java-micronaut/README.md), [Java - Quarkus](./serving/helloworld-java-quarkus/README.md), [R - Go Server](./serving/helloworld-r/README.md), [Rust](./serving/helloworld-rust/README.md), [Swift](./serving/helloworld-swift/README.md), [Vertx](./serving/helloworld-vertx/README.md) | +| Hello World | A quick introduction to Knative Serving that highlights how to deploy an app. | [Clojure](./serving/helloworld-clojure/), [Dart](./serving/helloworld-dart/), [Elixir](./serving/helloworld-elixir/), [Haskell](./serving/helloworld-haskell/), [Java - Micronaut](./serving/helloworld-java-micronaut/), [Java - Quarkus](./serving/helloworld-java-quarkus/), [R - Go Server](./serving/helloworld-r/), [Rust](./serving/helloworld-rust/), [Swift](./serving/helloworld-swift/), [Vertx](./serving/helloworld-vertx/) | | Machine Learning | A quick introduction to using Knative Serving to serve machine learning models | [Python - BentoML](./serving/machinelearning-python-bentoml) #### Eventing and Eventing Resources samples @@ -45,4 +45,3 @@ Knative `kn` Client sample workflows and apps. | Sample Name | Description | | ----------- | ----------- | | [knfun](https://github.com/maximilien/knfun) | Knative micro-functions (Twitter and Watson APIs) demo using the `kn` client. | - diff --git a/community/samples/serving/helloworld-clojure/index.md b/community/samples/serving/helloworld-clojure/index.md index f9dabb47e79..9e36b6d7fe3 100644 --- a/community/samples/serving/helloworld-clojure/index.md +++ b/community/samples/serving/helloworld-clojure/index.md @@ -12,7 +12,7 @@ specified, it will use "World" as the TARGET. ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to create + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). @@ -160,4 +160,3 @@ To remove the sample app from your cluster, delete the service record: ```shell kubectl delete --filename service.yaml ``` - diff --git a/community/samples/serving/helloworld-dart/index.md b/community/samples/serving/helloworld-dart/index.md index c87ca8e35ab..bdb59c2735b 100644 --- a/community/samples/serving/helloworld-dart/index.md +++ b/community/samples/serving/helloworld-dart/index.md @@ -13,7 +13,7 @@ that you can use for testing. It reads in the env variable `TARGET` and prints ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to create + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/community/samples/serving/helloworld-deno/index.md b/community/samples/serving/helloworld-deno/index.md index d58fe6840f4..511677e9a81 100644 --- a/community/samples/serving/helloworld-deno/index.md +++ b/community/samples/serving/helloworld-deno/index.md @@ -19,7 +19,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-deno ## Before you begin - A Kubernetes cluster with Knative installed. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). @@ -147,4 +147,3 @@ To remove the sample app from your cluster, delete the service record: ```shell kubectl delete --filename service.yaml ``` - diff --git a/community/samples/serving/helloworld-haskell/index.md b/community/samples/serving/helloworld-haskell/index.md index aabfd2de795..b0c5f272f81 100644 --- a/community/samples/serving/helloworld-haskell/index.md +++ b/community/samples/serving/helloworld-haskell/index.md @@ -12,7 +12,7 @@ specified, it will use "World" as the TARGET. ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to create + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). @@ -186,4 +186,3 @@ To remove the sample app from your cluster, delete the service record: ```shell kubectl delete --filename service.yaml ``` - diff --git a/community/samples/serving/helloworld-java-micronaut/index.md b/community/samples/serving/helloworld-java-micronaut/index.md index b02c18233c2..4aead9ed533 100644 --- a/community/samples/serving/helloworld-java-micronaut/index.md +++ b/community/samples/serving/helloworld-java-micronaut/index.md @@ -20,7 +20,7 @@ deploying your app to your Knative cluster. You must meet the following requirements to complete this sample: - A version of the Knative Serving component installed and DNS configured. Follow the - [Knative installation instructions](../../../../docs/install/README.md) if you need + [Knative installation instructions](../../../../docs/install/) if you need to create a Knative cluster. - The following software downloaded and install on your loacal machine: - [Java SE 8 or later JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). diff --git a/community/samples/serving/helloworld-java-quarkus/index.md b/community/samples/serving/helloworld-java-quarkus/index.md index 6ea760aec73..9ac9e2123b1 100644 --- a/community/samples/serving/helloworld-java-quarkus/index.md +++ b/community/samples/serving/helloworld-java-quarkus/index.md @@ -18,7 +18,7 @@ You must meet the following requirements to run this sample: - Have a Kubernetes cluster running with the Knative Serving component installed. For more information, see the - [Knative instruction guides](https://github.com/knative/docs/blob/main/docs/install/README.md). + [Knative instruction guides](https://github.com/knative/docs/blob/main/docs/install/). - An installed version of the following tools: - [Docker](https://www.docker.com) - [Java SE 8 or later JDK](https://www.eclipse.org/openj9/) diff --git a/community/samples/serving/helloworld-r/index.md b/community/samples/serving/helloworld-r/index.md index 19230c91aca..1f95323fa17 100644 --- a/community/samples/serving/helloworld-r/index.md +++ b/community/samples/serving/helloworld-r/index.md @@ -21,7 +21,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-r ## Before you begin - A Kubernetes cluster with Knative installed. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). @@ -195,4 +195,3 @@ To remove the sample app from your cluster, delete the service record: ```shell kubectl delete --filename service.yaml ``` - diff --git a/community/samples/serving/helloworld-rserver/index.md b/community/samples/serving/helloworld-rserver/index.md index 4c87f2a3710..d0a41718a05 100644 --- a/community/samples/serving/helloworld-rserver/index.md +++ b/community/samples/serving/helloworld-rserver/index.md @@ -22,7 +22,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-r ## Before you begin - A Kubernetes cluster with Knative installed. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/community/samples/serving/helloworld-rust/index.md b/community/samples/serving/helloworld-rust/index.md index 27dee0f5e1f..bb099b48a25 100644 --- a/community/samples/serving/helloworld-rust/index.md +++ b/community/samples/serving/helloworld-rust/index.md @@ -13,7 +13,7 @@ TARGET is not specified, it will use "World" as the TARGET. ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to create + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/community/samples/serving/helloworld-swift/index.md b/community/samples/serving/helloworld-swift/index.md index 5ea4b7c1dcb..cd95d3f7706 100644 --- a/community/samples/serving/helloworld-swift/index.md +++ b/community/samples/serving/helloworld-swift/index.md @@ -13,7 +13,7 @@ specified, the app uses "World" as the TARGET. - You must have a Kubernetes cluster with Knative installed and DNS configured. If you need to create a cluster, follow the - [installation instructions](../../../../docs/install/README.md). + [installation instructions](../../../../docs/install/). - You must have [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (used for container registry). diff --git a/community/samples/serving/helloworld-vertx/index.md b/community/samples/serving/helloworld-vertx/index.md index afe70544fc8..7e155cbdd97 100644 --- a/community/samples/serving/helloworld-vertx/index.md +++ b/community/samples/serving/helloworld-vertx/index.md @@ -20,7 +20,7 @@ You must meet the following requirements to complete this sample: - A version of the Knative Serving component installed and running on your Kubernetes cluster. Follow the - [Knative installation instructions](../../../../docs/install/README.md) if you need to + [Knative installation instructions](../../../../docs/install/) if you need to create a Knative cluster. - The following software downloaded and install on your loacal machine: - [Java SE 8 or later JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). diff --git a/community/samples/serving/machinelearning-python-bentoml/index.md b/community/samples/serving/machinelearning-python-bentoml/index.md index 6c867e0ab74..cc7f2a3b86b 100644 --- a/community/samples/serving/machinelearning-python-bentoml/index.md +++ b/community/samples/serving/machinelearning-python-bentoml/index.md @@ -21,7 +21,7 @@ Knative deployment guide with BentoML is also available in the ## Before you begin - A Kubernetes cluster with Knative installed. Follow the - [installation instructions](../../../../docs/install/README.md) if you need to + [installation instructions](../../../../docs/install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured. Docker Hub will be used for a container registry). diff --git a/docs/eventing/event-registry.md b/docs/eventing/event-registry.md index 433c065fc1a..8171676fbac 100644 --- a/docs/eventing/event-registry.md +++ b/docs/eventing/event-registry.md @@ -12,7 +12,7 @@ type information in the cluster data store. ## Before you begin -1. Read about the [broker](./broker/) and [trigger](./triggers/) objects. +1. Read about the [broker](./broker/) and [trigger](./broker/triggers/) objects. 1. Be familiar with the [CloudEvents spec](https://github.com/cloudevents/spec/blob/master/spec.md), particularly the @@ -279,14 +279,9 @@ the next topic: How do we actually populate the registry in the first place? are two topics). You can see that in the registry example output from the previous sections. -## What's next +## Next steps -To get started, install Knative Eventing if you haven't yet, and try -experimenting with different Event Sources in your Knative cluster. - -1. [Installing Knative](../install/README.md) in case you haven't already done - so. -1. [Getting started with eventing](./README.md) in case you haven't read it. +1. [Installing Knative](../install/). 1. [Knative code samples](./samples/) is a useful resource to better understand some of the Event Sources (remember to point them to a Broker if you want automatic registration of EventTypes in the registry). diff --git a/docs/eventing/getting-started.md b/docs/eventing/getting-started.md index da81c25f344..5ef0c7e7823 100644 --- a/docs/eventing/getting-started.md +++ b/docs/eventing/getting-started.md @@ -24,7 +24,7 @@ kubectl create namespace event-example ## Adding a broker to the namespace -The [broker](./broker/README.md#broker) allows you to route events to different event sinks or consumers. +The [broker](./broker) allows you to route events to different event sinks or consumers. 1. Add a broker named `default` to your namespace by entering the following command: @@ -52,7 +52,7 @@ The [broker](./broker/README.md#broker) allows you to route events to different ``` If `READY` is `False`, wait a few moments and then run the command again. - If you continue to receive the `False` status, see the [Debugging Guide](./debugging/README.md) to troubleshoot the issue. + If you continue to receive the `False` status, see the [Debugging Guide](./debugging/) to troubleshoot the issue. ## Creating event consumers @@ -148,11 +148,11 @@ demonstrate how you can configure your event producers to target a specific cons goodbye-display 1/1 1 1 16s ``` The number of replicas in the **READY** column should match the number of replicas in the **AVAILABLE** column. - If the numbers do not match, see the [Debugging Guide](./debugging/README.md) to troubleshoot the issue. + If the numbers do not match, see the [Debugging Guide](./debugging/) to troubleshoot the issue. ## Creating triggers -A [trigger](./broker/README.md#trigger) defines the events that each event consumer receives. +A [trigger](./broker/triggers) defines the events that each event consumer receives. Brokers use triggers to forward events to the correct consumers. Each trigger can specify a filter that enables selection of relevant events based on the Cloud Event context attributes. @@ -216,7 +216,7 @@ Each trigger can specify a filter that enables selection of relevant events base The `SUBSCRIBER_URI` has a value similar to `triggerName.namespaceName.svc.cluster.local`. The exact value depends on the broker implementation. - If this value looks incorrect, see the [Debugging Guide](./debugging/README.md) to troubleshoot the issue. + If this value looks incorrect, see the [Debugging Guide](./debugging/) to troubleshoot the issue. ## Creating a pod as an event producer diff --git a/docs/install/install-eventing-with-yaml.md b/docs/install/install-eventing-with-yaml.md index 6f4de792989..0b5b5b99b74 100644 --- a/docs/install/install-eventing-with-yaml.md +++ b/docs/install/install-eventing-with-yaml.md @@ -12,7 +12,7 @@ This topic describes how to install Knative Eventing by applying YAML files usin ## Prerequisites Before installation, you must meet the prerequisites. -See [Knative Prerequisites](./prerequisites.md). +See [Knative Prerequisites](./prerequisites). ## Install the Eventing component @@ -32,7 +32,7 @@ To install the Eventing component: ``` For information about the YAML files in the Knative Serving and Eventing releases, see -[Installation files](./installation-files.md). +[Installation files](./installation-files). ## Verify the installation @@ -55,7 +55,7 @@ Follow the procedure for the channel of your choice: {{% tab name="Apache Kafka Channel" %}} 1. First, - [Install Apache Kafka for Kubernetes](../eventing/samples/kafka/README.md) + [Install Apache Kafka for Kubernetes](../eventing/samples/kafka/) 1. Then install the Apache Kafka channel: @@ -66,7 +66,7 @@ Follow the procedure for the channel of your choice: ``` To learn more about the Apache Kafka channel, try -[our sample](../eventing/samples/kafka/channel/README.md) +[our sample](../eventing/samples/kafka/channel/) {{< /tab >}} @@ -80,7 +80,7 @@ To learn more about the Apache Kafka channel, try ``` To learn more about the Google Cloud Pub/Sub channel, try -[our sample](https://github.com/google/knative-gcp/blob/master/docs/examples/channel/README.md) +[our sample](https://github.com/google/knative-gcp/blob/master/docs/examples/channel/) {{< /tab >}} @@ -138,7 +138,7 @@ The following commands install the Apache Kafka broker, and run event routing in kubectl apply -f {{< artifact org="knative-sandbox" repo="eventing-kafka-broker" file="eventing-kafka-broker.yaml" >}} ``` -For more information, see the [Kafka broker](./../eventing/broker/kafka-broker.md) documentation. +For more information, see the [Kafka broker](./../eventing/broker/kafka-broker) documentation. {{< /tab >}} {{% tab name="MT-Channel-based" %}} @@ -221,8 +221,8 @@ data: After installing Knative Eventing: -- To easily interact with Knative Eventing components, [install the `kn` CLI](/docs/client/install-kn.md) +- To easily interact with Knative Eventing components, [install the `kn` CLI](/docs/client/install-kn) -- To add optional enhancements to your installation, see [Installing optional extensions](./install-extensions.md) +- To add optional enhancements to your installation, see [Installing optional extensions](./install-extensions) -- [Installing Knative Serving using YAML files](./install-serving-with-yaml.md) +- [Installing Knative Serving using YAML files](./install-serving-with-yaml) diff --git a/docs/install/install-extensions.md b/docs/install/install-extensions.md index 4609e21f04c..3fb552f0c0b 100644 --- a/docs/install/install-extensions.md +++ b/docs/install/install-extensions.md @@ -10,14 +10,14 @@ To add extra features to your Knative Serving or Eventing installation, you can by applying YAML files using the `kubectl` CLI. For information about the YAML files in the Knative Serving and Eventing releases, see -[Installation files](./installation-files.md). +[Installation files](./installation-files). # Prerequisites Before you install any optional extensions, you must install Knative Serving or Eventing. -See [Installing Serving using YAML files](./install-serving-with-yaml.md) -and [Installing Eventing using YAML files](./install-eventing-with-yaml.md). +See [Installing Serving using YAML files](./install-serving-with-yaml) +and [Installing Eventing using YAML files](./install-eventing-with-yaml). ## Install optional Serving extensions @@ -48,7 +48,7 @@ install the components needed to support the provisioning of TLS certificates via cert-manager. 1. First, install - [cert-manager version `0.12.0` or higher](../serving/installing-cert-manager.md) + [cert-manager version `0.12.0` or higher](../serving/installing-cert-manager) 2. Next, install the component that integrates Knative with cert-manager: @@ -57,7 +57,7 @@ via cert-manager. ``` 3. Now configure Knative to - [automatically configure TLS certificates](../serving/using-auto-tls.md). + [automatically configure TLS certificates](../serving/using-auto-tls). {{< /tab >}} {{% tab name="TLS via HTTP01" %}} @@ -144,7 +144,7 @@ The tabs below expand to show instructions for installing each Eventing extensio kubectl apply -f {{< artifact org="knative-sandbox" repo="eventing-kafka-broker" file="eventing-kafka-sink.yaml" >}} ``` -For more information, see the [Kafka Sink](./../eventing/sink/kafka-sink.md) documentation. +For more information, see the [Kafka Sink](./../eventing/sink/kafka-sink) documentation. {{< /tab >}} @@ -197,7 +197,7 @@ GitHub sources in the cluster. This source does not support logging or tracing configuration yet. To learn more about the Github source, try -[our sample](../eventing/samples/github-source/README.md) +[our sample](../eventing/samples/github-source/) {{< /tab >}} @@ -210,7 +210,7 @@ kubectl apply -f {{< artifact org="knative-sandbox" repo="eventing-camel" file=" ``` To learn more about the Apache Camel-K source, try -[our sample](../eventing/samples/apache-camel-source/README.md) +[our sample](../eventing/samples/apache-camel-source/) {{< /tab >}} @@ -223,7 +223,7 @@ kubectl apply -f {{< artifact org="knative-sandbox" repo="eventing-kafka" file=" ``` To learn more about the Apache Kafka source, try -[our sample](../eventing/samples/kafka/source/README.md) +[our sample](../eventing/samples/kafka/source/) {{< /tab >}} @@ -237,16 +237,16 @@ kubectl apply -f {{< artifact org="google" repo="knative-gcp" file="cloud-run-ev ``` To learn more about the Cloud Pub/Sub source, try -[our sample](../eventing/samples/cloud-pubsub-source/README.md). +[our sample](../eventing/samples/cloud-pubsub-source/). To learn more about the Cloud Storage source, try -[our sample](../eventing/samples/cloud-storage-source/README.md). +[our sample](../eventing/samples/cloud-storage-source/). To learn more about the Cloud Scheduler source, try -[our sample](../eventing/samples/cloud-scheduler-source/README.md). +[our sample](../eventing/samples/cloud-scheduler-source/). To learn more about the Cloud Audit Logs source, try -[our sample](../eventing/samples/cloud-audit-logs-source/README.md). +[our sample](../eventing/samples/cloud-audit-logs-source/). {{< /tab >}} @@ -258,7 +258,7 @@ The following command installs the Apache CouchDB Source: kubectl apply -f {{< artifact org="knative-sandbox" repo="eventing-couchdb" file="couchdb.yaml" >}} ``` -To learn more about the Apache CouchDB source, read the [documentation](https://github.com/knative-sandbox/eventing-couchdb/blob/main/source/README.md). +To learn more about the Apache CouchDB source, read the [documentation](https://github.com/knative-sandbox/eventing-couchdb/blob/main/source/). {{< /tab >}} @@ -271,7 +271,7 @@ kubectl apply -f {{< artifact org="vmware-tanzu" repo="sources-for-knative" file ``` To learn more about the VMware sources and bindings, try -[our samples](https://github.com/vmware-tanzu/sources-for-knative/tree/master/samples/README.md). +[our samples](https://github.com/vmware-tanzu/sources-for-knative/tree/master/samples/). {{< /tab >}} @@ -279,4 +279,4 @@ To learn more about the VMware sources and bindings, try ## Next steps -- To easily interact with Knative Services and Eventing components, [install the `kn` CLI](/docs/client/install-kn.md) +- To easily interact with Knative Services and Eventing components, [install the `kn` CLI](/docs/client/install-kn) diff --git a/docs/install/installing-istio.md b/docs/install/installing-istio.md index 3969a20274e..2ca65297725 100644 --- a/docs/install/installing-istio.md +++ b/docs/install/installing-istio.md @@ -211,10 +211,7 @@ See the [Uninstall Istio](https://istio.io/docs/setup/install/istioctl/#uninstal ## What's next -- [Install Knative](./README.md). -- Try the - [Getting Started with App Deployment guide](../serving/getting-started-knative-app.md) - for Knative serving. +- Try the [Getting Started with App Deployment guide](../serving/getting-started-knative-app) for Knative serving. [1]: https://istio.io/docs/setup/kubernetes/additional-setup/sidecar-injection/#manual-sidecar-injection diff --git a/docs/samples.md b/docs/samples.md index 00dd6fc916b..91431105176 100755 --- a/docs/samples.md +++ b/docs/samples.md @@ -16,11 +16,11 @@ closer with your goals. View the set of Knative code samples that are actively tested and maintained: - [Eventing and Eventing Sources code samples](./eventing/samples/) -- [Serving code samples](./serving/samples/README.md) +- [Serving code samples](./serving/samples/) ### Community owned and maintained -[View code samples that are contributed and maintained by the community](../community/samples/README.md). +[View code samples that are contributed and maintained by the community](../community/samples/). ### External code samples @@ -29,7 +29,7 @@ A list of links to Knative code samples that live outside of - [Image processing using Knative Eventing, Cloud Run on GKE (Knative Serving implementation) and Google Cloud Vision API](https://github.com/akashrv/knative-samples/blob/master/docs/image-processing.md) - [A potpourri of Knative Eventing Examples](https://github.com/lionelvillard/knative-examples) -- [Knfun - a complete Knative example of three functions using Twitter and Watson API that use kn to deploy and manage functions](https://github.com/maximilien/knfun/blob/master/README.md) +- [Knfun - a complete Knative example of three functions using Twitter and Watson API that use kn to deploy and manage functions](https://github.com/maximilien/knfun/blob/master/) - [Knative Eventing (Cloud Events) example using spring-boot and spring-cloud-streams + Kafka](https://salaboy.com/2020/02/20/getting-started-with-knative-2020/) - [Image processing pipeline using Knative Eventing on GKE, Google Cloud Vision API and ImageSharp library](https://github.com/meteatamel/knative-tutorial/blob/master/docs/image-processing-pipeline.md) - [BigQuery processing pipeline using Knative Eventing on GKE, Cloud Scheduler, BigQuery, mathplotlib and SendGrid](https://github.com/meteatamel/knative-tutorial/blob/master/docs/bigquery-processing-pipeline.md) diff --git a/docs/serving/_index.md b/docs/serving/_index.md index d4bcdc96d73..9744d1eddb2 100644 --- a/docs/serving/_index.md +++ b/docs/serving/_index.md @@ -22,22 +22,22 @@ Knative Serving defines a set of objects as Kubernetes Custom Resource Definitions (CRDs). These objects are used to define and control how your serverless workload behaves on the cluster: -- [Service](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0.md#service): +- [Service](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#service): The `service.serving.knative.dev` resource automatically manages the whole lifecycle of your workload. It controls the creation of other objects to ensure that your app has a route, a configuration, and a new revision for each update of the service. Service can be defined to always route traffic to the latest revision or to a pinned revision. -- [Route](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0.md#route): +- [Route](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#route): The `route.serving.knative.dev` resource maps a network endpoint to one or more revisions. You can manage the traffic in several ways, including fractional traffic and named routes. -- [Configuration](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0.md#configuration): +- [Configuration](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#configuration): The `configuration.serving.knative.dev` resource maintains the desired state for your deployment. It provides a clean separation between code and configuration and follows the Twelve-Factor App methodology. Modifying a configuration creates a new revision. -- [Revision](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0.md#revision): +- [Revision](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#revision): The `revision.serving.knative.dev` resource is a point-in-time snapshot of the code and configuration for each modification made to the workload. Revisions are immutable objects and can be retained for as long as useful. Knative @@ -59,27 +59,27 @@ matching route and configuration created. Each time the `Service` is updated, a new revision is created. For more information on the resources and their interactions, see the -[Resource Types Overview](https://github.com/knative/serving/blob/main/docs/spec/overview.md) +[Resource Types Overview](https://github.com/knative/specs/blob/main/specs/serving/overview.md) in the Knative Serving repository. ## More samples and demos -- [Knative Serving code samples](./samples/README.md) +- [Knative Serving code samples](./samples/) ## Debugging Knative Serving issues -- [Debugging Application Issues](./debugging-application-issues.md) +- [Debugging Application Issues](./debugging-application-issues) ## Configuration and Networking -- [Configuring cluster local routes](./cluster-local-route.md) -- [Using a custom domain](./using-a-custom-domain.md) -- [Assigning a static IP address for Knative on Google Kubernetes Engine](./gke-assigning-static-ip-address.md) -- [Using subroutes](./using-subroutes.md) +- [Configuring cluster local routes](./cluster-local-route) +- [Using a custom domain](./using-a-custom-domain) +- [Assigning a static IP address for Knative on Google Kubernetes Engine](./gke-assigning-static-ip-address) +- [Using subroutes](./using-subroutes) ## Observability -- [Serving Metrics API](./metrics.md) +- [Serving Metrics API](./metrics) ## Known Issues diff --git a/docs/serving/autoscaling/_index.md b/docs/serving/autoscaling/_index.md index c9b70869621..1c4208a0d89 100644 --- a/docs/serving/autoscaling/_index.md +++ b/docs/serving/autoscaling/_index.md @@ -14,16 +14,16 @@ The Autoscaler component watches traffic flow to the application, and scales rep Knative services default to using autoscaling settings that are suitable for the majority of use cases. However, some workloads may require a custom, more finely-tuned configuration. This guide provides information about configuration options that you can modify to fit the requirements of your workload. -For more information about how autoscaling for Knative works, see the [Autoscaling concepts](./autoscaling-concepts.md) documentation. +For more information about how autoscaling for Knative works, see the [Autoscaling concepts](./autoscaling-concepts) documentation. -For more information about which metrics can be used to control the Autoscaler, see the [metrics](./autoscaling-metrics.md) documentation. +For more information about which metrics can be used to control the Autoscaler, see the [metrics](./autoscaling-metrics) documentation. ## Optional autoscaling configuration tasks * Configure your Knative deployment to use the Kubernetes Horizontal Pod Autoscaler (HPA) instead of the default KPA. -For how to install HPA, see [Install optional Eventing extensions](../../install/install-extensions.md#install-optional-serving-extensions). -* Disable scale to zero functionality for your cluster ([global configuration only](./scale-to-zero.md)). -* Configure the [type of metrics](./autoscaling-metrics.md) your Autoscaler consumes. -* Configure [concurrency limits](./concurrency.md) for applications. -* Try out the [Go Autoscale Sample App](./autoscale-go/README.md). +For how to install HPA, see [Install optional Eventing extensions](../../install/install-extensions#install-optional-serving-extensions). +* Disable scale to zero functionality for your cluster ([global configuration only](./scale-to-zero)). +* Configure the [type of metrics](./autoscaling-metrics) your Autoscaler consumes. +* Configure [concurrency limits](./concurrency) for applications. +* Try out the [Go Autoscale Sample App](./autoscale-go/). diff --git a/docs/serving/autoscaling/autoscale-go/index.md b/docs/serving/autoscaling/autoscale-go/index.md index 2faf813a8e2..465f688b549 100644 --- a/docs/serving/autoscaling/autoscale-go/index.md +++ b/docs/serving/autoscaling/autoscale-go/index.md @@ -11,7 +11,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision. ## Prerequisites -1. A Kubernetes cluster with [Knative Serving](../../../install/README.md) +1. A Kubernetes cluster with [Knative Serving](../../../install/) installed. 1. The `hey` load generator installed (`go get -u github.com/rakyll/hey`). 1. Clone this repository, and move into the sample directory: diff --git a/docs/serving/deploying/private-registry.md b/docs/serving/deploying/private-registry.md index 06254cc4a97..54aaa12285c 100644 --- a/docs/serving/deploying/private-registry.md +++ b/docs/serving/deploying/private-registry.md @@ -5,10 +5,10 @@ weight: 10 type: "docs" --- -Learn how to configure your Knative cluster to deploy images from a private +Learn how to configure your Knative cluster to deploy images from a private container registry. -To share access to your private container images across multiple services and +To share access to your private container images across multiple services and revisions, you create a list of Kubernetes secrets ([`imagePullSecrets`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#pod-v1-core)) using your registry credentials, add that `imagePullSecrets` to your default @@ -19,7 +19,7 @@ and then deploy those configurations to your Knative cluster. You need: -- A Kubernetes cluster with [Knative Serving installed](../../install/README.md). +- A Kubernetes cluster with [Knative Serving installed](../../install/). - The credentials to the private container registry where your container images are stored. ## Configuring your credentials in Knative @@ -39,7 +39,7 @@ You need: (`imagePullSecrets` object). For example, `container-registry`. - `[PRIVATE_REGISTRY_SERVER_URL]` is the URL to the private - registry where your container images are stored. + registry where your container images are stored. Examples: - Google Container Registry: [https://gcr.io/](https://gcr.io/) @@ -53,9 +53,9 @@ You need: * `[PRIVATE_REGISTRY_PASSWORD]` is the password that you use to access the private container registry. - + Example: - + ```shell kubectl create secret `container-registry` \ --docker-server=https://gcr.io/ \ @@ -63,20 +63,20 @@ You need: --docker-username=my-grc-username \ --docker-password=my-gcr-password ``` - + Tip: After creating the `imagePullSecrets`, you can view those secret's by running: - + ```shell kubectl get secret [REGISTRY-CRED-SECRETS] --output=yaml ``` 1. Add the `imagePullSecrets` to your `default` service account in the `default` namespace. - - Note: By default, the `default` service account in each of the - [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) - of your Knative cluster are use by your revisions unless - [`serviceAccountName`](../spec/knative-api-specification-1.0.md) is specified. + + Note: By default, the `default` service account in each of the + [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) + of your Knative cluster are use by your revisions unless + [`serviceAccountName`](../spec/knative-api-specification-1.0) is specified. Run the following command to modify your `default` service account, assuming you named your secrets `container-registry`: @@ -90,5 +90,5 @@ your credentials and have access to your container images in the private registr ## What's next -You can now create a service that uses your container images from the private registry. -[Learn how to create a Knative service](../getting-started-knative-app.md). +You can now create a service that uses your container images from the private registry. +[Learn how to create a Knative service](../getting-started-knative-app). diff --git a/docs/serving/feature-flags.md b/docs/serving/feature-flags.md index e2bffb8ad1e..3e44f54ce60 100644 --- a/docs/serving/feature-flags.md +++ b/docs/serving/feature-flags.md @@ -286,4 +286,4 @@ they are no longer active. * **Type**: extension * **ConfigMap key:** `tag-header-based-routing` -This flags controls whether [tag header based routing](./samples/tag-header-based-routing/README.md) is enabled. +This flags controls whether [tag header based routing](./samples/tag-header-based-routing/) is enabled. diff --git a/docs/serving/getting-started-knative-app.md b/docs/serving/getting-started-knative-app.md index 169e63aaa00..626dc48e949 100644 --- a/docs/serving/getting-started-knative-app.md +++ b/docs/serving/getting-started-knative-app.md @@ -14,7 +14,7 @@ using cURL requests. You need: -- A Kubernetes cluster with [Knative Serving installed](../install/README.md). +- A Kubernetes cluster with [Knative Serving installed](../install/). - An image of the app that you'd like to deploy available on a container registry. The image of the sample app used in this guide is available on Google Container Registry. @@ -33,7 +33,7 @@ To deploy a local container image, you need to disable image tag resolution by r docker tag local-image dev.local/local-image ``` -[Learn more about image tag resolution.](./tag-resolution.md) +[Learn more about image tag resolution.](./tag-resolution) The Hello World sample app reads in an `env` variable, `TARGET`, then prints "Hello World: \${TARGET}!". If `TARGET` isn't defined, it will print "NOT SPECIFIED". @@ -41,7 +41,7 @@ The Hello World sample app reads in an `env` variable, `TARGET`, then prints "He The easiest way to deploy a Knative Service is by using the Knative CLI [kn](https://github.com/knative/client). -**Prerequisite:** Install the `kn` binary as described in [Installing the Knative CLI](../install/install-kn.md) +**Prerequisite:** Install the `kn` binary as described in [Installing the Knative CLI](../install/install-kn) It will create a corresponding resource description internally as when using a YAML file directly. `kn` provides a command-line mechanism for managing Services. @@ -69,12 +69,12 @@ Now that you have deployed the service, Knative will perform the following steps ## Creating your Deployment with YAML Alternatively, to deploy an app using Knative, you can also create the configuration in a YAML file that defines a service. For more information about the Service object, see the -[Resource Types documentation](https://github.com/knative/serving/blob/main/docs/spec/overview.md#service). +[Resource Types documentation](https://github.com/knative/serving/blob/main/docs/spec/overview#service). This configuration file specifies metadata about the application, points to the hosted image of the app for deployment, and allows the deployment to be configured. For more information about what configuration options are available, -see the [Serving spec documentation](https://github.com/knative/serving/blob/main/docs/spec/spec.md). +see the [Serving spec documentation](https://github.com/knative/serving/blob/main/docs/spec/spec). To create the same application as in the previous `kn` example, create a new file named `service.yaml`, then copy and paste the following content into it: @@ -162,7 +162,7 @@ To see if your app has been deployed successfully, you need the URL created by K {{< /tabs >}} > Note: If your URL includes `example.com` then consult the setup instructions for - > configuring DNS (e.g. with `xip.io`), or [using a Custom Domain](../serving/using-a-custom-domain.md). + > configuring DNS (e.g. with `xip.io`), or [using a Custom Domain](../serving/using-a-custom-domain). If you changed the name from `helloworld-go` to something else when creating the `.yaml` file, replace `helloworld-go` in the above commands with the name you entered. diff --git a/docs/serving/samples/_index.md b/docs/serving/samples/_index.md index 9fc07cd49c4..71de1688862 100644 --- a/docs/serving/samples/_index.md +++ b/docs/serving/samples/_index.md @@ -7,20 +7,19 @@ type: "docs" Use the following code samples to help you understand the various Knative Serving resources and how they can be applied across common use cases. -[Learn more about Knative Serving resources](../README.md). -[**See all Knative code samples**](../../samples.md) +[**See all Knative code samples**](../../samples) | Name | Description | Languages | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| Hello World | A quick introduction that highlights how to deploy an app using Knative Serving. | [C#](./hello-world/helloworld-csharp/README.md), [Go](./hello-world/helloworld-go/README.md), [Java (Spark)](./hello-world/helloworld-java-spark/README.md), [Java (Spring)](./hello-world/helloworld-java-spring/README.md), [Kotlin](./hello-world/helloworld-kotlin/README.md), [Node.js](./hello-world/helloworld-nodejs/README.md), [PHP](./hello-world/helloworld-php/README.md), [Python](./hello-world/helloworld-python/README.md), [Ruby](./hello-world/helloworld-ruby/README.md), [Scala](./hello-world/helloworld-scala/README.md), [Shell](./hello-world/helloworld-shell/README.md) | -| Cloud Events | A quick introduction that highlights how to send and receive Cloud Events. | [C#](./cloudevents/cloudevents-dotnet/README.md), [Go](./cloudevents/cloudevents-go/README.md), [Node.js](./cloudevents/cloudevents-nodejs/README.md), [Rust](./cloudevents/cloudevents-rust/README.md), [Java (Vert.x)](./cloudevents/cloudevents-vertx/README.md) | -| Advanced Deployment | Simple blue/green-like application deployment pattern illustrating the process of updating a live application without dropping any traffic. | [YAML](./blue-green-deployment.md) | -| Autoscale | A demonstration of the autoscaling capabilities of Knative. | [Go](../autoscaling/autoscale-go/README.md) | -| Github Webhook | A simple webhook handler that demonstrates interacting with Github. | [Go](./gitwebhook-go/README.md) | -| gRPC | A simple gRPC server. | [Go](./grpc-ping-go/README.md) | -| Knative Routing | An example of mapping multiple Knative services to different paths under a single domain name using the Istio VirtualService concept. | [Go](./knative-routing-go/README.md) | -| Knative Secrets | A simple app that demonstrates how to use a Kubernetes secret as a Volume in Knative. | [Go](./secrets-go/README.md) | -| REST API | A simple Restful service that exposes an endpoint defined by an environment variable described in the Knative Configuration. | [Go](./rest-api-go/README.md) | -| Traffic Splitting | This samples builds off the [Creating a RESTful Service](./rest-api-go) sample to illustrate applying a revision, then using that revision for manual traffic splitting. | [YAML](./traffic-splitting/README.md) | -| Multi Container | A quick introduction that highlights how to build and deploy an app using Knative Serving for multiple containers. | [Go](./multi-container/README.md) | +| Hello World | A quick introduction that highlights how to deploy an app using Knative Serving. | [C#](./hello-world/helloworld-csharp/), [Go](./hello-world/helloworld-go/), [Java (Spark)](./hello-world/helloworld-java-spark/), [Java (Spring)](./hello-world/helloworld-java-spring/), [Kotlin](./hello-world/helloworld-kotlin/), [Node.js](./hello-world/helloworld-nodejs/), [PHP](./hello-world/helloworld-php/), [Python](./hello-world/helloworld-python/), [Ruby](./hello-world/helloworld-ruby/), [Scala](./hello-world/helloworld-scala/), [Shell](./hello-world/helloworld-shell/) | +| Cloud Events | A quick introduction that highlights how to send and receive Cloud Events. | [C#](./cloudevents/cloudevents-dotnet/), [Go](./cloudevents/cloudevents-go/), [Node.js](./cloudevents/cloudevents-nodejs/), [Rust](./cloudevents/cloudevents-rust/), [Java (Vert.x)](./cloudevents/cloudevents-vertx/) | +| Advanced Deployment | Simple blue/green-like application deployment pattern illustrating the process of updating a live application without dropping any traffic. | [YAML](./blue-green-deployment) | +| Autoscale | A demonstration of the autoscaling capabilities of Knative. | [Go](../autoscaling/autoscale-go/) | +| Github Webhook | A simple webhook handler that demonstrates interacting with Github. | [Go](./gitwebhook-go/) | +| gRPC | A simple gRPC server. | [Go](./grpc-ping-go/) | +| Knative Routing | An example of mapping multiple Knative services to different paths under a single domain name using the Istio VirtualService concept. | [Go](./knative-routing-go/) | +| Knative Secrets | A simple app that demonstrates how to use a Kubernetes secret as a Volume in Knative. | [Go](./secrets-go/) | +| REST API | A simple Restful service that exposes an endpoint defined by an environment variable described in the Knative Configuration. | [Go](./rest-api-go/) | +| Traffic Splitting | This samples builds off the [Creating a RESTful Service](./rest-api-go) sample to illustrate applying a revision, then using that revision for manual traffic splitting. | [YAML](./traffic-splitting/) | +| Multi Container | A quick introduction that highlights how to build and deploy an app using Knative Serving for multiple containers. | [Go](./multi-container/) | diff --git a/docs/serving/samples/cloudevents/cloudevents-dotnet/index.md b/docs/serving/samples/cloudevents/cloudevents-dotnet/index.md index 8dcf8ef7d6f..f766aa2dbc7 100644 --- a/docs/serving/samples/cloudevents/cloudevents-dotnet/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-dotnet/index.md @@ -32,7 +32,7 @@ cd knative-docs/docs/serving/samples/cloudevents/cloudevents-dotnet ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/cloudevents/cloudevents-go/index.md b/docs/serving/samples/cloudevents/cloudevents-go/index.md index 790e1875700..c8c58613d23 100644 --- a/docs/serving/samples/cloudevents/cloudevents-go/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-go/index.md @@ -32,7 +32,7 @@ cd knative-docs/docs/serving/samples/cloudevents/cloudevents-go ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md b/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md index e2f6db983d0..1e5d5ffb121 100644 --- a/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md @@ -32,7 +32,7 @@ cd knative-docs/docs/serving/samples/cloudevents/cloudevents-nodejs ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/cloudevents/cloudevents-rust/index.md b/docs/serving/samples/cloudevents/cloudevents-rust/index.md index 4735b0cca5b..ee6289ec4da 100644 --- a/docs/serving/samples/cloudevents/cloudevents-rust/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-rust/index.md @@ -34,7 +34,7 @@ cd knative-docs/docs/serving/samples/cloudevents/cloudevents-rust ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/cloudevents/cloudevents-spring/index.md b/docs/serving/samples/cloudevents/cloudevents-spring/index.md index 8592c87c731..318739a0d16 100644 --- a/docs/serving/samples/cloudevents/cloudevents-spring/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-spring/index.md @@ -34,7 +34,7 @@ cd knative-docs/docs/serving/samples/cloudevents/cloudevents-spring ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/cloudevents/cloudevents-vertx/index.md b/docs/serving/samples/cloudevents/cloudevents-vertx/index.md index 019f0edc023..536129c6e1c 100644 --- a/docs/serving/samples/cloudevents/cloudevents-vertx/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-vertx/index.md @@ -34,7 +34,7 @@ cd knative-docs/docs/serving/samples/cloudevents/cloudevents-vertx ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). @@ -156,4 +156,3 @@ kn service delete cloudevents-vertx ``` {{< /tab >}} - diff --git a/docs/serving/samples/hello-world/helloworld-csharp/index.md b/docs/serving/samples/hello-world/helloworld-csharp/index.md index 768e7ef50cd..6abe43feb0c 100644 --- a/docs/serving/samples/hello-world/helloworld-csharp/index.md +++ b/docs/serving/samples/hello-world/helloworld-csharp/index.md @@ -21,7 +21,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-csharp ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). @@ -83,7 +83,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-csharp # Use Microsoft's official build .NET image. FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build WORKDIR /app - + # Install production dependencies. # Copy csproj and restore as distinct layers. COPY *.csproj ./ diff --git a/docs/serving/samples/hello-world/helloworld-go/index.md b/docs/serving/samples/hello-world/helloworld-go/index.md index 0046b977e30..d624169a8f9 100644 --- a/docs/serving/samples/hello-world/helloworld-go/index.md +++ b/docs/serving/samples/hello-world/helloworld-go/index.md @@ -13,7 +13,7 @@ If `TARGET` is not specified, `World` is used as the default value. ## Prerequisites You will need: -- A Kubernetes cluster with [Knative installed and DNS configured](../../../../install/README.md). +- A Kubernetes cluster with [Knative installed and DNS configured](../../../../install/). - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured. - Optional: You can use the Knative CLI client [`kn`](https://github.com/knative/client/releases) to simplify resource creation and deployment. Alternatively, you can use `kubectl` to apply resource files directly. diff --git a/docs/serving/samples/hello-world/helloworld-java-spark/index.md b/docs/serving/samples/hello-world/helloworld-java-spark/index.md index 497a49c4726..83d739880c0 100644 --- a/docs/serving/samples/hello-world/helloworld-java-spark/index.md +++ b/docs/serving/samples/hello-world/helloworld-java-spark/index.md @@ -12,7 +12,7 @@ This guide describes the steps required to to create the `helloworld-java` sampl ## Prerequisites You will need: -- A Kubernetes cluster with [Knative installed and DNS configured](../../../../install/README.md). +- A Kubernetes cluster with [Knative installed and DNS configured](../../../../install/). - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured. - [Java SE 8 or later JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). diff --git a/docs/serving/samples/hello-world/helloworld-java-spring/index.md b/docs/serving/samples/hello-world/helloworld-java-spring/index.md index b2b345cd182..e819c7a5cdc 100644 --- a/docs/serving/samples/hello-world/helloworld-java-spring/index.md +++ b/docs/serving/samples/hello-world/helloworld-java-spring/index.md @@ -19,7 +19,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-java-spring ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md). + [installation instructions](../../../../install/). - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured. - (optional) The Knative CLI client [kn](https://github.com/knative/client/releases) can be used to simplify the deployment. Alternatively, you can use `kubectl`, and apply resource files directly. diff --git a/docs/serving/samples/hello-world/helloworld-kotlin/index.md b/docs/serving/samples/hello-world/helloworld-kotlin/index.md index 12e5eea5e8d..11e05870504 100644 --- a/docs/serving/samples/hello-world/helloworld-kotlin/index.md +++ b/docs/serving/samples/hello-world/helloworld-kotlin/index.md @@ -21,7 +21,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-kotlin ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/hello-world/helloworld-nodejs/index.md b/docs/serving/samples/hello-world/helloworld-nodejs/index.md index a7458e5548a..d6d40e4a767 100644 --- a/docs/serving/samples/hello-world/helloworld-nodejs/index.md +++ b/docs/serving/samples/hello-world/helloworld-nodejs/index.md @@ -21,7 +21,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-nodejs ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/hello-world/helloworld-php/index.md b/docs/serving/samples/hello-world/helloworld-php/index.md index 1e6da2e4fd5..8c3361ce8bf 100644 --- a/docs/serving/samples/hello-world/helloworld-php/index.md +++ b/docs/serving/samples/hello-world/helloworld-php/index.md @@ -21,7 +21,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-php ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/hello-world/helloworld-python/index.md b/docs/serving/samples/hello-world/helloworld-python/index.md index fad48a98e59..5bbacafc9d9 100644 --- a/docs/serving/samples/hello-world/helloworld-python/index.md +++ b/docs/serving/samples/hello-world/helloworld-python/index.md @@ -23,7 +23,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-python ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md). + [installation instructions](../../../../install/). - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured. - (optional) The Knative CLI client @@ -172,7 +172,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-python 1. Run one of the followings commands to find the domain URL for your service. > Note: If your URL includes `example.com` then consult the setup instructions for - > configuring DNS (e.g. with `xip.io`), or [using a Custom Domain](../serving/using-a-custom-domain.md). + > configuring DNS (e.g. with `xip.io`), or [using a Custom Domain](../serving/using-a-custom-domain). {{< tabs name="service_url" default="kn" >}} {{% tab name="kubectl" %}} diff --git a/docs/serving/samples/hello-world/helloworld-ruby/index.md b/docs/serving/samples/hello-world/helloworld-ruby/index.md index ef8065e2d90..7b27f55fe1c 100644 --- a/docs/serving/samples/hello-world/helloworld-ruby/index.md +++ b/docs/serving/samples/hello-world/helloworld-ruby/index.md @@ -21,7 +21,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-ruby ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md). + [installation instructions](../../../../install/). - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured. - (optional) The Knative CLI client [kn](https://github.com/knative/client/releases) that simplifies the deployment. Alternative you can also use [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and apply resource files directly. @@ -245,4 +245,4 @@ To remove the sample app from your cluster, delete the service record. ``` {{< /tab >}} -{{< /tabs >}} \ No newline at end of file +{{< /tabs >}} diff --git a/docs/serving/samples/hello-world/helloworld-scala/index.md b/docs/serving/samples/hello-world/helloworld-scala/index.md index 5ac4efbc26a..a39b14cbf1f 100644 --- a/docs/serving/samples/hello-world/helloworld-scala/index.md +++ b/docs/serving/samples/hello-world/helloworld-scala/index.md @@ -22,7 +22,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-scala ## Before you begin -- A Kubernetes cluster [installation](../../../../install/README.md) with +- A Kubernetes cluster [installation](../../../../install/) with Knative Serving up and running. - [Docker](https://www.docker.com) installed locally, and running, optionally a Docker Hub account configured or some other Docker Repository installed diff --git a/docs/serving/samples/hello-world/helloworld-shell/index.md b/docs/serving/samples/hello-world/helloworld-shell/index.md index 22740caa9f3..064e5ab237a 100644 --- a/docs/serving/samples/hello-world/helloworld-shell/index.md +++ b/docs/serving/samples/hello-world/helloworld-shell/index.md @@ -22,7 +22,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-shell ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md). + [installation instructions](../../../../install/). - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured. - Optional: You can use the Knative CLI client [`kn`](https://github.com/knative/client/releases) to simplify resource creation and deployment. Alternatively, you can use `kubectl` to apply resource files directly. diff --git a/docs/serving/using-a-custom-domain.md b/docs/serving/using-a-custom-domain.md index 3203ac5c4b9..8aef325def9 100644 --- a/docs/serving/using-a-custom-domain.md +++ b/docs/serving/using-a-custom-domain.md @@ -88,7 +88,7 @@ You can also apply an updated domain configuration: > deployed services and routes. Deploy an app (for example, -[`helloworld-go`](./samples/hello-world/helloworld-go/README.md)), to your +[`helloworld-go`](./samples/hello-world/helloworld-go/)), to your cluster as normal. You can retrieve the URL in Knative Route "helloworld-go" with the following command: @@ -139,7 +139,7 @@ Follow these steps to make your domain publicly accessible: ### Set static IP for Knative Gateway You might want to -[set a static IP for your Knative gateway](./gke-assigning-static-ip-address.md), +[set a static IP for your Knative gateway](./gke-assigning-static-ip-address), so that the gateway IP does not change each time your cluster is restarted. ### Update your DNS records diff --git a/docs/serving/using-external-dns-on-gcp.md b/docs/serving/using-external-dns-on-gcp.md index 46294c8d6ea..62f31fc859e 100644 --- a/docs/serving/using-external-dns-on-gcp.md +++ b/docs/serving/using-external-dns-on-gcp.md @@ -116,7 +116,7 @@ permission to get the credential secret can access your Cloud DNS. ## Set up Knative -1. Follow the [instruction](../install/README.md) to install Knative on your +1. Follow the [instruction](../install/) to install Knative on your cluster. 1. Configure Knative to use your custom domain. diff --git a/hack/__pycache__/macros.cpython-36.pyc b/hack/__pycache__/macros.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1d3d410e3e9ee29d2de2def28166e811f815d33d GIT binary patch literal 964 zcmZ8gPjAyO6t|spt;!}iAWj^7;1Y?&2RKdB#D*p`Ar* z?i=t0_)58Q;tO!##B-XK2}jQ_ety5-`{mhrb#T!4-S1yU5kf!FgF)c^4VZfhlRyHO zXoLh2(Kj^00uNCV|AHMf$Z&8l0wM-`3)Y}kXo5uCVDMMG#sUGVGpM^$&Apn-3~Dwb zp!UFqVD1Pek0y9RL_kHWNRTP9FGMtnR%nG+M8x;e5Q$E^jv%skA47xye|Pcwoz&8D zFCFDnm|I;ME@-Lrl#Y$1zK}G#u~uqNtt=&XlFp@d%ILJ;r|tM$NZq8iTU2e9?+2%! zE-ufnF3&#>FFp*Y)N^Hxt^(VfTg9(SNtN62$ZF>AfJnJUfur8g+?c$S&Kt{f`H~t? zWN#J7P`*u?E52h0dMoa;Lg{=b7}Vs-7dO}GE^qYsKW&4>Y2p3M9WmC{N;j4HOt~~O z6 z*>-WgrHySkdm9eE?zWq@1FIyiiE(we?Q0$7(${-%ZqS0{0jf#1;nMs-_7S*0uUTO# z$@n##tmYbuXNN($W9@Yd5yuLiOdob9zd{Bx0&`~S@-`Dg&w%j0|a&K g6YvSKU2x6&17P?-+n{^Ll@T|kJPCiD3q^b6FHJuLp8x;= literal 0 HcmV?d00001 diff --git a/template-docs-page.md b/template-docs-page.md index 769050ddf86..2066a80d833 100644 --- a/template-docs-page.md +++ b/template-docs-page.md @@ -84,7 +84,7 @@ Knative-specific stuff below. For example: ``` To complete the steps in this task, you must ..... meet/have/install/create/? the following: -- A Kubernetes cluster with [Knative installed](./docs/install/README.md). +- A Kubernetes cluster with [Knative installed](./docs/install/). - The latest version of ... running? - Privileges to ..... @@ -225,7 +225,7 @@ This is where you get past any of the non-Knative items so that you can focus on To complete the steps in this task, you must ..... meet/have/install/create/? the following: -- A Kubernetes cluster with [Knative installed](./docs/install/README.md). +- A Kubernetes cluster with [Knative installed](./docs/install/). - The latest version of ... running? - Privileges to ..... From 401db7d881b50d327f10fb4002906e9ea07fdb26 Mon Sep 17 00:00:00 2001 From: Benjamin Tan Wei Hao Date: Fri, 14 May 2021 21:53:49 +0800 Subject: [PATCH 07/38] Replace xip.io with sslip.io (#3574) --- ...t-up-a-local-knative-environment-with-kind.md | 14 +++++++------- .../samples/serving/helloworld-clojure/index.md | 4 ++-- .../samples/serving/helloworld-dart/index.md | 4 ++-- .../samples/serving/helloworld-deno/index.md | 6 +++--- .../samples/serving/helloworld-elixir/index.md | 4 ++-- .../samples/serving/helloworld-haskell/index.md | 4 ++-- .../serving/helloworld-java-micronaut/index.md | 4 ++-- .../serving/helloworld-java-quarkus/index.md | 4 ++-- community/samples/serving/helloworld-r/index.md | 6 +++--- .../samples/serving/helloworld-rserver/index.md | 6 +++--- .../samples/serving/helloworld-rust/index.md | 4 ++-- .../samples/serving/helloworld-swift/index.md | 4 ++-- .../samples/serving/helloworld-vertx/index.md | 4 ++-- docs/eventing/samples/container-source/index.md | 2 +- docs/install/install-serving-with-yaml.md | 8 ++++---- docs/install/installation-files.md | 2 +- docs/install/installing-istio.md | 8 ++++---- docs/install/knative-with-operators.md | 6 +++--- docs/serving/autoscaling/autoscale-go/index.md | 16 ++++++++-------- docs/serving/getting-started-knative-app.md | 8 ++++---- .../samples/cloudevents/cloudevents-go/index.md | 4 ++-- .../cloudevents/cloudevents-nodejs/index.md | 4 ++-- .../cloudevents/cloudevents-rust/index.md | 4 ++-- .../cloudevents/cloudevents-spring/index.md | 4 ++-- .../cloudevents/cloudevents-vertx/index.md | 4 ++-- docs/serving/samples/grpc-ping-go/index.md | 2 +- .../hello-world/helloworld-csharp/index.md | 4 ++-- .../samples/hello-world/helloworld-go/index.md | 6 +++--- .../hello-world/helloworld-java-spark/index.md | 6 +++--- .../hello-world/helloworld-java-spring/README.md | 4 ++-- .../hello-world/helloworld-java-spring/index.md | 6 +++--- .../hello-world/helloworld-kotlin/index.md | 4 ++-- .../hello-world/helloworld-nodejs/index.md | 4 ++-- .../samples/hello-world/helloworld-php/index.md | 8 ++++---- .../hello-world/helloworld-python/index.md | 8 ++++---- .../samples/hello-world/helloworld-ruby/index.md | 8 ++++---- .../hello-world/helloworld-scala/index.md | 10 +++++----- .../hello-world/helloworld-shell/index.md | 8 ++++---- docs/serving/samples/multi-container/index.md | 4 ++-- docs/serving/samples/rest-api-go/index.md | 10 +++++----- docs/serving/samples/secrets-go/index.md | 4 ++-- 41 files changed, 117 insertions(+), 117 deletions(-) diff --git a/blog/articles/set-up-a-local-knative-environment-with-kind.md b/blog/articles/set-up-a-local-knative-environment-with-kind.md index 0bbbea40b1a..b8a3c66db0a 100644 --- a/blog/articles/set-up-a-local-knative-environment-with-kind.md +++ b/blog/articles/set-up-a-local-knative-environment-with-kind.md @@ -218,15 +218,15 @@ kourier.ingress.networking.knative.dev To get the same experience that you would when using a cluster that has DNS names set up, you can add a “magic” DNS provider. -_nip.io_ provides a wildcard DNS setup that will automatically resolve to the IP address you put in front of nip.io. +_sslip.io_ provides a wildcard DNS setup that will automatically resolve to the IP address you put in front of sslip.io. -To patch the domain configuration for Knative Serving using nip.io, enter the command: +To patch the domain configuration for Knative Serving using sslip.io, enter the command: ```bash $ kubectl patch configmap/config-domain \ --namespace knative-serving \ --type merge \ - --patch '{"data":{"127.0.0.1.nip.io":""}}' + --patch '{"data":{"127.0.0.1.sslip.io":""}}' ``` If you want to validate that the patch command was successful, run the command: @@ -239,7 +239,7 @@ $ kubectl describe configmap/config-domain --namespace knative-serving ... (abbreviated for readability) Data ==== -127.0.0.1.nip.io: +127.0.0.1.sslip.io: ---- ... ``` @@ -329,12 +329,12 @@ $ kubectl get ksvc ```bash NAME URL LATESTCREATED LATESTREADY READY REASON -helloworld-go http://helloworld-go.default.127.0.0.1.nip.io helloworld-go-fqqs6 Unknown RevisionMissing +helloworld-go http://helloworld-go.default.127.0.0.1.sslip.io helloworld-go-fqqs6 Unknown RevisionMissing ``` ```bash NAME URL LATESTCREATED LATESTREADY READY REASON -helloworld-go http://helloworld-go.default.127.0.0.1.nip.io helloworld-go-fqqs6 helloworld-go-fqqs6 True +helloworld-go http://helloworld-go.default.127.0.0.1.sslip.io helloworld-go-fqqs6 helloworld-go-fqqs6 True ``` The final step is to test your application, by checking that the code returns what you expect. You can do this by sending a cURL request to the URL listed above. @@ -342,7 +342,7 @@ The final step is to test your application, by checking that the code returns wh Because this example mapped port 80 of the host to be forwarded to the cluster and set the DNS, you can use the exact URL. ```bash -$ curl -v http://helloworld-go.default.127.0.0.1.nip.io +$ curl -v http://helloworld-go.default.127.0.0.1.sslip.io ``` ```bash diff --git a/community/samples/serving/helloworld-clojure/index.md b/community/samples/serving/helloworld-clojure/index.md index 9e36b6d7fe3..c7d069d0027 100644 --- a/community/samples/serving/helloworld-clojure/index.md +++ b/community/samples/serving/helloworld-clojure/index.md @@ -142,14 +142,14 @@ folder) you're ready to build and deploy the sample app. ``` kubectl get ksvc helloworld-clojure --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-clojure http://helloworld-clojure.default.1.2.3.4.xip.io + helloworld-clojure http://helloworld-clojure.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-clojure.default.1.2.3.4.xip.io + curl http://helloworld-clojure.default.1.2.3.4.sslip.io Hello World! ``` diff --git a/community/samples/serving/helloworld-dart/index.md b/community/samples/serving/helloworld-dart/index.md index bdb59c2735b..24c05dfe5f3 100644 --- a/community/samples/serving/helloworld-dart/index.md +++ b/community/samples/serving/helloworld-dart/index.md @@ -140,14 +140,14 @@ folder) you're ready to build and deploy the sample app. ``` kubectl get ksvc helloworld-dart --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-dart http://helloworld-dart.default.1.2.3.4.xip.io + helloworld-dart http://helloworld-dart.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-dart.default.1.2.3.4.xip.io + curl http://helloworld-dart.default.1.2.3.4.sslip.io Hello Dart Sample v1 ``` diff --git a/community/samples/serving/helloworld-deno/index.md b/community/samples/serving/helloworld-deno/index.md index 511677e9a81..9171d225479 100644 --- a/community/samples/serving/helloworld-deno/index.md +++ b/community/samples/serving/helloworld-deno/index.md @@ -121,20 +121,20 @@ folder) you're ready to build and deploy the sample app. ```shell NAME URL - helloworld-deno http://helloworld-deno.default.1.2.3.4.xip.io + helloworld-deno http://helloworld-deno.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-deno.default.1.2.3.4.xip.io + curl http://helloworld-deno.default.1.2.3.4.sslip.io ``` Example: ```shell - curl http://helloworld-deno.default.1.2.3.4.xip.io + curl http://helloworld-deno.default.1.2.3.4.sslip.io [1] "Hello R Sample v1!" ``` diff --git a/community/samples/serving/helloworld-elixir/index.md b/community/samples/serving/helloworld-elixir/index.md index df9d95f7fb1..6c7d6dd4614 100644 --- a/community/samples/serving/helloworld-elixir/index.md +++ b/community/samples/serving/helloworld-elixir/index.md @@ -166,14 +166,14 @@ above. kubectl get ksvc helloworld-elixir --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-elixir http://helloworld-elixir.default.1.2.3.4.xip.io + helloworld-elixir http://helloworld-elixir.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app to see the results. Replace `{IP_ADDRESS}` with the address you see returned in the previous step. ```shell - curl http://helloworld-elixir.default.1.2.3.4.xip.io + curl http://helloworld-elixir.default.1.2.3.4.sslip.io ... # HTML from your application is returned. diff --git a/community/samples/serving/helloworld-haskell/index.md b/community/samples/serving/helloworld-haskell/index.md index b0c5f272f81..671c637a011 100644 --- a/community/samples/serving/helloworld-haskell/index.md +++ b/community/samples/serving/helloworld-haskell/index.md @@ -168,14 +168,14 @@ folder) you're ready to build and deploy the sample app. ``` kubectl get ksvc helloworld-haskell --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-haskell http://helloworld-haskell.default.1.2.3.4.xip.io + helloworld-haskell http://helloworld-haskell.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-haskell.default.1.2.3.4.xip.io + curl http://helloworld-haskell.default.1.2.3.4.sslip.io Hello world: Haskell Sample v1 ``` diff --git a/community/samples/serving/helloworld-java-micronaut/index.md b/community/samples/serving/helloworld-java-micronaut/index.md index 4aead9ed533..a416eb722cb 100644 --- a/community/samples/serving/helloworld-java-micronaut/index.md +++ b/community/samples/serving/helloworld-java-micronaut/index.md @@ -261,14 +261,14 @@ To verify that your sample app has been successfully deployed: ```shell NAME URL - helloworld-java-micronaut http://helloworld-java-micronaut.default.1.2.3.4.xip.io + helloworld-java-micronaut http://helloworld-java-micronaut.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-java-micronaut.default.1.2.3.4.xip.io + curl http://helloworld-java-micronaut.default.1.2.3.4.sslip.io ``` Example result: diff --git a/community/samples/serving/helloworld-java-quarkus/index.md b/community/samples/serving/helloworld-java-quarkus/index.md index 9ac9e2123b1..b4ad8e9b7b7 100644 --- a/community/samples/serving/helloworld-java-quarkus/index.md +++ b/community/samples/serving/helloworld-java-quarkus/index.md @@ -255,14 +255,14 @@ folder) you're ready to build and deploy the sample app. kubectl get ksvc helloworld-java-quarkus NAME URL - helloworld-java-quarkus http://helloworld-java-quarkus.default.1.2.3.4.xip.io + helloworld-java-quarkus http://helloworld-java-quarkus.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-java-quarkus.default.1.2.3.4.xip.io + curl http://helloworld-java-quarkus.default.1.2.3.4.sslip.io Namaste Knative World! ``` diff --git a/community/samples/serving/helloworld-r/index.md b/community/samples/serving/helloworld-r/index.md index 1f95323fa17..eddbf254849 100644 --- a/community/samples/serving/helloworld-r/index.md +++ b/community/samples/serving/helloworld-r/index.md @@ -169,20 +169,20 @@ folder) you're ready to build and deploy the sample app. ```shell NAME URL - helloworld-r http://helloworld-r.default.1.2.3.4.xip.io + helloworld-r http://helloworld-r.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-r.default.1.2.3.4.xip.io + curl http://helloworld-r.default.1.2.3.4.sslip.io ``` Example: ```shell - curl http://helloworld-r.default.1.2.3.4.xip.io + curl http://helloworld-r.default.1.2.3.4.sslip.io [1] "Hello R Sample v1!" ``` diff --git a/community/samples/serving/helloworld-rserver/index.md b/community/samples/serving/helloworld-rserver/index.md index d0a41718a05..9116957672d 100644 --- a/community/samples/serving/helloworld-rserver/index.md +++ b/community/samples/serving/helloworld-rserver/index.md @@ -140,20 +140,20 @@ folder) you're ready to build and deploy the sample app. ```shell NAME URL - helloworld-r http://helloworld-r.default.1.2.3.4.xip.io + helloworld-r http://helloworld-r.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-rserver.default.1.2.3.4.xip.io + curl http://helloworld-rserver.default.1.2.3.4.sslip.io ``` Example: ```shell - curl http://helloworld-rserver.default.1.2.3.4.xip.io + curl http://helloworld-rserver.default.1.2.3.4.sslip.io [1] "Hello R Sample v1!" ``` diff --git a/community/samples/serving/helloworld-rust/index.md b/community/samples/serving/helloworld-rust/index.md index bb099b48a25..f54a6aef9de 100644 --- a/community/samples/serving/helloworld-rust/index.md +++ b/community/samples/serving/helloworld-rust/index.md @@ -169,14 +169,14 @@ folder) you're ready to build and deploy the sample app. ```shell kubectl get ksvc helloworld-rust --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-rust http://helloworld-rust.default.1.2.3.4.xip.io + helloworld-rust http://helloworld-rust.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-rust.default.1.2.3.4.xip.io + curl http://helloworld-rust.default.1.2.3.4.sslip.io Hello World! ``` diff --git a/community/samples/serving/helloworld-swift/index.md b/community/samples/serving/helloworld-swift/index.md index cd95d3f7706..52baa61cdb8 100644 --- a/community/samples/serving/helloworld-swift/index.md +++ b/community/samples/serving/helloworld-swift/index.md @@ -149,14 +149,14 @@ folder) you're ready to build and deploy the sample app. ``` kubectl get ksvc helloworld-swift --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-swift http://helloworld-swift.default.1.2.3.4.xip.io + helloworld-swift http://helloworld-swift.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-swift.default.1.2.3.4.xip.io + curl http://helloworld-swift.default.1.2.3.4.sslip.io Hello Swift ``` diff --git a/community/samples/serving/helloworld-vertx/index.md b/community/samples/serving/helloworld-vertx/index.md index 7e155cbdd97..06b34e9796e 100644 --- a/community/samples/serving/helloworld-vertx/index.md +++ b/community/samples/serving/helloworld-vertx/index.md @@ -229,14 +229,14 @@ To verify that your sample app has been successfully deployed: ```shell NAME URL - helloworld-vertx http://helloworld-vertx.default.1.2.3.4.xip.io + helloworld-vertx http://helloworld-vertx.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-vertx.default.1.2.3.4.xip.io + curl http://helloworld-vertx.default.1.2.3.4.sslip.io ``` Example result: diff --git a/docs/eventing/samples/container-source/index.md b/docs/eventing/samples/container-source/index.md index 4c9083bdd33..9bf68812051 100644 --- a/docs/eventing/samples/container-source/index.md +++ b/docs/eventing/samples/container-source/index.md @@ -69,7 +69,7 @@ The status of the created service can be seen using: kubectl get ksvc NAME URL LATESTCREATED LATESTREADY READY REASON -event-display http://event-display.default.1.2.3.4.xip.io event-display-gqjbw event-display-gqjbw True +event-display http://event-display.default.1.2.3.4.sslip.io event-display-gqjbw event-display-gqjbw True ``` ### Create a ContainerSource using the heartbeats image diff --git a/docs/install/install-serving-with-yaml.md b/docs/install/install-serving-with-yaml.md index e718b56e77a..0f7d0c666b3 100644 --- a/docs/install/install-serving-with-yaml.md +++ b/docs/install/install-serving-with-yaml.md @@ -283,11 +283,11 @@ Follow the procedure for the DNS of your choice: - {{< tabs name="serving_dns" default="Magic DNS (xip.io)" >}} - {{% tab name="Magic DNS (xip.io)" %}} + {{< tabs name="serving_dns" default="Magic DNS (sslip.io)" >}} + {{% tab name="Magic DNS (sslip.io)" %}} We ship a simple Kubernetes Job called "default domain" that will (see caveats) -configure Knative Serving to use xip.io as the +configure Knative Serving to use sslip.io as the default DNS suffix. ```bash @@ -338,7 +338,7 @@ kubectl patch configmap/config-domain \ If you are using `curl` to access the sample applications, or your own Knative app, and are unable to use the "Magic DNS -(xip.io)" or "Real DNS" methods, there is a temporary approach. This is useful +(sslip.io)" or "Real DNS" methods, there is a temporary approach. This is useful for those who wish to evaluate Knative without altering their DNS configuration, as per the "Real DNS" method, or cannot use the "Magic DNS" method due to using, for example, minikube locally or IPv6 clusters. diff --git a/docs/install/installation-files.md b/docs/install/installation-files.md index ce2beccdd89..6b2772245fa 100644 --- a/docs/install/installation-files.md +++ b/docs/install/installation-files.md @@ -23,7 +23,7 @@ The table below describes the installation files in the Knative Serving release: | --- | --- | --- | | serving-core.yaml | Required: Knative Serving core components. | serving-crds.yaml | | serving-crds.yaml | Required: Knative Serving core CRDs. | none | -| serving-default-domain.yaml | Configures Knative Serving to use [http://xip.io](http://xip.io) as the default DNS suffix. | serving-core.yaml | +| serving-default-domain.yaml | Configures Knative Serving to use [http://sslip.io](http://sslip.io) as the default DNS suffix. | serving-core.yaml | | serving-domainmapping-crds.yaml | CRDs used by the Domain Mapping feature. | none | | serving-domainmapping.yaml | Components used by the Domain Mapping feature. | serving-domainmapping-crds.yaml | | serving-hpa.yaml | Components to autoscale Knative revisions through the Kubernetes Horizontal Pod Autoscaler. | serving-core.yaml | diff --git a/docs/install/installing-istio.md b/docs/install/installing-istio.md index 2ca65297725..acae2b7f5f7 100644 --- a/docs/install/installing-istio.md +++ b/docs/install/installing-istio.md @@ -174,7 +174,7 @@ istio-pilot ClusterIP 10.0.3.27 15010/TCP,150 ``` This external IP can be used with your DNS provider with a wildcard `A` record. However, for a basic non-production set -up, this external IP address can be used with `xip.io` in the `config-domain` ConfigMap in `knative-serving`. +up, this external IP address can be used with `sslip.io` in the `config-domain` ConfigMap in `knative-serving`. You can edit this by using the following command: @@ -191,9 +191,9 @@ metadata: name: config-domain namespace: knative-serving data: - # xip.io is a "magic" DNS provider, which resolves all DNS lookups for: - # *.{ip}.xip.io to {ip}. - 34.83.80.117.xip.io: "" + # sslip.io is a "magic" DNS provider, which resolves all DNS lookups for: + # *.{ip}.sslip.io to {ip}. + 34.83.80.117.sslip.io: "" ``` ## Istio resources diff --git a/docs/install/knative-with-operators.md b/docs/install/knative-with-operators.md index 4c7386658f0..c7b40c8ef35 100644 --- a/docs/install/knative-with-operators.md +++ b/docs/install/knative-with-operators.md @@ -443,9 +443,9 @@ The following commands install Kourier and enable its Knative integration. - {{< tabs name="serving_dns" >}} {{% tab name="Magic DNS (xip.io)" %}} We ship + {{< tabs name="serving_dns" >}} {{% tab name="Magic DNS (sslip.io)" %}} We ship a simple Kubernetes Job called "default domain" that will (see caveats) - configure Knative Serving to use xip.io as the + configure Knative Serving to use sslip.io as the default DNS suffix. ```bash @@ -496,7 +496,7 @@ spec: {{% tab name="Temporary DNS" %}} If you are using `curl` to access the sample applications, or your own Knative app, and are unable to use the "Magic DNS -(xip.io)" or "Real DNS" methods, there is a temporary approach. This is useful +(sslip.io)" or "Real DNS" methods, there is a temporary approach. This is useful for those who wish to evaluate Knative without altering their DNS configuration, as per the "Real DNS" method, or cannot use the "Magic DNS" method due to using, for example, minikube locally or IPv6 clusters. diff --git a/docs/serving/autoscaling/autoscale-go/index.md b/docs/serving/autoscaling/autoscale-go/index.md index 465f688b549..7b020d4eaf4 100644 --- a/docs/serving/autoscaling/autoscale-go/index.md +++ b/docs/serving/autoscaling/autoscale-go/index.md @@ -34,7 +34,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision. ``` $ kubectl get ksvc autoscale-go NAME URL LATESTCREATED LATESTREADY READY REASON - autoscale-go http://autoscale-go.default.1.2.3.4.xip.io autoscale-go-96dtk autoscale-go-96dtk True + autoscale-go http://autoscale-go.default.1.2.3.4.sslip.io autoscale-go-96dtk autoscale-go-96dtk True ``` ## Load the Service @@ -42,7 +42,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision. 1. Make a request to the autoscale app to see it consume some resources. ```shell - curl "http://autoscale-go.default.1.2.3.4.xip.io?sleep=100&prime=10000&bloat=5" + curl "http://autoscale-go.default.1.2.3.4.sslip.io?sleep=100&prime=10000&bloat=5" ``` ``` @@ -55,7 +55,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision. ```shell hey -z 30s -c 50 \ - "http://autoscale-go.default.1.2.3.4.xip.io?sleep=100&prime=10000&bloat=5" \ + "http://autoscale-go.default.1.2.3.4.sslip.io?sleep=100&prime=10000&bloat=5" \ && kubectl get pods ``` @@ -220,21 +220,21 @@ customization (32 minutes). ```shell hey -z 60s -c 100 \ - "http://autoscale-go.default.1.2.3.4.xip.io?sleep=100&prime=10000&bloat=5" + "http://autoscale-go.default.1.2.3.4.sslip.io?sleep=100&prime=10000&bloat=5" ``` 1. Send 60 seconds of traffic maintaining 100 qps with short requests (10 ms). ```shell hey -z 60s -q 100 \ - "http://autoscale-go.default.1.2.3.4.xip.io?sleep=10" + "http://autoscale-go.default.1.2.3.4.sslip.io?sleep=10" ``` 1. Send 60 seconds of traffic maintaining 100 qps with long requests (1 sec). ```shell hey -z 60s -q 100 \ - "http://autoscale-go.default.1.2.3.4.xip.io?sleep=1000" + "http://autoscale-go.default.1.2.3.4.sslip.io?sleep=1000" ``` 1. Send 60 seconds of traffic with heavy CPU usage (~1 cpu/sec/request, total @@ -242,7 +242,7 @@ customization (32 minutes). ```shell hey -z 60s -q 100 \ - "http://autoscale-go.default.1.2.3.4.xip.io?prime=40000000" + "http://autoscale-go.default.1.2.3.4.sslip.io?prime=40000000" ``` 1. Send 60 seconds of traffic with heavy memory usage (1 gb/request, total 5 @@ -250,7 +250,7 @@ customization (32 minutes). ```shell hey -z 60s -c 5 \ - "http://autoscale-go.default.1.2.3.4.xip.io?bloat=1000" + "http://autoscale-go.default.1.2.3.4.sslip.io?bloat=1000" ``` ## Cleanup diff --git a/docs/serving/getting-started-knative-app.md b/docs/serving/getting-started-knative-app.md index 626dc48e949..f2a272e3d22 100644 --- a/docs/serving/getting-started-knative-app.md +++ b/docs/serving/getting-started-knative-app.md @@ -131,7 +131,7 @@ To see if your app has been deployed successfully, you need the URL created by K Name helloworld-go Namespace default Age 12m - URL http://helloworld-go.default.34.83.80.117.xip.io + URL http://helloworld-go.default.34.83.80.117.sslip.io Revisions: 100% @latest (helloworld-go-dyqsj-1) [1] (39s) @@ -155,14 +155,14 @@ To see if your app has been deployed successfully, you need the URL created by K ```shell NAME URL LATESTCREATED LATESTREADY READY REASON - helloworld-go http://helloworld-go.default.34.83.80.117.xip.io helloworld-go-96dtk helloworld-go-96dtk True + helloworld-go http://helloworld-go.default.34.83.80.117.sslip.io helloworld-go-96dtk helloworld-go-96dtk True ``` {{< /tab >}} {{< /tabs >}} > Note: If your URL includes `example.com` then consult the setup instructions for - > configuring DNS (e.g. with `xip.io`), or [using a Custom Domain](../serving/using-a-custom-domain). + > configuring DNS (e.g. with `sslip.io`), or [using a Custom Domain](../serving/using-a-custom-domain). If you changed the name from `helloworld-go` to something else when creating the `.yaml` file, replace `helloworld-go` in the above commands with the name you entered. @@ -171,7 +171,7 @@ To see if your app has been deployed successfully, you need the URL created by K the URL with the one returned by the command in the previous step. ```shell - # curl http://helloworld-go.default.34.83.80.117.xip.io + # curl http://helloworld-go.default.34.83.80.117.sslip.io Hello World: Go Sample v1! ``` diff --git a/docs/serving/samples/cloudevents/cloudevents-go/index.md b/docs/serving/samples/cloudevents/cloudevents-go/index.md index c8c58613d23..84c066c380c 100644 --- a/docs/serving/samples/cloudevents/cloudevents-go/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-go/index.md @@ -132,7 +132,7 @@ Get the URL for your Service with: ```shell $ kubectl get ksvc NAME URL LATESTCREATED LATESTREADY READY REASON -cloudevents-go http://cloudevents-go.default.1.2.3.4.xip.io cloudevents-go-ss5pj cloudevents-go-ss5pj True +cloudevents-go http://cloudevents-go.default.1.2.3.4.sslip.io cloudevents-go-ss5pj cloudevents-go-ss5pj True ``` Then send a cloud event to it with: @@ -145,7 +145,7 @@ $ curl -X POST \ -H "ce-type: curl.demo" \ -H "ce-id: 123-abc" \ -d '{"name":"Dave"}' \ - http://cloudevents-go.default.1.2.3.4.xip.io + http://cloudevents-go.default.1.2.3.4.sslip.io ``` You will get back: diff --git a/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md b/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md index 1e5d5ffb121..2364155f417 100644 --- a/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-nodejs/index.md @@ -90,7 +90,7 @@ Get the URL for your Service with: ```shell $ kubectl get ksvc NAME URL LATESTCREATED LATESTREADY READY REASON -cloudevents-nodejs http://cloudevents-nodejs.default.1.2.3.4.xip.io cloudevents-nodejs-ss5pj cloudevents-nodejs-ss5pj True +cloudevents-nodejs http://cloudevents-nodejs.default.1.2.3.4.sslip.io cloudevents-nodejs-ss5pj cloudevents-nodejs-ss5pj True ``` Then send a cloud event to it with: @@ -103,7 +103,7 @@ $ curl -X POST \ -H "ce-type: curl.demo" \ -H "ce-id: 123-abc" \ -d '{"name":"Dave"}' \ - http://cloudevents-nodejs.default.1.2.3.4.xip.io + http://cloudevents-nodejs.default.1.2.3.4.sslip.io ``` You will get back: diff --git a/docs/serving/samples/cloudevents/cloudevents-rust/index.md b/docs/serving/samples/cloudevents/cloudevents-rust/index.md index ee6289ec4da..d0b320af026 100644 --- a/docs/serving/samples/cloudevents/cloudevents-rust/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-rust/index.md @@ -84,7 +84,7 @@ Get the URL for your Service with: ```shell $ kubectl get ksvc NAME URL LATESTCREATED LATESTREADY READY REASON -cloudevents-rust http://cloudevents-rust.xip.io cloudevents-rust-vl8fq cloudevents-rust-vl8fq True +cloudevents-rust http://cloudevents-rust.sslip.io cloudevents-rust-vl8fq cloudevents-rust-vl8fq True ``` Then send a CloudEvent to it with: @@ -98,7 +98,7 @@ $ curl \ -H "ce-type: curl.demo" \ -H "ce-id: 123-abc" \ -d '{"name":"Dave"}' \ - http://cloudevents-rust.xip.io + http://cloudevents-rust.sslip.io ``` You can also send CloudEvents spawning a temporary curl pod in your cluster with: diff --git a/docs/serving/samples/cloudevents/cloudevents-spring/index.md b/docs/serving/samples/cloudevents/cloudevents-spring/index.md index 318739a0d16..98165b9cc0b 100644 --- a/docs/serving/samples/cloudevents/cloudevents-spring/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-spring/index.md @@ -61,7 +61,7 @@ Get the URL for your Service with: ```shell $ kubectl get ksvc NAME URL LATESTCREATED LATESTREADY READY REASON -cloudevents-spring http://cloudevents-java.xip.io cloudevents-spring-86h28 cloudevents-spring-86h28 True +cloudevents-spring http://cloudevents-java.sslip.io cloudevents-spring-86h28 cloudevents-spring-86h28 True ``` Then send a CloudEvent to it with: @@ -75,7 +75,7 @@ $ curl \ -H "ce-type: curl.demo" \ -H "ce-id: 123-abc" \ -d '{"name":"Dave"}' \ - http://cloudevents-java.xip.io + http://cloudevents-java.sslip.io ``` You can also send CloudEvents spawning a temporary curl pod in your cluster diff --git a/docs/serving/samples/cloudevents/cloudevents-vertx/index.md b/docs/serving/samples/cloudevents/cloudevents-vertx/index.md index 536129c6e1c..3daf187d539 100644 --- a/docs/serving/samples/cloudevents/cloudevents-vertx/index.md +++ b/docs/serving/samples/cloudevents/cloudevents-vertx/index.md @@ -75,7 +75,7 @@ Get the URL for your Service with: ```shell $ kubectl get ksvc NAME URL LATESTCREATED LATESTREADY READY REASON -cloudevents-vertx http://cloudevents-java.xip.io cloudevents-vertx-86h28 cloudevents-vertx-86h28 True +cloudevents-vertx http://cloudevents-java.sslip.io cloudevents-vertx-86h28 cloudevents-vertx-86h28 True ``` Then send a CloudEvent to it with: @@ -89,7 +89,7 @@ $ curl \ -H "ce-type: curl.demo" \ -H "ce-id: 123-abc" \ -d '{"name":"Dave"}' \ - http://cloudevents-java.xip.io + http://cloudevents-java.sslip.io ``` You can also send CloudEvents spawning a temporary curl pod in your cluster diff --git a/docs/serving/samples/grpc-ping-go/index.md b/docs/serving/samples/grpc-ping-go/index.md index 32dfe08b54b..ab77d2c0761 100644 --- a/docs/serving/samples/grpc-ping-go/index.md +++ b/docs/serving/samples/grpc-ping-go/index.md @@ -108,7 +108,7 @@ Replace `{username}` with your Docker Hub user name and run the command: ```shell docker run --rm {username}/grpc-ping-go \ /client \ - -server_addr="grpc-ping.default.1.2.3.4.xip.io:80" \ + -server_addr="grpc-ping.default.1.2.3.4.sslip.io:80" \ -insecure ``` diff --git a/docs/serving/samples/hello-world/helloworld-csharp/index.md b/docs/serving/samples/hello-world/helloworld-csharp/index.md index 6abe43feb0c..b98bccaffdc 100644 --- a/docs/serving/samples/hello-world/helloworld-csharp/index.md +++ b/docs/serving/samples/hello-world/helloworld-csharp/index.md @@ -173,14 +173,14 @@ folder) you're ready to build and deploy the sample app. ``` kubectl get ksvc helloworld-csharp --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-csharp http://helloworld-csharp.default.1.2.3.4.xip.io + helloworld-csharp http://helloworld-csharp.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-csharp.default.1.2.3.4.xip.io + curl http://helloworld-csharp.default.1.2.3.4.sslip.io Hello C# Sample v1! ``` diff --git a/docs/serving/samples/hello-world/helloworld-go/index.md b/docs/serving/samples/hello-world/helloworld-go/index.md index d624169a8f9..5ab687aacd0 100644 --- a/docs/serving/samples/hello-world/helloworld-go/index.md +++ b/docs/serving/samples/hello-world/helloworld-go/index.md @@ -170,7 +170,7 @@ You will need: ```shell NAME URL - helloworld-go http://helloworld-go.default.1.2.3.4.xip.io + helloworld-go http://helloworld-go.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -196,7 +196,7 @@ You will need: 16.237s Ready to serve. Service 'helloworld-go' created to latest revision 'helloworld-go-jjzgd-1' is available at URL: - http://helloworld-go.default.1.2.3.4.xip.io + http://helloworld-go.default.1.2.3.4.sslip.io ``` You can then access your service through the resulting URL. @@ -211,7 +211,7 @@ You will need: the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-go.default.1.2.3.4.xip.io + curl http://helloworld-go.default.1.2.3.4.sslip.io Hello Go Sample v1! ``` diff --git a/docs/serving/samples/hello-world/helloworld-java-spark/index.md b/docs/serving/samples/hello-world/helloworld-java-spark/index.md index 83d739880c0..84998b8d534 100644 --- a/docs/serving/samples/hello-world/helloworld-java-spark/index.md +++ b/docs/serving/samples/hello-world/helloworld-java-spark/index.md @@ -142,7 +142,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-java Example: ```shell - http://helloworld-java.default.1.2.3.4.xip.io + http://helloworld-java.default.1.2.3.4.sslip.io ``` {{< /tab >}} {{% tab name="kubectl" %}} @@ -154,7 +154,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-java ```shell NAME URL - helloworld-java http://helloworld-java.default.1.2.3.4.xip.io + helloworld-java http://helloworld-java.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -166,7 +166,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-java Example: ```shell - curl http://helloworld-java.default.1.2.3.4.xip.io + curl http://helloworld-java.default.1.2.3.4.sslip.io Hello SparkJava Sample v1! # Even easier with kn: curl $(kn service describe helloworld-java -o url) diff --git a/docs/serving/samples/hello-world/helloworld-java-spring/README.md b/docs/serving/samples/hello-world/helloworld-java-spring/README.md index 5140b88c295..7b81304d312 100644 --- a/docs/serving/samples/hello-world/helloworld-java-spring/README.md +++ b/docs/serving/samples/hello-world/helloworld-java-spring/README.md @@ -174,14 +174,14 @@ folder) you're ready to build and deploy the sample app. --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-java-spring http://helloworld-java-spring.default.1.2.3.4.xip.io + helloworld-java-spring http://helloworld-java-spring.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-java-spring.default.1.2.3.4.xip.io + curl http://helloworld-java-spring.default.1.2.3.4.sslip.io Hello Spring Boot Sample v1! ``` diff --git a/docs/serving/samples/hello-world/helloworld-java-spring/index.md b/docs/serving/samples/hello-world/helloworld-java-spring/index.md index e819c7a5cdc..d452ae7855b 100644 --- a/docs/serving/samples/hello-world/helloworld-java-spring/index.md +++ b/docs/serving/samples/hello-world/helloworld-java-spring/index.md @@ -197,7 +197,7 @@ After the build has completed and the container is pushed to Docker Hub, you can ```shell NAME URL - helloworld-java-spring http://helloworld-java-spring.default.1.2.3.4.xip.io + helloworld-java-spring http://helloworld-java-spring.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -210,7 +210,7 @@ After the build has completed and the container is pushed to Docker Hub, you can Example: ```shell - http://helloworld-java-spring.default.1.2.3.4.xip.io + http://helloworld-java-spring.default.1.2.3.4.sslip.io ``` {{< /tab >}} {{< /tabs >}} @@ -221,7 +221,7 @@ After the build has completed and the container is pushed to Docker Hub, you can Example: ```shell - curl http://helloworld-java-spring.default.1.2.3.4.xip.io + curl http://helloworld-java-spring.default.1.2.3.4.sslip.io Hello Java Spring Sample v1! # Even easier with kn: diff --git a/docs/serving/samples/hello-world/helloworld-kotlin/index.md b/docs/serving/samples/hello-world/helloworld-kotlin/index.md index 11e05870504..5f02eb40ad8 100644 --- a/docs/serving/samples/hello-world/helloworld-kotlin/index.md +++ b/docs/serving/samples/hello-world/helloworld-kotlin/index.md @@ -178,14 +178,14 @@ folder) you're ready to build and deploy the sample app. kubectl get ksvc helloworld-kotlin --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-kotlin http://helloworld-kotlin.default.1.2.3.4.xip.io + helloworld-kotlin http://helloworld-kotlin.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-kotlin.default.1.2.3.4.xip.io + curl http://helloworld-kotlin.default.1.2.3.4.sslip.io Hello Kotlin Sample v1! ``` diff --git a/docs/serving/samples/hello-world/helloworld-nodejs/index.md b/docs/serving/samples/hello-world/helloworld-nodejs/index.md index d6d40e4a767..53754e0f7cf 100644 --- a/docs/serving/samples/hello-world/helloworld-nodejs/index.md +++ b/docs/serving/samples/hello-world/helloworld-nodejs/index.md @@ -185,14 +185,14 @@ folder) you're ready to build and deploy the sample app. ``` kubectl get ksvc helloworld-nodejs --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-nodejs http://helloworld-nodejs.default.1.2.3.4.xip.io + helloworld-nodejs http://helloworld-nodejs.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-nodejs.default.1.2.3.4.xip.io + curl http://helloworld-nodejs.default.1.2.3.4.sslip.io Hello Node.js Sample v1! ``` diff --git a/docs/serving/samples/hello-world/helloworld-php/index.md b/docs/serving/samples/hello-world/helloworld-php/index.md index 8c3361ce8bf..97ee741b0f8 100644 --- a/docs/serving/samples/hello-world/helloworld-php/index.md +++ b/docs/serving/samples/hello-world/helloworld-php/index.md @@ -146,7 +146,7 @@ folder) you're ready to build and deploy the sample app. 8.398s Ready to serve. Service 'helloworld-php' created to latest revision 'helloworld-php-akhft-1' is available at URL: - http://helloworld-php.default.1.2.3.4.xip.io + http://helloworld-php.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -167,7 +167,7 @@ folder) you're ready to build and deploy the sample app. ``` kubectl get ksvc helloworld-php --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - helloworld-php http://helloworld-php.default.1.2.3.4.xip.io + helloworld-php http://helloworld-php.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -180,7 +180,7 @@ folder) you're ready to build and deploy the sample app. Example: ```shell - http://helloworld-php.default.1.2.3.4.xip.io + http://helloworld-php.default.1.2.3.4.sslip.io ``` {{< /tab >}} {{< /tabs >}} @@ -189,7 +189,7 @@ folder) you're ready to build and deploy the sample app. the URL below with the URL returned in the previous command. ```shell - curl http://helloworld-php.default.1.2.3.4.xip.io + curl http://helloworld-php.default.1.2.3.4.sslip.io Hello PHP Sample v1! ``` diff --git a/docs/serving/samples/hello-world/helloworld-python/index.md b/docs/serving/samples/hello-world/helloworld-python/index.md index 5bbacafc9d9..4589a8e73d4 100644 --- a/docs/serving/samples/hello-world/helloworld-python/index.md +++ b/docs/serving/samples/hello-world/helloworld-python/index.md @@ -172,7 +172,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-python 1. Run one of the followings commands to find the domain URL for your service. > Note: If your URL includes `example.com` then consult the setup instructions for - > configuring DNS (e.g. with `xip.io`), or [using a Custom Domain](../serving/using-a-custom-domain). + > configuring DNS (e.g. with `sslip.io`), or [using a Custom Domain](../serving/using-a-custom-domain). {{< tabs name="service_url" default="kn" >}} {{% tab name="kubectl" %}} @@ -184,7 +184,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-python ```shell NAME URL - helloworld-python http://helloworld-python.default.1.2.3.4.xip.io + helloworld-python http://helloworld-python.default.1.2.3.4.sslip.io ``` {{< /tab >}} {{% tab name="kn" %}} @@ -196,7 +196,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-python Example: ```shell - http://helloworld-python.default.1.2.3.4.xip.io + http://helloworld-python.default.1.2.3.4.sslip.io ``` {{< /tab >}} {{< /tabs >}} @@ -207,7 +207,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-python Example: ```shell - curl http://helloworld-python.default.1.2.3.4.xip.io + curl http://helloworld-python.default.1.2.3.4.sslip.io Hello Python Sample v1! # Even easier with kn: diff --git a/docs/serving/samples/hello-world/helloworld-ruby/index.md b/docs/serving/samples/hello-world/helloworld-ruby/index.md index 7b27f55fe1c..12c38193a36 100644 --- a/docs/serving/samples/hello-world/helloworld-ruby/index.md +++ b/docs/serving/samples/hello-world/helloworld-ruby/index.md @@ -167,7 +167,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-ruby 8.398s Ready to serve. Service 'helloworld-ruby' created to latest revision 'helloworld-ruby-akhft-1' is available at URL: - http://helloworld-ruby.default.1.2.3.4.xip.io + http://helloworld-ruby.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -194,7 +194,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-ruby ```shell NAME URL - helloworld-ruby http://helloworld-ruby.default.1.2.3.4.xip.io + helloworld-ruby http://helloworld-ruby.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -207,7 +207,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-ruby Example: ```shell - http://helloworld-ruby.default.1.2.3.4.xip.io + http://helloworld-ruby.default.1.2.3.4.sslip.io ``` {{< /tab >}} {{< /tabs >}} @@ -218,7 +218,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-ruby Example: ```shell - curl http://helloworld-ruby.default.1.2.3.4.xip.io + curl http://helloworld-ruby.default.1.2.3.4.sslip.io Hello Ruby Sample v1! # Even easier with kn: diff --git a/docs/serving/samples/hello-world/helloworld-scala/index.md b/docs/serving/samples/hello-world/helloworld-scala/index.md index a39b14cbf1f..89ef406dc03 100644 --- a/docs/serving/samples/hello-world/helloworld-scala/index.md +++ b/docs/serving/samples/hello-world/helloworld-scala/index.md @@ -140,7 +140,7 @@ kubectl apply --filename helloworld-scala.yaml 8.398s Ready to serve. Service 'helloworld-scala' created to latest revision 'helloworld-scala-abcd-1' is available at URL: - http://helloworld-scala.default.1.2.3.4.xip.io + http://helloworld-scala.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -157,13 +157,13 @@ kubectl get ksvc helloworld-scala \ # It will print something like this, the URL is what you're looking for. # NAME URL -# helloworld-scala http://helloworld-scala.default.1.2.3.4.xip.io +# helloworld-scala http://helloworld-scala.default.1.2.3.4.sslip.io ``` Finally, to try your service, use the obtained URL: ```shell -curl -v http://helloworld-scala.default.1.2.3.4.xip.io +curl -v http://helloworld-scala.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -176,13 +176,13 @@ curl -v http://helloworld-scala.default.1.2.3.4.xip.io Example: ```shell - http://helloworld-scala.default.1.2.3.4.xip.io + http://helloworld-scala.default.1.2.3.4.sslip.io ``` Finally, to try your service, use the obtained URL: ```shell -curl -v http://helloworld-scala.default.1.2.3.4.xip.io +curl -v http://helloworld-scala.default.1.2.3.4.sslip.io ``` {{< /tab >}} diff --git a/docs/serving/samples/hello-world/helloworld-shell/index.md b/docs/serving/samples/hello-world/helloworld-shell/index.md index 064e5ab237a..7d9ddcebee4 100644 --- a/docs/serving/samples/hello-world/helloworld-shell/index.md +++ b/docs/serving/samples/hello-world/helloworld-shell/index.md @@ -144,7 +144,7 @@ folder) you're ready to build and deploy the sample app. 8.398s Ready to serve. Service 'helloworld-shell' created to latest revision 'helloworld-shell-kwdpt-1' is available at URL: - http://helloworld-shell.default.1.2.3.4.xip.io + http://helloworld-shell.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -171,7 +171,7 @@ folder) you're ready to build and deploy the sample app. ```shell NAME URL - helloworld-shell http://helloworld-shell.default.1.2.3.4.xip.io + helloworld-shell http://helloworld-shell.default.1.2.3.4.sslip.io ``` {{< /tab >}} @@ -184,7 +184,7 @@ folder) you're ready to build and deploy the sample app. Example: ```shell - http://helloworld-shell.default.1.2.3.4.xip.io + http://helloworld-shell.default.1.2.3.4.sslip.io ``` {{< /tab >}} {{< /tabs >}} @@ -195,7 +195,7 @@ folder) you're ready to build and deploy the sample app. Example: ```shell - curl http://helloworld-shell.default.1.2.3.4.xip.io + curl http://helloworld-shell.default.1.2.3.4.sslip.io Hello Shell Sample v1! # Even easier with kn: diff --git a/docs/serving/samples/multi-container/index.md b/docs/serving/samples/multi-container/index.md index a4aa1ce9fb5..898edb99625 100644 --- a/docs/serving/samples/multi-container/index.md +++ b/docs/serving/samples/multi-container/index.md @@ -244,14 +244,14 @@ After you have modified the sample code files you can build and deploy the sampl ```shell NAME URL - multi-container http://multi-container.default.1.2.3.4.xip.io + multi-container http://multi-container.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://multi-container.default.1.2.3.4.xip.io + curl http://multi-container.default.1.2.3.4.sslip.io Yay!! multi-container works ``` diff --git a/docs/serving/samples/rest-api-go/index.md b/docs/serving/samples/rest-api-go/index.md index 03565786aa9..116f291e709 100644 --- a/docs/serving/samples/rest-api-go/index.md +++ b/docs/serving/samples/rest-api-go/index.md @@ -158,7 +158,7 @@ and then you run `curl` commands to send request with your stock symbol. ```shell kubectl get ksvc stock-service-example --output=custom-columns=NAME:.metadata.name,URL:.status.url NAME URL - stock-service-example http://stock-service-example.default.1.2.3.4.xip.io + stock-service-example http://stock-service-example.default.1.2.3.4.sslip.io ``` 2. Send requests to the service using `curl`: @@ -166,7 +166,7 @@ and then you run `curl` commands to send request with your stock symbol. 1. Send a request to the index endpoint: ```shell - curl http://stock-service-example.default.1.2.3.4.xip.io + curl http://stock-service-example.default.1.2.3.4.sslip.io ``` Response body: `Welcome to the stock app!` @@ -174,7 +174,7 @@ and then you run `curl` commands to send request with your stock symbol. 2. Send a request to the `/stock` endpoint: ```shell - curl http://stock-service-example.default.1.2.3.4.xip.io/stock + curl http://stock-service-example.default.1.2.3.4.sslip.io/stock ``` Response body: `stock ticker not found!, require /stock/{ticker}` @@ -183,7 +183,7 @@ and then you run `curl` commands to send request with your stock symbol. "[stock symbol](https://www.marketwatch.com/tools/quotes/lookup.asp)": ```shell - curl http://stock-service-example.default.1.2.3.4.xip.io/stock/ + curl http://stock-service-example.default.1.2.3.4.sslip.io/stock/ ``` where `` is your "stock symbol". @@ -195,7 +195,7 @@ and then you run `curl` commands to send request with your stock symbol. Request: ```shell - curl http://stock-service-example.default.1.2.3.4.xip.io/stock/FAKE + curl http://stock-service-example.default.1.2.3.4.sslip.io/stock/FAKE ``` Response: `stock price for ticker FAKE is 0.00` diff --git a/docs/serving/samples/secrets-go/index.md b/docs/serving/samples/secrets-go/index.md index 1b7f255a002..31ba508d3d5 100644 --- a/docs/serving/samples/secrets-go/index.md +++ b/docs/serving/samples/secrets-go/index.md @@ -237,14 +237,14 @@ folder) you're ready to build and deploy the sample app. ```shell NAME URL - secrets-go http://secrets-go.default.1.2.3.4.xip.io + secrets-go http://secrets-go.default.1.2.3.4.sslip.io ``` 1. Now you can make a request to your app and see the result. Replace the URL below with the URL returned in the previous command. ```shell - curl http://secrets-go.default.1.2.3.4.xip.io + curl http://secrets-go.default.1.2.3.4.sslip.io bucket knative-secrets-sample, created at 2019-02-01 14:44:05.804 +0000 UTC, is located in US with storage class MULTI_REGIONAL ``` From 3728a937769cf139d985f0bb5403b0ee9e36e8f9 Mon Sep 17 00:00:00 2001 From: knative-automation Date: Fri, 14 May 2021 10:44:50 -0700 Subject: [PATCH 08/38] Update actions (#3535) Signed-off-by: Knative Automation --- .github/workflows/knative-boilerplate.yaml | 4 +-- .github/workflows/knative-go-build.yaml | 11 ++++++--- .github/workflows/knative-go-test.yaml | 2 +- .github/workflows/knative-releasability.yaml | 26 ++++++-------------- .github/workflows/knative-release-notes.yaml | 2 +- .github/workflows/knative-style.yaml | 8 +++--- .github/workflows/knative-verify.yaml | 2 +- 7 files changed, 25 insertions(+), 30 deletions(-) diff --git a/.github/workflows/knative-boilerplate.yaml b/.github/workflows/knative-boilerplate.yaml index c0e648b1ce7..9d4093ea696 100644 --- a/.github/workflows/knative-boilerplate.yaml +++ b/.github/workflows/knative-boilerplate.yaml @@ -42,10 +42,10 @@ jobs: steps: - - name: Set up Go 1.15.x + - name: Set up Go 1.16.x uses: actions/setup-go@v2 with: - go-version: 1.15.x + go-version: 1.16.x id: go - name: Check out code diff --git a/.github/workflows/knative-go-build.yaml b/.github/workflows/knative-go-build.yaml index 7bd13004ab4..676a24b2c00 100644 --- a/.github/workflows/knative-go-build.yaml +++ b/.github/workflows/knative-go-build.yaml @@ -27,7 +27,7 @@ jobs: name: Build strategy: matrix: - go-version: [1.15.x] + go-version: [1.16.x] platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} @@ -43,7 +43,13 @@ jobs: - name: Check out code uses: actions/checkout@v2 + - id: go_mod + uses: andstor/file-existence-action@v1 + with: + files: go.mod + - name: Build + if: ${{ steps.go_mod.outputs.files_exists == 'true' }} run: | tags="$(grep -I -r '// +build' . | \ grep -v '^./vendor/' | \ @@ -55,5 +61,4 @@ jobs: tr '\n' ' ')" echo "Building with tags: ${tags}" - go test -vet=off -tags "${tags}" -run=^$ ./... | grep -v "no test" || true - + go test -vet=off -tags "${tags}" -run=^$ ./... diff --git a/.github/workflows/knative-go-test.yaml b/.github/workflows/knative-go-test.yaml index 965df1e7469..79432a7a367 100644 --- a/.github/workflows/knative-go-test.yaml +++ b/.github/workflows/knative-go-test.yaml @@ -31,7 +31,7 @@ jobs: name: Unit Tests strategy: matrix: - go-version: [1.15.x] + go-version: [1.16.x] platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} diff --git a/.github/workflows/knative-releasability.yaml b/.github/workflows/knative-releasability.yaml index 5a30c913f6c..5e064c4c403 100644 --- a/.github/workflows/knative-releasability.yaml +++ b/.github/workflows/knative-releasability.yaml @@ -36,8 +36,8 @@ jobs: env: ######################################### # Update this section each release. # - RELEASE: 'v0.22' - SLACK_CHANNEL: 'release-22' + RELEASE: 'v0.23' + SLACK_CHANNEL: 'release-23' ######################################### steps: @@ -54,10 +54,10 @@ jobs: echo "SLACK_WEBHOOK=exists" >> $GITHUB_ENV fi - - name: Set up Go 1.15.x + - name: Set up Go 1.16.x uses: actions/setup-go@v2 with: - go-version: 1.15.x + go-version: 1.16.x - name: Install Dependencies run: GO111MODULE=on go get knative.dev/test-infra/buoy@main @@ -110,25 +110,15 @@ jobs: # If we don't run `git status` before the "git diff-index" it seems # to list every file that's been touched by codegen. git status - FOUND_DIFF=0 - for x in $(git diff-index --name-only HEAD --); do - if [ "$(basename $x)" = "go.mod" ]; then - continue - elif [ "$(basename $x)" = "go.sum" ]; then - continue - elif [ "$(basename $x)" = "modules.txt" ]; then - continue - fi - echo "Found non-module diff: $x" - FOUND_DIFF=1 - break - done + + CHANGED="$(git diff-index --name-only HEAD --)" # If we see no changes after the upgrade, then we are up to date. - if [[ "$FOUND_DIFF" -eq "0" ]]; then + if [[ "$CHANGED" == "" ]]; then echo "VERIFY_MESSAGE=${{ github.repository }} up to date." >> $GITHUB_ENV else echo "VERIFY_MESSAGE=${{ github.repository }} is out of date." >> $GITHUB_ENV + echo "The following files are changed: $CHANGED" echo 'current=false' >> $GITHUB_ENV fi diff --git a/.github/workflows/knative-release-notes.yaml b/.github/workflows/knative-release-notes.yaml index 517f429bc80..172eb390cea 100644 --- a/.github/workflows/knative-release-notes.yaml +++ b/.github/workflows/knative-release-notes.yaml @@ -41,7 +41,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.15.x + go-version: 1.16.x - name: Install Dependencies run: GO111MODULE=on go get k8s.io/release/cmd/release-notes diff --git a/.github/workflows/knative-style.yaml b/.github/workflows/knative-style.yaml index c5770a4b0c4..754b91736b7 100644 --- a/.github/workflows/knative-style.yaml +++ b/.github/workflows/knative-style.yaml @@ -40,10 +40,10 @@ jobs: importpath: golang.org/x/tools/cmd/goimports steps: - - name: Set up Go 1.15.x + - name: Set up Go 1.16.x uses: actions/setup-go@v2 with: - go-version: 1.15.x + go-version: 1.16.x id: go - name: Check out code @@ -89,10 +89,10 @@ jobs: runs-on: ubuntu-latest steps: - - name: Set up Go 1.15.x + - name: Set up Go 1.16.x uses: actions/setup-go@v2 with: - go-version: 1.15.x + go-version: 1.16.x id: go - name: Check out code diff --git a/.github/workflows/knative-verify.yaml b/.github/workflows/knative-verify.yaml index 5f20c548b95..e18937e1787 100644 --- a/.github/workflows/knative-verify.yaml +++ b/.github/workflows/knative-verify.yaml @@ -27,7 +27,7 @@ jobs: name: Verify Deps and Codegen strategy: matrix: - go-version: [1.15.x] + go-version: [1.16.x] platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} From b20e5995145e51bfb74add8c14cdfa281b7464fe Mon Sep 17 00:00:00 2001 From: knative-automation Date: Fri, 14 May 2021 10:53:50 -0700 Subject: [PATCH 09/38] Update common github actions (#3552) Signed-off-by: Knative Automation From 9de8ab7e4c2dc644de12d7868b0589015556800b Mon Sep 17 00:00:00 2001 From: knative-automation Date: Fri, 14 May 2021 11:02:50 -0700 Subject: [PATCH 10/38] upgrade to latest dependencies (#3505) bumping knative.dev/hack 88c69cd...93ad912: > 93ad912 Print java and mvn version (# 65) > 86f9adc Fix default codegen pkg dir (# 67) Signed-off-by: Knative Automation --- go.mod | 2 +- go.sum | 4 ++-- vendor/knative.dev/hack/codegen-library.sh | 2 +- vendor/knative.dev/hack/presubmit-tests.sh | 9 +++++++++ vendor/modules.txt | 2 +- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 7932746fabe..7097f949998 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( gopkg.in/go-playground/webhooks.v3 v3.13.0 gopkg.in/yaml.v2 v2.3.0 honnef.co/go/tools v0.0.1-2020.1.5 // indirect - knative.dev/hack v0.0.0-20210426064739-88c69cd1eca7 + knative.dev/hack v0.0.0-20210428122153-93ad9129c268 ) replace go.opencensus.io => go.opencensus.io v0.20.2 diff --git a/go.sum b/go.sum index c18ae698dd0..d019e825a66 100644 --- a/go.sum +++ b/go.sum @@ -539,8 +539,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.5 h1:nI5egYTGJakVyOryqLs1cQO5dO0ksin5XXs2pspk75k= honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -knative.dev/hack v0.0.0-20210426064739-88c69cd1eca7 h1:Z5icQ2KNCDSzTcHWMGI3KzdK/BpmgkGYdTX0RRzZul0= -knative.dev/hack v0.0.0-20210426064739-88c69cd1eca7/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI= +knative.dev/hack v0.0.0-20210428122153-93ad9129c268 h1:lBIj9Epd9UQ55NEaHzAdY/UZbuaegCdGPKVC2+Z68Q0= +knative.dev/hack v0.0.0-20210428122153-93ad9129c268/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/knative.dev/hack/codegen-library.sh b/vendor/knative.dev/hack/codegen-library.sh index 062b904997a..ae5130f32b7 100644 --- a/vendor/knative.dev/hack/codegen-library.sh +++ b/vendor/knative.dev/hack/codegen-library.sh @@ -29,7 +29,7 @@ export GOPATH=$(go_mod_gopath_hack) export GOBIN=${GOPATH}/bin # Set GOBIN explicitly as deepcopy-gen is installed by go install. export MODULE_NAME=$(go_mod_module_name) export CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${REPO_ROOT_DIR}; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)} -export KNATIVE_CODEGEN_PKG=${KNATIVE_CODEGEN_PKG:-$(cd ${REPO_ROOT_DIR}; ls -d -1 ./vendor/knative.dev/pkg 2>/dev/null || echo ../pkg)} +export KNATIVE_CODEGEN_PKG=${KNATIVE_CODEGEN_PKG:-$(cd ${REPO_ROOT_DIR}; ls -d -1 ./vendor/knative.dev/pkg 2>/dev/null || echo "${REPO_ROOT_DIR}")} chmod +x ${CODEGEN_PKG}/generate-groups.sh chmod +x ${KNATIVE_CODEGEN_PKG}/hack/generate-knative.sh diff --git a/vendor/knative.dev/hack/presubmit-tests.sh b/vendor/knative.dev/hack/presubmit-tests.sh index fb50ac819b5..f3f7738b61d 100644 --- a/vendor/knative.dev/hack/presubmit-tests.sh +++ b/vendor/knative.dev/hack/presubmit-tests.sh @@ -296,6 +296,15 @@ function main() { echo ">> docker version" docker version fi + if type java > /dev/null; then + echo ">> java version" + java -version + echo "JAVA_HOME: $JAVA_HOME" + fi + if type mvn > /dev/null; then + echo ">> maven version" + mvn --version + fi fi [[ -z $1 ]] && set -- "--all-tests" diff --git a/vendor/modules.txt b/vendor/modules.txt index dcd40f84bcf..6113fd14d60 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -286,7 +286,7 @@ gopkg.in/go-playground/webhooks.v3/github gopkg.in/yaml.v2 # honnef.co/go/tools v0.0.1-2020.1.5 ## explicit -# knative.dev/hack v0.0.0-20210426064739-88c69cd1eca7 +# knative.dev/hack v0.0.0-20210428122153-93ad9129c268 ## explicit knative.dev/hack # go.opencensus.io => go.opencensus.io v0.20.2 From b5b20635ebda25068a47c1f01a49379ba03ba3ab Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Sat, 15 May 2021 03:26:50 +0900 Subject: [PATCH 11/38] Remove responsive-revision-gc config (#3545) Since https://github.com/knative/serving/pull/10084 deleted old GC and started using responsive GC by default, `responsive-revision-gc` in `config-feature` is not used at all. This patch removes the configuration `responsive-revision-gc` in `config-feature` configmap. --- docs/serving/feature-flags.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/docs/serving/feature-flags.md b/docs/serving/feature-flags.md index 3e44f54ce60..5bf90ada40f 100644 --- a/docs/serving/feature-flags.md +++ b/docs/serving/feature-flags.md @@ -273,15 +273,6 @@ spec: ... ``` -## Responsive Revision Garbage Collector -* **Type**: extension -* **ConfigMap key:** `responsive-revision-gc` - -This flag controls whether new responsive garbage collection is enabled. This -feature labels revisions in real-time as they become referenced and -dereferenced by Routes. This allows us to reap revisions shortly after -they are no longer active. - ## Tag Header Based Routing * **Type**: extension * **ConfigMap key:** `tag-header-based-routing` From f0264b1847dae6e2e419a0e2ab29b68778221809 Mon Sep 17 00:00:00 2001 From: Ashleigh Brennan Date: Fri, 14 May 2021 13:28:50 -0500 Subject: [PATCH 12/38] Fixes #3117 and broken links (#3569) * Fix #3117 and broken links * Fix #3117 and broken links * remove spec folder and redirect page and update links * remove conflicts --- docs/serving/_index.md | 26 ++++++++----------- docs/serving/debugging-application-issues.md | 2 +- docs/serving/deploying/private-registry.md | 4 +-- .../spec/knative-api-specification-1.0.md | 3 --- 4 files changed, 13 insertions(+), 22 deletions(-) delete mode 100644 docs/serving/spec/knative-api-specification-1.0.md diff --git a/docs/serving/_index.md b/docs/serving/_index.md index 9744d1eddb2..6d9b5d9c37d 100644 --- a/docs/serving/_index.md +++ b/docs/serving/_index.md @@ -5,16 +5,14 @@ type: "docs" showlandingtoc: "false" --- -Knative Serving builds on Kubernetes and Istio to support deploying and serving -of serverless applications and functions. Serving is easy to get started with -and scales to support advanced scenarios. +Knative Serving builds on Kubernetes to support deploying and serving serverless applications and functions. Knative Serving is easy to get started with and scales to support advanced scenarios. -The Knative Serving project provides middleware primitives that enable: +The Knative Serving project provides middleware components that enable: -- Rapid deployment of serverless containers -- [Automatic scaling up and down to zero](./autoscaling/) -- Routing and network programming for Istio components -- Point-in-time snapshots of deployed code and configurations +- Rapid deployment of serverless containers. +- Autoscaling including scaling pods down to zero. +- Support for multiple networking layers such as Ambassador, Courier, Gloo, Istio, and Kong, for integration into existing environments. +- Point-in-time snapshots of deployed code and configurations. ## Serving resources @@ -22,22 +20,22 @@ Knative Serving defines a set of objects as Kubernetes Custom Resource Definitions (CRDs). These objects are used to define and control how your serverless workload behaves on the cluster: -- [Service](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#service): +- [Service](https://github.com/knative/specs/blob/main/specs/serving/knative-api-specification-1.0.md#service): The `service.serving.knative.dev` resource automatically manages the whole lifecycle of your workload. It controls the creation of other objects to ensure that your app has a route, a configuration, and a new revision for each update of the service. Service can be defined to always route traffic to the latest revision or to a pinned revision. -- [Route](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#route): +- [Route](https://github.com/knative/specs/blob/main/specs/serving/knative-api-specification-1.0.md#route): The `route.serving.knative.dev` resource maps a network endpoint to one or more revisions. You can manage the traffic in several ways, including fractional traffic and named routes. -- [Configuration](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#configuration): +- [Configuration](https://github.com/knative/specs/blob/main/specs/serving/knative-api-specification-1.0.md#configuration): The `configuration.serving.knative.dev` resource maintains the desired state for your deployment. It provides a clean separation between code and configuration and follows the Twelve-Factor App methodology. Modifying a configuration creates a new revision. -- [Revision](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0#revision): +- [Revision](https://github.com/knative/specs/blob/main/specs/serving/knative-api-specification-1.0.md#revision): The `revision.serving.knative.dev` resource is a point-in-time snapshot of the code and configuration for each modification made to the workload. Revisions are immutable objects and can be retained for as long as useful. Knative @@ -58,9 +56,7 @@ With the `Service` resource, a deployed service will automatically have a matching route and configuration created. Each time the `Service` is updated, a new revision is created. -For more information on the resources and their interactions, see the -[Resource Types Overview](https://github.com/knative/specs/blob/main/specs/serving/overview.md) -in the Knative Serving repository. +For more information on the resources and their interactions, see the [Resource Types Overview](https://github.com/knative/specs/blob/main/specs/serving/overview.md) in the Knative Serving repository. ## More samples and demos diff --git a/docs/serving/debugging-application-issues.md b/docs/serving/debugging-application-issues.md index a6dcaf0c6dc..5b3f58f7863 100644 --- a/docs/serving/debugging-application-issues.md +++ b/docs/serving/debugging-application-issues.md @@ -38,7 +38,7 @@ kubectl get route --output yaml The `conditions` in `status` provide the reason if there is any failure. For details, see Knative -[Error Conditions and Reporting](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0.md#error-signalling). +[Error Conditions and Reporting](https://github.com/knative/specs/blob/main/specs/serving/knative-api-specification-1.0.md#error-signalling). ### Check Ingress/Istio routing diff --git a/docs/serving/deploying/private-registry.md b/docs/serving/deploying/private-registry.md index 54aaa12285c..cbfb507b5ed 100644 --- a/docs/serving/deploying/private-registry.md +++ b/docs/serving/deploying/private-registry.md @@ -75,8 +75,7 @@ You need: Note: By default, the `default` service account in each of the [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) - of your Knative cluster are use by your revisions unless - [`serviceAccountName`](../spec/knative-api-specification-1.0) is specified. + of your Knative cluster are use by your revisions unless [`serviceAccountName`](https://github.com/knative/specs/blob/main/specs/serving/knative-api-specification-1.0.md#revision-2) is specified. Run the following command to modify your `default` service account, assuming you named your secrets `container-registry`: @@ -90,5 +89,4 @@ your credentials and have access to your container images in the private registr ## What's next -You can now create a service that uses your container images from the private registry. [Learn how to create a Knative service](../getting-started-knative-app). diff --git a/docs/serving/spec/knative-api-specification-1.0.md b/docs/serving/spec/knative-api-specification-1.0.md deleted file mode 100644 index 79ff7468386..00000000000 --- a/docs/serving/spec/knative-api-specification-1.0.md +++ /dev/null @@ -1,3 +0,0 @@ -# Knative Serving API Specification - -This file has been moved to the [Knative Specs Repository](https://github.com/knative/specs/blob/main/specs/serving/knative-api-specification-1.0.md) From 3b42f9d289adc6037084fde90052b6c640a84ed2 Mon Sep 17 00:00:00 2001 From: Jonathan Johnson Date: Fri, 14 May 2021 14:56:50 -0400 Subject: [PATCH 13/38] Update shortcodes.md (#3550) minor grammar. --- help/contributor/how-to/shortcodes.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/help/contributor/how-to/shortcodes.md b/help/contributor/how-to/shortcodes.md index 7fe7d64ec78..1c9aa9f58b9 100644 --- a/help/contributor/how-to/shortcodes.md +++ b/help/contributor/how-to/shortcodes.md @@ -5,10 +5,9 @@ weight: "50" type: "docs" --- -A list and examples of the custom shortcodes that are currently used and available -in knative.dev. +A list and examples of the custom shortcodes that are currently used and available in knative.dev. -STAUS: This page is in "draft state" and needs to be completed. +STATUS: This page is in "draft state" and needs to be completed. ## Knative custom shortcodes @@ -42,7 +41,7 @@ https://github.com/knative/website/blob/main/layouts/shortcodes/readfile.md Use them to reduce release maintenance and ensure content accuracy. -The following variable are dynamically populated based on the URL of the content in knative.dev: +The following variables are dynamically populated based on the URL of the content in knative.dev: - The [branch shortcode](https://github.com/knative/website/blob/main/layouts/shortcodes/branch.md) {{< branch >}} renders: `{{< branch >}}` - The [version shortcode](https://github.com/knative/website/blob/main/layouts/shortcodes/version.md) {{< version >}} renders: `{{< version >}}` From 3211289c9c9ed332a7c4f1843d4a913b8bcf9f6f Mon Sep 17 00:00:00 2001 From: Matthias Wessendorf Date: Mon, 17 May 2021 15:52:24 +0200 Subject: [PATCH 14/38] :lipstick: slight change to ordered delivery guarantees (#3536) Signed-off-by: Matthias Wessendorf --- docs/eventing/broker/kafka-broker/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/eventing/broker/kafka-broker/_index.md b/docs/eventing/broker/kafka-broker/_index.md index 1d861451989..63f5a25f9f1 100644 --- a/docs/eventing/broker/kafka-broker/_index.md +++ b/docs/eventing/broker/kafka-broker/_index.md @@ -319,8 +319,8 @@ spec: The supported consumer delivery guarantees are: -* `unordered`: Unordered consumer is a non-blocking consumer that potentially delivers messages unordered, while preserving proper offset management. -* `ordered`: Ordered consumer is a per-partition blocking consumer that delivers messages in order. +* `unordered`: An unordered consumer is a non-blocking consumer that delivers messages unordered, while preserving proper offset management. +* `ordered`: An ordered consumer is a per-partition blocking consumer that waits for a successful response from the CloudEvent subscriber before it delivers the next message of the partition. `unordered` is the default ordering guarantee, while **`ordered` is considered unstable, use with caution**. From f756f1a0aa81c062daa7630e352b12747f3b6a12 Mon Sep 17 00:00:00 2001 From: Evan Anderson Date: Tue, 18 May 2021 01:58:25 +0800 Subject: [PATCH 15/38] Add knative-release-leads to OWNERS (#3586) --- OWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/OWNERS b/OWNERS index 058afec8abd..cf2a91c4e6d 100644 --- a/OWNERS +++ b/OWNERS @@ -4,6 +4,7 @@ approvers: - docs-writers - technical-oversight-committee - steering-committee +- knative-release-leads reviewers: - docs-writers - docs-reviewers From c9ce88e203d36b42f37e8cf6bfc1d9c2df20b7eb Mon Sep 17 00:00:00 2001 From: Carlos Santana Date: Mon, 17 May 2021 19:54:25 -0400 Subject: [PATCH 16/38] add approvers ux (#3587) --- OWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/OWNERS b/OWNERS index cf2a91c4e6d..d0fea6cccdd 100644 --- a/OWNERS +++ b/OWNERS @@ -5,6 +5,7 @@ approvers: - technical-oversight-committee - steering-committee - knative-release-leads +- ux-wg-leads reviewers: - docs-writers - docs-reviewers From 22c151114400bad44cee5afe5a64e9bf2a892cbb Mon Sep 17 00:00:00 2001 From: RichieEscarez Date: Tue, 18 May 2021 05:27:15 -0700 Subject: [PATCH 17/38] Update the default value (#3530) --- docs/serving/services/deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/serving/services/deployment.md b/docs/serving/services/deployment.md index b4facf61124..ad2a31cbda3 100644 --- a/docs/serving/services/deployment.md +++ b/docs/serving/services/deployment.md @@ -19,7 +19,7 @@ kubectl get configmap -n knative-serving config-deployment -oyaml ## Configuring progress deadlines Configuring progress deadline settings allows you to specify the maximum time, either in seconds or minutes, that you will wait for your Deployment to progress before the system reports back that the Deployment has failed progressing for the Knative Revision. -By default, this value is set to 120 seconds. +By default, this value is set to 600 seconds. The value is expressed as a Go `time.Duration` string representation, but must be rounded to a second precision. The Knative Autoscaler component scales the revision to 0, and the Knative service enters a terminal `Failed` state, if the initial scale cannot be achieved within the time limit defined by this setting. From 8751c198ba3641ff9b7188e04fee38e7ba0e9aa8 Mon Sep 17 00:00:00 2001 From: Matthias Wessendorf Date: Tue, 18 May 2021 15:24:14 +0200 Subject: [PATCH 18/38] Adding notes on KafkaSource usage (#3596) * Adding some Kafka note for use-cases Signed-off-by: Matthias Wessendorf * changing the description Signed-off-by: Matthias Wessendorf --- docs/eventing/samples/kafka/source/index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/eventing/samples/kafka/source/index.md b/docs/eventing/samples/kafka/source/index.md index 34ae9f005a5..c18d4a5eead 100644 --- a/docs/eventing/samples/kafka/source/index.md +++ b/docs/eventing/samples/kafka/source/index.md @@ -7,6 +7,12 @@ type: "docs" Tutorial on how to build and deploy a `KafkaSource` [Eventing source](../../../sources/README.md) using a Knative Serving `Service`. +## Background + +The `KafkaSource` reads all the messages, from all partitions, and sends those messages as CloudEvents via HTTP to its configured `sink`. + +*NOTE:* In case you need a more sophisticated Kafka Consumer, with direct access to specific partitions or offsets you might want to implement a _Kafka Consumer_, using one of the available Apache Kafka SDKs, to handle the messages yourself, rather than using the Knative `KafkaSource`. + ## Prerequisites - Ensure that you meet the [prerequisites listed in the Apache Kafka overview](../README.md). From 42fb8a179cb25dc79cb7c752e31fb669d6af2462 Mon Sep 17 00:00:00 2001 From: knative-automation Date: Tue, 18 May 2021 07:14:15 -0700 Subject: [PATCH 19/38] Update actions (#3581) Signed-off-by: Knative Automation --- .github/workflows/knative-go-build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/knative-go-build.yaml b/.github/workflows/knative-go-build.yaml index 676a24b2c00..da2ffd01af8 100644 --- a/.github/workflows/knative-go-build.yaml +++ b/.github/workflows/knative-go-build.yaml @@ -61,4 +61,4 @@ jobs: tr '\n' ' ')" echo "Building with tags: ${tags}" - go test -vet=off -tags "${tags}" -run=^$ ./... + go test -vet=off -tags "${tags}" -exec echo ./... From 4ab8007cd3e1cd24b284c79c8330012a29dc3dbc Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Tue, 18 May 2021 23:14:21 +0900 Subject: [PATCH 20/38] Remove python pycache (#3594) --- hack/__pycache__/macros.cpython-36.pyc | Bin 964 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 hack/__pycache__/macros.cpython-36.pyc diff --git a/hack/__pycache__/macros.cpython-36.pyc b/hack/__pycache__/macros.cpython-36.pyc deleted file mode 100644 index 1d3d410e3e9ee29d2de2def28166e811f815d33d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 964 zcmZ8gPjAyO6t|spt;!}iAWj^7;1Y?&2RKdB#D*p`Ar* z?i=t0_)58Q;tO!##B-XK2}jQ_ety5-`{mhrb#T!4-S1yU5kf!FgF)c^4VZfhlRyHO zXoLh2(Kj^00uNCV|AHMf$Z&8l0wM-`3)Y}kXo5uCVDMMG#sUGVGpM^$&Apn-3~Dwb zp!UFqVD1Pek0y9RL_kHWNRTP9FGMtnR%nG+M8x;e5Q$E^jv%skA47xye|Pcwoz&8D zFCFDnm|I;ME@-Lrl#Y$1zK}G#u~uqNtt=&XlFp@d%ILJ;r|tM$NZq8iTU2e9?+2%! zE-ufnF3&#>FFp*Y)N^Hxt^(VfTg9(SNtN62$ZF>AfJnJUfur8g+?c$S&Kt{f`H~t? zWN#J7P`*u?E52h0dMoa;Lg{=b7}Vs-7dO}GE^qYsKW&4>Y2p3M9WmC{N;j4HOt~~O z6 z*>-WgrHySkdm9eE?zWq@1FIyiiE(we?Q0$7(${-%ZqS0{0jf#1;nMs-_7S*0uUTO# z$@n##tmYbuXNN($W9@Yd5yuLiOdob9zd{Bx0&`~S@-`Dg&w%j0|a&K g6YvSKU2x6&17P?-+n{^Ll@T|kJPCiD3q^b6FHJuLp8x;= From 3d98fc4a501580bf9c47dcedb0c902d1d90d75a6 Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Tue, 18 May 2021 23:24:15 +0900 Subject: [PATCH 21/38] Use correct setting in ClusterIssue setting (#3595) The doc uses ClusterIssuer `letsencrypt-http01-issuer` but the configuration uses `letsencrypt-issuer` so it is confusable. Actual report is https://github.com/knative/docs/issues/3560. So this patch changes the ClusterIssuer name to `letsencrypt-http01-issuer` which is used in this doc section. Fix https://github.com/knative/docs/issues/3560 --- docs/serving/using-auto-tls.md | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/docs/serving/using-auto-tls.md b/docs/serving/using-auto-tls.md index d368b39b27b..ebac80a2437 100644 --- a/docs/serving/using-auto-tls.md +++ b/docs/serving/using-auto-tls.md @@ -198,12 +198,10 @@ in the `knative-serving` namespace to reference your new `ClusterIssuer`. 1. Add the `issuerRef` within the `data` section: ```shell - ... data: - ... issuerRef: | kind: ClusterIssuer - name: letsencrypt-issuer + name: letsencrypt-http01-issuer ``` Example: @@ -247,11 +245,8 @@ requests are handled: 1. Add the `autoTLS: Enabled` attribute under the `data` section: ```shell - ... data: - ... autoTLS: Enabled - ... ``` Example: @@ -285,11 +280,8 @@ requests are handled: clients to use HTTPS. ```shell - ... data: - ... - autoTLS: Enabled - ... + httpProtocol: Redirected ``` Example: @@ -303,7 +295,6 @@ requests are handled: data: ... autoTLS: Enabled - ... httpProtocol: Redirected ... ``` From f8e75be1c40567506a1227504314f42e476ba8c2 Mon Sep 17 00:00:00 2001 From: NovaHe Date: Wed, 19 May 2021 00:01:16 +0800 Subject: [PATCH 22/38] fix broken link #3568 #3577 (#3579) --- docs/eventing/accessing-traces.md | 2 +- docs/eventing/channels/channel-types-defaults.md | 2 +- docs/eventing/debugging/index.md | 4 ++-- docs/eventing/flows/parallel.md | 2 +- docs/eventing/samples/_index.md | 2 +- docs/eventing/samples/gitlab-source/index.md | 2 +- docs/eventing/samples/helloworld/_index.md | 4 ++-- docs/eventing/samples/helloworld/helloworld-go/_index.md | 4 ++-- .../eventing/samples/helloworld/helloworld-python/_index.md | 2 +- docs/eventing/samples/kafka/_index.md | 6 +++--- docs/eventing/samples/kafka/binding/index.md | 2 +- docs/eventing/samples/kafka/channel/index.md | 4 ++-- docs/eventing/samples/kafka/source/index.md | 4 ++-- docs/eventing/samples/parallel/_index.md | 6 +++--- docs/eventing/samples/parallel/multiple-branches/_index.md | 2 +- docs/eventing/samples/parallel/mutual-exclusivity/_index.md | 4 ++-- docs/serving/samples/blue-green-deployment.md | 2 +- docs/serving/samples/gitwebhook-go/index.md | 2 +- docs/serving/samples/grpc-ping-go/index.md | 2 +- .../samples/hello-world/helloworld-java-spring/README.md | 2 +- docs/serving/samples/knative-routing-go/index.md | 2 +- docs/serving/samples/multi-container/index.md | 2 +- docs/serving/samples/rest-api-go/index.md | 4 ++-- docs/serving/samples/secrets-go/index.md | 2 +- 24 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/eventing/accessing-traces.md b/docs/eventing/accessing-traces.md index a5138ed229c..ff8f79cb0fe 100644 --- a/docs/eventing/accessing-traces.md +++ b/docs/eventing/accessing-traces.md @@ -11,7 +11,7 @@ visualize and trace your requests. ## Before you begin -You must have a Knative cluster running with the Eventing component installed. [Learn more](../install/README.md) +You must have a Knative cluster running with the Eventing component installed. [Learn more](../install/) ## Configuring tracing diff --git a/docs/eventing/channels/channel-types-defaults.md b/docs/eventing/channels/channel-types-defaults.md index f30f1e0b163..d37d1ae87c7 100644 --- a/docs/eventing/channels/channel-types-defaults.md +++ b/docs/eventing/channels/channel-types-defaults.md @@ -10,7 +10,7 @@ Knative provides the InMemoryChannel channel implementation by default. This def **NOTE:** InMemoryChannel channels should not be used in production environments. The default channel implementation is specified in the `default-ch-webhook` ConfigMap in the `knative-eventing` namespace. -For more information about modifying ConfigMaps, see [Configuring the Eventing Operator custom resource](./docs/install/configuring-eventing-cr/). +For more information about modifying ConfigMaps, see [Configuring the Eventing Operator custom resource](../../../docs/install/operator/configuring-eventing-cr). In the following example, the cluster default channel implementation is InMemoryChannel, while the namespace default channel implementation for the `example-namespace` is KafkaChannel. diff --git a/docs/eventing/debugging/index.md b/docs/eventing/debugging/index.md index 2699dfabe62..cf7b8f226e7 100644 --- a/docs/eventing/debugging/index.md +++ b/docs/eventing/debugging/index.md @@ -11,12 +11,12 @@ setup. ## Audience This document is intended for people that are familiar with the object model of -[Knative Eventing](../README.md). You don't need to be an expert, but do need to +[Knative Eventing](../). You don't need to be an expert, but do need to know roughly how things fit together. ## Prerequisites -1. Setup [Knative Eventing and an Eventing-contrib resource](../README.md). +1. Setup [Knative Eventing and an Eventing-contrib resource](../). ## Example diff --git a/docs/eventing/flows/parallel.md b/docs/eventing/flows/parallel.md index aa1a93ffd6e..91077506272 100644 --- a/docs/eventing/flows/parallel.md +++ b/docs/eventing/flows/parallel.md @@ -44,4 +44,4 @@ Parallel has three parts for the Status: ## Examples -Learn how to use Parallel by following the [examples](../samples/parallel/README.md) +Learn how to use Parallel by following the [examples](../samples/parallel/) diff --git a/docs/eventing/samples/_index.md b/docs/eventing/samples/_index.md index 1a5edfd5806..8a41bdea10d 100644 --- a/docs/eventing/samples/_index.md +++ b/docs/eventing/samples/_index.md @@ -8,6 +8,6 @@ showlandingtoc: "true" Use the following code samples to help you understand the various use cases for Knative Eventing and Event Sources. -[Learn more about Knative Eventing and Eventing Sources](../README.md). +[Learn more about Knative Eventing and Eventing Sources](../). [**See all Knative code samples**](../../samples.md) diff --git a/docs/eventing/samples/gitlab-source/index.md b/docs/eventing/samples/gitlab-source/index.md index 7fa67edc3e0..3cb33bcd33c 100644 --- a/docs/eventing/samples/gitlab-source/index.md +++ b/docs/eventing/samples/gitlab-source/index.md @@ -15,7 +15,7 @@ Knative Service. You will need: 1. An internet-accessible Kubernetes cluster with Knative Serving installed. - Follow the [installation instructions](../../../install/README.md) if you + Follow the [installation instructions](../../../install/) if you need to create one. 1. Ensure Knative Serving is [configured with a domain name](../../../serving/using-a-custom-domain.md) diff --git a/docs/eventing/samples/helloworld/_index.md b/docs/eventing/samples/helloworld/_index.md index 329afa5a118..60727434e50 100644 --- a/docs/eventing/samples/helloworld/_index.md +++ b/docs/eventing/samples/helloworld/_index.md @@ -13,13 +13,13 @@ We will deploy the app as a [Kubernetes Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) along with a [Kubernetes Service](https://kubernetes.io/docs/concepts/services-networking/service/). -However, you can also deploy the app as a [Knative Serving Service](../../../serving/README.md) +However, you can also deploy the app as a [Knative Serving Service](../../../serving/) ## Prerequisites - A Kubernetes cluster with [Knative Eventing](../../getting-started.md#installing-knative-eventing) installed. - If you decide to deploy the app as a Knative Serving Service then you will have to install - [Knative Serving](../../../install/README.md). + [Knative Serving](../../../install/). - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/eventing/samples/helloworld/helloworld-go/_index.md b/docs/eventing/samples/helloworld/helloworld-go/_index.md index 519e1e71afd..c9918e6a749 100644 --- a/docs/eventing/samples/helloworld/helloworld-go/_index.md +++ b/docs/eventing/samples/helloworld/helloworld-go/_index.md @@ -16,7 +16,7 @@ We will deploy the app as a along with a [Kubernetes Service](https://kubernetes.io/docs/concepts/services-networking/service/). However, you can also deploy the app as a -[Knative Serving Service](../../../../serving/README.md). +[Knative Serving Service](../../../../serving/). Follow the steps below to create the sample code and then deploy the app to your cluster. You can also download a working copy of the sample, by running the @@ -280,7 +280,7 @@ application and trigger are ready, let's send a CloudEvent. ### Send CloudEvent to the Broker -We can send an http request directly to the [Broker](../../../broker/README.md) +We can send an http request directly to the [Broker](../../../broker/) with correct CloudEvent headers set. 1. Deploy a curl pod and SSH into it diff --git a/docs/eventing/samples/helloworld/helloworld-python/_index.md b/docs/eventing/samples/helloworld/helloworld-python/_index.md index 11a89102394..ca0720b8625 100644 --- a/docs/eventing/samples/helloworld/helloworld-python/_index.md +++ b/docs/eventing/samples/helloworld/helloworld-python/_index.md @@ -8,7 +8,7 @@ type: "docs" A simple web app written in Python that you can use to test knative eventing. It shows how to consume a [CloudEvent](https://cloudevents.io/) in Knative eventing, and optionally how to respond back with another CloudEvent in the http response, by adding the Cloud Eventing headers outlined in the Cloud Events standard definition. We will deploy the app as a [Kubernetes Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) along with a [Kubernetes Service](https://kubernetes.io/docs/concepts/services-networking/service/). -However, you can also deploy the app as a [Knative Serving Service](../../../../serving/README.md). +However, you can also deploy the app as a [Knative Serving Service](../../../../serving/). Follow the steps below to create the sample code and then deploy the app to your cluster. You can also download a working copy of the sample, by running the diff --git a/docs/eventing/samples/kafka/_index.md b/docs/eventing/samples/kafka/_index.md index 4702fb6d20f..1cd3bc864a6 100644 --- a/docs/eventing/samples/kafka/_index.md +++ b/docs/eventing/samples/kafka/_index.md @@ -97,6 +97,6 @@ $ ./kafka_setup.sh A number of different examples, showing the `KafkaSource`, `KafkaChannel` and `KafkaBinding` can be found here: -- [`KafkaSource` to `Service`](./source/README.md) -- [`KafkaChannel` and Broker](./channel/README.md) -- [`KafkaBinding`](./binding/README.md) +- [`KafkaSource` to `Service`](./source/) +- [`KafkaChannel` and Broker](./channel/) +- [`KafkaBinding`](./binding/) diff --git a/docs/eventing/samples/kafka/binding/index.md b/docs/eventing/samples/kafka/binding/index.md index 80ab6573e53..bf83321ea81 100644 --- a/docs/eventing/samples/kafka/binding/index.md +++ b/docs/eventing/samples/kafka/binding/index.md @@ -18,7 +18,7 @@ via Kafka Source ### Prerequisites 1. You must ensure that you meet the - [prerequisites listed in the Apache Kafka overview](../README.md). + [prerequisites listed in the Apache Kafka overview](../). 2. This feature is available from Knative Eventing 0.15+ ### Creating a `KafkaSource` source CRD diff --git a/docs/eventing/samples/kafka/channel/index.md b/docs/eventing/samples/kafka/channel/index.md index aa0d3b8cb85..db813a9e014 100644 --- a/docs/eventing/samples/kafka/channel/index.md +++ b/docs/eventing/samples/kafka/channel/index.md @@ -11,9 +11,9 @@ default channel configuration in Knative Eventing. ## Prerequisites - Ensure that you meet the - [prerequisites listed in the Apache Kafka overview](../README.md). + [prerequisites listed in the Apache Kafka overview](../). - A Kubernetes cluster with - [Knative Kafka Channel installed](../../../../install/README.md). + [Knative Kafka Channel installed](../../../../install/). ## Creating a `KafkaChannel` channel CRD diff --git a/docs/eventing/samples/kafka/source/index.md b/docs/eventing/samples/kafka/source/index.md index c18d4a5eead..a230c4b3dcd 100644 --- a/docs/eventing/samples/kafka/source/index.md +++ b/docs/eventing/samples/kafka/source/index.md @@ -15,8 +15,8 @@ The `KafkaSource` reads all the messages, from all partitions, and sends those m ## Prerequisites -- Ensure that you meet the [prerequisites listed in the Apache Kafka overview](../README.md). -- A Kubernetes cluster with [Knative Kafka Source installed](../../../../install/README.md). +- Ensure that you meet the [prerequisites listed in the Apache Kafka overview](../). +- A Kubernetes cluster with [Knative Kafka Source installed](../../../../install/). ## Apache Kafka Topic (Optional) diff --git a/docs/eventing/samples/parallel/_index.md b/docs/eventing/samples/parallel/_index.md index fcc74e21f0c..4174bdf4536 100644 --- a/docs/eventing/samples/parallel/_index.md +++ b/docs/eventing/samples/parallel/_index.md @@ -17,7 +17,7 @@ All examples require: - Knative Serving All examples are using the -[default channel template](../../channels/default-channels.md). +[default channel template](../../channels/create-default-channel.md). ## Examples @@ -30,5 +30,5 @@ trivial filtering, transformation and routing of the incoming events. The examples are: -- [Parallel with multiple branches and global reply](./multiple-branches/README.md) -- [Parallel with mutually exclusive cases](./mutual-exclusivity/README.md) +- [Parallel with multiple branches and global reply](./multiple-branches/) +- [Parallel with mutually exclusive cases](./mutual-exclusivity/) diff --git a/docs/eventing/samples/parallel/multiple-branches/_index.md b/docs/eventing/samples/parallel/multiple-branches/_index.md index b8a0331afa8..6da37e5353d 100644 --- a/docs/eventing/samples/parallel/multiple-branches/_index.md +++ b/docs/eventing/samples/parallel/multiple-branches/_index.md @@ -14,7 +14,7 @@ The events produced by each branch are then sent to the `event-display` service. ## Prerequisites -Please refer to the sample overview for the [prerequisites](../README.md). +Please refer to the sample overview for the [prerequisites](../). ### Create the Knative Services diff --git a/docs/eventing/samples/parallel/mutual-exclusivity/_index.md b/docs/eventing/samples/parallel/mutual-exclusivity/_index.md index 0ee357781fb..4d20a7f7597 100644 --- a/docs/eventing/samples/parallel/mutual-exclusivity/_index.md +++ b/docs/eventing/samples/parallel/mutual-exclusivity/_index.md @@ -9,7 +9,7 @@ In this example, we are going to see how we can create a Parallel with mutually exclusive branches. This example is the same as the -[multiple branches example](../multiple-branches/README.md) except that we are +[multiple branches example](../multiple-branches/) except that we are now going to rely on the Knative [switch](https://github.com/lionelvillard/knative-functions#switch) function to provide a soft mutual exclusivity guarantee. @@ -18,7 +18,7 @@ NOTE: this example must be deployed in the default namespace. ## Prerequisites -Please refer to the sample overview for the [prerequisites](../README.md). +Please refer to the sample overview for the [prerequisites](../). ### Create the Knative Services diff --git a/docs/serving/samples/blue-green-deployment.md b/docs/serving/samples/blue-green-deployment.md index 8d035c59773..37e8ebc43ad 100644 --- a/docs/serving/samples/blue-green-deployment.md +++ b/docs/serving/samples/blue-green-deployment.md @@ -14,7 +14,7 @@ configuration. You need: -- A Kubernetes cluster with [Knative installed](../../install/README.md). +- A Kubernetes cluster with [Knative installed](../../install/). - (Optional) [A custom domain configured](../using-a-custom-domain.md) for use with Knative. diff --git a/docs/serving/samples/gitwebhook-go/index.md b/docs/serving/samples/gitwebhook-go/index.md index 03779fce5c4..ffce20ce584 100644 --- a/docs/serving/samples/gitwebhook-go/index.md +++ b/docs/serving/samples/gitwebhook-go/index.md @@ -16,7 +16,7 @@ You must meet the following requirements to run this sample: [Google Domains](https://domains.google/). - A Kubernetes cluster running with the following: - Knative Serving must be installed. For details about setting up a Knative - cluster, see the [installation guides](../../../install/README.md). + cluster, see the [installation guides](../../../install/). - Your Knative cluster must be [configured to use your custom domain](../../using-a-custom-domain.md). - You must ensure that your Knative cluster uses a static IP address: diff --git a/docs/serving/samples/grpc-ping-go/index.md b/docs/serving/samples/grpc-ping-go/index.md index ab77d2c0761..745ff7dff70 100644 --- a/docs/serving/samples/grpc-ping-go/index.md +++ b/docs/serving/samples/grpc-ping-go/index.md @@ -16,7 +16,7 @@ for production containers. ## Prerequisites -- [Install the latest version of Knative Serving](../../../install/README.md). +- [Install the latest version of Knative Serving](../../../install/). - Install [docker](https://www.docker.com/). diff --git a/docs/serving/samples/hello-world/helloworld-java-spring/README.md b/docs/serving/samples/hello-world/helloworld-java-spring/README.md index 7b81304d312..69eac6043b7 100644 --- a/docs/serving/samples/hello-world/helloworld-java-spring/README.md +++ b/docs/serving/samples/hello-world/helloworld-java-spring/README.md @@ -14,7 +14,7 @@ cd knative-docs/docs/serving/samples/hello-world/helloworld-java-spring ## Before you begin - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../../install/README.md) if you need to + [installation instructions](../../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/knative-routing-go/index.md b/docs/serving/samples/knative-routing-go/index.md index 4152ebbf60f..e85aa99e7bf 100644 --- a/docs/serving/samples/knative-routing-go/index.md +++ b/docs/serving/samples/knative-routing-go/index.md @@ -20,7 +20,7 @@ the Login service. ## Prerequisites -1. A Kubernetes cluster with [Knative Serving](../../../install/README.md) +1. A Kubernetes cluster with [Knative Serving](../../../install/) installed. 2. Install [Docker](https://docs.docker.com/get-started/#prepare-your-docker-environment). diff --git a/docs/serving/samples/multi-container/index.md b/docs/serving/samples/multi-container/index.md index 898edb99625..4fffb1b30e7 100644 --- a/docs/serving/samples/multi-container/index.md +++ b/docs/serving/samples/multi-container/index.md @@ -10,7 +10,7 @@ A simple web app written in Go that you can use for multi container testing. ## Prerequisites - A Kubernetes cluster with Knative installed and DNS configured. Follow the - [installation instructions](../../../install/README.md) if you need to + [installation instructions](../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). diff --git a/docs/serving/samples/rest-api-go/index.md b/docs/serving/samples/rest-api-go/index.md index 116f291e709..1b3e342a604 100644 --- a/docs/serving/samples/rest-api-go/index.md +++ b/docs/serving/samples/rest-api-go/index.md @@ -12,7 +12,7 @@ like `AAPL`,`AMZN`, `GOOG`, `MSFT`, etc. ## Prerequisites -1. A Kubernetes cluster with [Knative Serving](../../../install/README.md) installed +1. A Kubernetes cluster with [Knative Serving](../../../install/) installed and DNS configured. 1. [Docker](https://docs.docker.com/get-started/#prepare-your-docker-environment) installed locally. @@ -202,7 +202,7 @@ and then you run `curl` commands to send request with your stock symbol. ## Next Steps -The [traffic splitting example](../traffic-splitting/README.md) continues from +The [traffic splitting example](../traffic-splitting/) continues from here to walk you through how to create new Revisions and then use traffic splitting between those Revisions. diff --git a/docs/serving/samples/secrets-go/index.md b/docs/serving/samples/secrets-go/index.md index 31ba508d3d5..ab891ea4332 100644 --- a/docs/serving/samples/secrets-go/index.md +++ b/docs/serving/samples/secrets-go/index.md @@ -22,7 +22,7 @@ cd knative-docs/docs/serving/samples/secrets-go ## Before you begin - A Kubernetes cluster with Knative installed. Follow the - [installation instructions](../../../install/README.md) if you need to create + [installation instructions](../../../install/) if you need to create one. - [Docker](https://www.docker.com) installed and running on your local machine, and a Docker Hub account configured (we'll use it for a container registry). From a9036c01f0007ea85d6746b37e595ed0e6170b38 Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 08:41:56 -0400 Subject: [PATCH 23/38] fix Netlify build --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 03f69854f33..92f8e64fcbf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ mkdocs-material>=7.1 mkdocs-exclude>=1.0 mkdocs-macros-plugin>=0.5 - +mkdocs-awesome-pages-plugin>=2.5 From 612e0d30538ec41b91f9de4bd6f546777f09aa1e Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 11:32:19 -0400 Subject: [PATCH 24/38] Added Snippets folder and hidden Beta Contributor guide --- CONTRIBUTING.md | 17 ++ .../contributing/contributing.md | 237 ++++++++++++++++++ .../contributing/images/nav-backend.png | Bin 0 -> 267426 bytes .../contributing/images/nav-frontend.png | Bin 0 -> 153618 bytes docs/snippets/links/main-docs-branch-link.md | 1 + mkdocs.yml | 1 + 6 files changed, 256 insertions(+) create mode 100644 docs/getting-started/contributing/contributing.md create mode 100644 docs/getting-started/contributing/images/nav-backend.png create mode 100644 docs/getting-started/contributing/images/nav-frontend.png create mode 100644 docs/snippets/links/main-docs-branch-link.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2e02d4fb18..bb6b1a5d7a7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,3 +13,20 @@ into a single location: you can use to help you post to the Knative blog. * [Website help](https://knative.dev/help/contributor/publishing) * [Maintainer help](https://knative.dev/help/maintainer/) + + +# MkDocs Contributions (Beta) +**This is a temporary home for contribution guidelines for the MkDocs branch. When MkDocs becomes "main" this will be moved to the appropriate place on the website (the places linked above)** + + +##Install Material for MkDocs +Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use) + +You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org/ + +=== "pip" +pip install mkdocs-material +For some (e.g. folks using RHEL), you may have to use pip3. + +==="pip3" +pip3 install mkdocs-material diff --git a/docs/getting-started/contributing/contributing.md b/docs/getting-started/contributing/contributing.md new file mode 100644 index 00000000000..3dce2aec407 --- /dev/null +++ b/docs/getting-started/contributing/contributing.md @@ -0,0 +1,237 @@ +# MkDocs Contributions (Beta) +**This is a temporary home for contribution guidelines for the MkDocs branch. When MkDocs becomes "main" this will be moved to the appropriate place on the website** + + +## Install Material for MkDocs +Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use) + +You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org/ + +For some (e.g. folks using RHEL), you may have to use pip3. + + +=== "pip" + ``` + pip install mkdocs-material + ``` + More detailed instructions can be found here: [https://squidfunk.github.io/mkdocs-material/getting-started/#installation](https://squidfunk.github.io/mkdocs-material/getting-started/#installation) + +=== "pip3" + ``` + pip3 install mkdocs-material + ``` + More detailed instructions can be found here: [https://squidfunk.github.io/mkdocs-material/getting-started/#installation](https://squidfunk.github.io/mkdocs-material/getting-started/#installation) + +## Install Knative-Specific Extensions + + +Knative uses a number of extensions to MkDocs which can also be installed using pip. If you used pip to install, run the following: + +=== "pip" + ``` + pip install mkdocs-material-extensions mkdocs-macros-plugin mkdocs-exclude mkdocs-awesome-pages-plugin + ``` + +=== "pip3" + ``` + pip3 install mkdocs-material-extensions mkdocs-macros-plugin mkdocs-exclude mkdocs-awesome-pages-plugin + ``` + +## Use the Docker Container +//TODO DOCKER CONTAINER EXTENSIONS + +## Setting Up Local Preview +Once you have installed Material for MkDocs and all of the extensions, head over to +--8<-- "docs/snippets/links/main-docs-branch-link.md" +and clone the repo. + +In your terminal, find your way over to the location of the cloned repo. Once you are in the main folder (.../docs) and run: + +=== "Local Preview" + ``` + mkdocs serve + ``` + +=== "Local Preview w/ Dirty Reload" + If you’re only changing a single page in the /docs/ folder (i.e. not the homepage or mkdocs.yml) adding the flag --dirtyreload will make the site rebuild super crazy insta-fast. + ``` + mkdocs serve --dirtyreload + ``` +=== "Local Preview including Blog and Community Site" + First, install the necessary extensions: + ``` + npm install -g postcss postcss-cli autoprefixer http-server + ``` + Once you have those npm packages installed, run: + ``` + ./hack/build-with-blog.sh serve + ``` + !!! note + Unfortunately, there aren’t live previews for this version of the local preview. + + + +After awhile, your terminal should spit out: + +```{ .bash .no-copy } +INFO - Documentation built in 13.54 seconds +[I 210519 10:47:10 server:335] Serving on http://127.0.0.1:8000 +[I 210519 10:47:10 handlers:62] Start watching changes +[I 210519 10:47:10 handlers:64] Start detecting changes +``` + +Now access http://127.0.0.1:8000 and you should see the site is built! 🎉 + +**Anytime you change any file in your /docs/ repo and hit save, the site will automatically rebuild itself to reflect your changes!** + +## Setting Up "Public" Preview +If, for whatever reason, you want to share your work before submitting a PR (where Netlify would generate a preview for you), you can deploy your changes as a Github Page easily using the following command: +``` +mkdocs gh-deploy --force +``` + +```{ .bash .no-copy } +INFO - Documentation built in 14.29 seconds +WARNING - Version check skipped: No version specified in previous deployment. +INFO - Copying '/Users/omerbensaadon/Documents/GitHub/MergeConflictsResolve/docs/site' to 'gh-pages' branch and pushing to GitHub. +INFO - Your documentation should shortly be available at: https://.github.io/docs/ +``` +Where `` is your Github handle. + +After a few moments, your changes should be available for public preview at the link provided by MkDocs! This means you can rapidly prototype and share your changes before making a PR! + +## Navigation +Navigation in MkDocs uses the "mkdocs.yml" file (found in the /docs directory) to organize navigation. + +=== "Frontend" + ![nav-frontend](images/nav-frontend.png) + +=== "Backend" + ![nav-backend](images/nav-backend.png) + +For more in-depth information on Navigation, see: +[https://www.mkdocs.org/user-guide/writing-your-docs/#configure-pages-and-navigation](https://www.mkdocs.org/user-guide/writing-your-docs/#configure-pages-and-navigation) +and +[https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/](https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/) + +### Content Tabs +Content tabs are handy way to organize lots of information in a visually pleasing way. Some documentation from [https://squidfunk.github.io/mkdocs-material/reference/content-tabs/#usage](https://squidfunk.github.io/mkdocs-material/reference/content-tabs/#usage) is reproduced below. +=== "Grouping Code blocks" + Code blocks are one of the primary targets to be grouped, and can be considered a special case of content tabs, as tabs with a single code block are always rendered without horizontal spacing. + Example: + ``` + === "C" + + ``` c + #include + + int main(void) { + printf("Hello world!\n"); + return 0; + } + ``` + + === "C++" + + ``` c++ + #include + + int main(void) { + std::cout << "Hello world!" << std::endl; + return 0; + } + ``` + ``` + + Result: + === "C" + + ``` c + #include + + int main(void) { + printf("Hello world!\n"); + return 0; + } + ``` + + === "C++" + + ``` c++ + #include + + int main(void) { + std::cout << "Hello world!" << std::endl; + return 0; + } + ``` + +=== "Grouping other content" + When a content tab contains more than one code block, it is rendered with horizontal spacing. Vertical spacing is never added, but can be achieved by nesting tabs in other blocks. + + Example: + + ``` + === "Unordered list" + + * Sed sagittis eleifend rutrum + * Donec vitae suscipit est + * Nulla tempor lobortis orci + + === "Ordered list" + + 1. Sed sagittis eleifend rutrum + 2. Donec vitae suscipit est + 3. Nulla tempor lobortis orci + ``` + + Result: + === "Unordered list" + + * Sed sagittis eleifend rutrum + * Donec vitae suscipit est + * Nulla tempor lobortis orci + + === "Ordered list" + + 1. Sed sagittis eleifend rutrum + 2. Donec vitae suscipit est + 3. Nulla tempor lobortis orci + +For more information, see:[https://squidfunk.github.io/mkdocs-material/reference/content-tabs/#usage](https://squidfunk.github.io/mkdocs-material/reference/content-tabs/#usage) +### File Includes (Content Reuse) +Knative strives to reduce duplicative effort by reusing commonly used bits of information, see the docs/snippet directory for some examples. + +Snippets does not require a specific extension, and as long as a valid file name is specified, it will attempt to process it. + +Snippets can handle recursive file inclusion. And if Snippets encounters the same file in the current stack, it will avoid re-processing it in order to avoid an infinite loop (or crash on hitting max recursion depth). + +For more info, see: [https://facelessuser.github.io/pymdown-extensions/extensions/snippets/](https://facelessuser.github.io/pymdown-extensions/extensions/snippets/) + +### Admonitions +=== "Admontion" + !!! tip + Admonitions (like this one) are a great way to highlight important bits of information for readers. + +=== "Formating" + ``` + !!! tip + Admonitions (like this one) are a great way to highlight important bits of information for readers. + ``` +For formatting (including more advanced Admonitions), see: [https://squidfunk.github.io/mkdocs-material/reference/admonitions/#usage](https://squidfunk.github.io/mkdocs-material/reference/admonitions/#usage) + + +### Icons and Emojis +Material for MkDocs supports using Material Icons and Emojis using easy shortcodes. +=== "Emojs" + :taco: +=== "Formatting" + `:taco:` + +To search a database of Icons and Emojis (all of which can be used on Knative.dev), as well as usage information, see: [https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#search](https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#search) + +# TODO (Add Requests Here) +URL Re-directs +Navigation using lukasgeiter/mkdocs-awesome-pages-plugin: An MkDocs plugin that simplifies configuring page titles and their order +Index.md vs. README.md +awesome-pages diff --git a/docs/getting-started/contributing/images/nav-backend.png b/docs/getting-started/contributing/images/nav-backend.png new file mode 100644 index 0000000000000000000000000000000000000000..180b67ae35c7f87a36ec04d12b3ae3892460356c GIT binary patch literal 267426 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

0SA_T(k+MYWf99z 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

<{L~E-907bApE~GG?y@- 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 wJ3WdMSHdH-2lE6Wnarcq)Y<-4+^|H(EtDd literal 0 HcmV?d00001 diff --git a/docs/getting-started/contributing/images/nav-frontend.png b/docs/getting-started/contributing/images/nav-frontend.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a721fb86bc5b8a3f06b71135b938a472e49752 GIT binary patch literal 153618 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≫B8#6&Cxb8CIR` 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 Jp1A&t{|AC?f*Jq- literal 0 HcmV?d00001 diff --git a/docs/snippets/links/main-docs-branch-link.md b/docs/snippets/links/main-docs-branch-link.md new file mode 100644 index 00000000000..1fcd12fd1ff --- /dev/null +++ b/docs/snippets/links/main-docs-branch-link.md @@ -0,0 +1 @@ +[https://github.com/knative/docs/tree/mkdocs](https://github.com/knative/docs/tree/mkdocs) diff --git a/mkdocs.yml b/mkdocs.yml index 17f03c3bd46..1b751cba9f0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -256,6 +256,7 @@ markdown_extensions: - pymdownx.caret - pymdownx.mark - pymdownx.tilde + - pymdownx.escapeall - pymdownx.tasklist: custom_checkbox: true - admonition From 73c45d94838271a1ed11612811b8345b1aeeb8cd Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 11:35:24 -0400 Subject: [PATCH 25/38] Update docs/eventing/event-registry.md Co-authored-by: Carlos Santana --- docs/eventing/event-registry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/eventing/event-registry.md b/docs/eventing/event-registry.md index 6a5e79917b4..73fd25d81bf 100644 --- a/docs/eventing/event-registry.md +++ b/docs/eventing/event-registry.md @@ -14,7 +14,7 @@ type information in the cluster data store. ## Before you begin -1. Read about the [broker](./broker/) and [trigger](./broker/triggers/) objects. +1. Read about the [broker](../broker/) and [trigger](../broker/triggers/) objects. 1. Be familiar with the [CloudEvents spec](https://github.com/cloudevents/spec/blob/master/spec.md), particularly the From 1b9e7f2fb668b78f4bba807204b5188d65c25ec0 Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 11:37:24 -0400 Subject: [PATCH 26/38] whitespace --- docs/getting-started/contributing/contributing.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/getting-started/contributing/contributing.md b/docs/getting-started/contributing/contributing.md index 3dce2aec407..0f32684474c 100644 --- a/docs/getting-started/contributing/contributing.md +++ b/docs/getting-started/contributing/contributing.md @@ -5,7 +5,7 @@ ## Install Material for MkDocs Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use) -You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org/ +You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org/ For some (e.g. folks using RHEL), you may have to use pip3. @@ -24,7 +24,6 @@ For some (e.g. folks using RHEL), you may have to use pip3. ## Install Knative-Specific Extensions - Knative uses a number of extensions to MkDocs which can also be installed using pip. If you used pip to install, run the following: === "pip" From 2e51f40a692aeccec665211b324a80e7626786da Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 11:47:57 -0400 Subject: [PATCH 27/38] more whitespace --- docs/getting-started/contributing/contributing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/contributing/contributing.md b/docs/getting-started/contributing/contributing.md index 0f32684474c..a3f40a6c20c 100644 --- a/docs/getting-started/contributing/contributing.md +++ b/docs/getting-started/contributing/contributing.md @@ -3,9 +3,9 @@ ## Install Material for MkDocs -Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use) +Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use). -You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org/ +You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org For some (e.g. folks using RHEL), you may have to use pip3. From b3e02802cd76a5caa84e98c146977c88cd28e6d6 Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 11:49:36 -0400 Subject: [PATCH 28/38] removing this bit because linting is killing me --- docs/getting-started/contributing/contributing.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/getting-started/contributing/contributing.md b/docs/getting-started/contributing/contributing.md index a3f40a6c20c..04aed8826a8 100644 --- a/docs/getting-started/contributing/contributing.md +++ b/docs/getting-started/contributing/contributing.md @@ -5,8 +5,6 @@ ## Install Material for MkDocs Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use). -You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org - For some (e.g. folks using RHEL), you may have to use pip3. From 4ef9781d9b6a6c4f0e085967a1b5ee07ec1140cf Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 11:50:49 -0400 Subject: [PATCH 29/38] ok really the last one --- CONTRIBUTING.md | 17 ----------------- .../contributing/contributing.md | 2 ++ 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bb6b1a5d7a7..e2e02d4fb18 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,20 +13,3 @@ into a single location: you can use to help you post to the Knative blog. * [Website help](https://knative.dev/help/contributor/publishing) * [Maintainer help](https://knative.dev/help/maintainer/) - - -# MkDocs Contributions (Beta) -**This is a temporary home for contribution guidelines for the MkDocs branch. When MkDocs becomes "main" this will be moved to the appropriate place on the website (the places linked above)** - - -##Install Material for MkDocs -Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use) - -You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have python, you can install it here: https://www.python.org/ - -=== "pip" -pip install mkdocs-material -For some (e.g. folks using RHEL), you may have to use pip3. - -==="pip3" -pip3 install mkdocs-material diff --git a/docs/getting-started/contributing/contributing.md b/docs/getting-started/contributing/contributing.md index 04aed8826a8..59ec83cf711 100644 --- a/docs/getting-started/contributing/contributing.md +++ b/docs/getting-started/contributing/contributing.md @@ -5,6 +5,8 @@ ## Install Material for MkDocs Knative.dev uses [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) to render documentation. Material for MkDocs is Python based and uses pip to install most of it's required packages as well as optional add-ons (which we use). +You can choose to install MkDocs locally or using a Docker image. pip actually comes pre-installed with Python so it is included in many operating systems (like MacOSx or Ubuntu) but if you don’t have Python, you can install it here: https://www.python.org + For some (e.g. folks using RHEL), you may have to use pip3. From 9707be0dca07b8a5989ea0cf7eb482021d860b0a Mon Sep 17 00:00:00 2001 From: Matthias Wessendorf Date: Wed, 19 May 2021 17:53:16 +0200 Subject: [PATCH 30/38] Updating to latest API version of Strimzi. v1beta1 is now gone :fire: (#3603) Signed-off-by: Matthias Wessendorf --- docs/eventing/samples/kafka/_index.md | 2 +- docs/eventing/samples/kafka/kafka.yaml | 2 +- docs/eventing/samples/kafka/source/index.md | 2 +- docs/eventing/samples/kafka/source/kafka-topic.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/eventing/samples/kafka/_index.md b/docs/eventing/samples/kafka/_index.md index 1cd3bc864a6..49dfc3dc988 100644 --- a/docs/eventing/samples/kafka/_index.md +++ b/docs/eventing/samples/kafka/_index.md @@ -34,7 +34,7 @@ is to install it by using [Strimzi](https://strimzi.io). ``` 1. Describe the size of your Apache Kafka installation in `kafka.yaml`, like: ```yaml - apiVersion: kafka.strimzi.io/v1beta1 + apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster diff --git a/docs/eventing/samples/kafka/kafka.yaml b/docs/eventing/samples/kafka/kafka.yaml index 9188d7609af..c98cca5b14e 100644 --- a/docs/eventing/samples/kafka/kafka.yaml +++ b/docs/eventing/samples/kafka/kafka.yaml @@ -1,4 +1,4 @@ -apiVersion: kafka.strimzi.io/v1beta1 +apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster diff --git a/docs/eventing/samples/kafka/source/index.md b/docs/eventing/samples/kafka/source/index.md index a230c4b3dcd..40166e6f0b9 100644 --- a/docs/eventing/samples/kafka/source/index.md +++ b/docs/eventing/samples/kafka/source/index.md @@ -29,7 +29,7 @@ The `KafkaSource` reads all the messages, from all partitions, and sends those m - Replicas ```yaml - apiVersion: kafka.strimzi.io/v1beta1 + apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: knative-demo-topic diff --git a/docs/eventing/samples/kafka/source/kafka-topic.yaml b/docs/eventing/samples/kafka/source/kafka-topic.yaml index b7826a6ab3c..f09e63359b2 100644 --- a/docs/eventing/samples/kafka/source/kafka-topic.yaml +++ b/docs/eventing/samples/kafka/source/kafka-topic.yaml @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -apiVersion: kafka.strimzi.io/v1beta1 +apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: knative-demo-topic From d24d920c61509545fc9c7809d07c2435c7f10f21 Mon Sep 17 00:00:00 2001 From: Matthias Wessendorf Date: Wed, 19 May 2021 20:44:16 +0200 Subject: [PATCH 31/38] :notebook: adding a note to not consume records of the kafkachannel's topic... (#3615) Signed-off-by: Matthias Wessendorf --- docs/eventing/samples/kafka/channel/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/eventing/samples/kafka/channel/index.md b/docs/eventing/samples/kafka/channel/index.md index db813a9e014..bca23765010 100644 --- a/docs/eventing/samples/kafka/channel/index.md +++ b/docs/eventing/samples/kafka/channel/index.md @@ -94,6 +94,8 @@ with `knative-messaging-kafka`. This indicates it is an Apache Kafka channel from Knative. It contains the name of the namespace, `default` in this example, followed by the actual name of the channel. +**NOTE:** The topic of a Kafka channel is an implementation detail and records from it should not be consumed from different applications. + ## Configuring the Knative broker for Apache Kafka channels To setup a broker that will use the new default Kafka channels, you must create @@ -125,6 +127,8 @@ knative-messaging-kafka.default.default-kn2-trigger ... ``` +**NOTE:** The topic of a Kafka channel is an implementation detail and records from it should not be consumed from different applications. + ## Creating a service and trigger to use the Apache Kafka broker To use the Apache Kafka based broker, let's take a look at a simple demo. Use From 2b54bfa958186824ce837f52568b927a3b0caf0d Mon Sep 17 00:00:00 2001 From: Kevin Marquardsen Date: Wed, 19 May 2021 11:55:34 -0700 Subject: [PATCH 32/38] fix broken link in kogito example (#3602) --- blog/articles/event-drive-app-knative-eventing-kogito.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/articles/event-drive-app-knative-eventing-kogito.md b/blog/articles/event-drive-app-knative-eventing-kogito.md index 5354c7883d2..5b38480574f 100644 --- a/blog/articles/event-drive-app-knative-eventing-kogito.md +++ b/blog/articles/event-drive-app-knative-eventing-kogito.md @@ -28,7 +28,7 @@ As part of the Serverless Workflow implementation, Kogito offers a Kubernetes Op To demonstrate how the Kogito workflow implementation works on Knative's event-driven architecture, we will use the [patient onboarding example](https://github.com/kiegroup/kogito-examples/tree/master/serverless-workflow-functions-events-quarkus). In this example, we simulate a workflow used in hospitals to onboard new patients and assign them to the correct doctor. -The following image taken from the [specification examples page](https://github.com/serverlessworkflow/specification/blob/master/examples/examples.md#New-Patient-Onboarding) illustrates this workflow: +The following image taken from the [specification examples page](https://github.com/serverlessworkflow/specification/tree/main/examples#New-Patient-Onboarding) illustrates this workflow: ![Patient onboarding workflow representation](/blog/articles/images/kogito-example-patientonboarding.png) *Patient Onboarding workflow representation* From 8d6a0ddccc94320cc0a3ea0e4656756f2480c14c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lena=20Br=C3=BCder?= Date: Wed, 19 May 2021 21:05:16 +0200 Subject: [PATCH 33/38] docs about usage of internal services in an "api-gateway" access model (#3597) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Brüder, Lena --- .../samples/knative-routing-go/index.md | 35 +++++++++++ .../knative-routing-go/routing-internal.yaml | 59 +++++++++++++++++++ .../samples/knative-routing-go/routing.yaml | 2 +- 3 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 docs/serving/samples/knative-routing-go/routing-internal.yaml diff --git a/docs/serving/samples/knative-routing-go/index.md b/docs/serving/samples/knative-routing-go/index.md index e85aa99e7bf..693ee038ea3 100644 --- a/docs/serving/samples/knative-routing-go/index.md +++ b/docs/serving/samples/knative-routing-go/index.md @@ -260,6 +260,41 @@ The Gateway proxy checks the updated host, and forwards it to `Search` or ![Object model](./images/knative-routing-sample-flow.png) +## Using internal services and `"httpProtocol": "Redirected"` + +Using the above approach, services will be available using two entrypoints into the cluster: +The original ones provided by Knative Serving (`search-service.default.example.com` and `login-service.default.example.com`), +as well as the additional entrypoints `example.com/search` and `example.com/login` +provided by the manually added VirtualService (`entry-route`). + +To make sure your service can only be reached via the manually created +VirtualService, you can add the label `networking.knative.dev/visibility: cluster-local` +to the Knative Service definitions, and route traffic over +`knative-local-gateway.istio-system.svc.cluster.local` with a destination address of an internal service, +instead of the public ingress one at `istio-ingressgateway.istio-system.svc.cluster.local` +with a destination address of an externally available service. + +Using + +``` +kubectl label kservice search-service login-service networking.knative.dev/visibility=cluster-local +``` + +you label the services as an cluster-local services, removing access via `search-service.default.example.com` +and `login-service.default.example.com`. After doing so, your previous routing rule will not be routable anymore. +Running + +``` +kubectl apply --filename docs/serving/samples/knative-routing-go/routing-internal.yaml +``` + +will replace the custom routing rule with one that uses the `knative-local-gateway`, enabling access +via `example.com/search` and `example.com/login` again. + +With these changes, you can also use [the `autoTLS` feature](../../using-auto-tls.md) in combination with the global setting +`"httpProtocol": "Redirected"`, which would otherwise try to redirect the `entry-route` +VirtualService requests from HTTP to HTTPS, failing the request. + ## Clean Up To clean up the sample resources: diff --git a/docs/serving/samples/knative-routing-go/routing-internal.yaml b/docs/serving/samples/knative-routing-go/routing-internal.yaml new file mode 100644 index 00000000000..c283fcbd267 --- /dev/null +++ b/docs/serving/samples/knative-routing-go/routing-internal.yaml @@ -0,0 +1,59 @@ +# Copyright 2018 The Knative Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: entry-route + namespace: default +spec: + # This is the gateway shared in knative service mesh. + gateways: + - knative-ingress-gateway.knative-serving.svc.cluster.local + # Set host to the domain name that you own. + hosts: + - example.com + http: + - match: + - uri: + prefix: "/search" + rewrite: + # Rewrite the original host header to the host header of Search service + # in order to redirect requests to Search service. + authority: search-service.default.svc.cluster.local + route: + # Basically here we redirect the request to the internal gateway with + # updated header "search-service.default.svc.cluster.local" so the request will + # eventually be directed to Search service. + - destination: + host: knative-local-gateway.istio-system.svc.cluster.local + port: + number: 80 + weight: 100 + - match: + - uri: + prefix: "/login" + rewrite: + # Rewrite the original host header to the host header of Search service + # in order to redirect requests to Search service. + authority: login-service.default.svc.cluster.local + route: + # Basically here we redirect the request to the internal gateway with + # updated header "login-service.default.svc.cluster.local" so the request will + # eventually be directed to Login service. + - destination: + host: knative-local-gateway.istio-system.svc.cluster.local + port: + number: 80 + weight: 100 diff --git a/docs/serving/samples/knative-routing-go/routing.yaml b/docs/serving/samples/knative-routing-go/routing.yaml index f4bbfef6af3..a5858abde73 100644 --- a/docs/serving/samples/knative-routing-go/routing.yaml +++ b/docs/serving/samples/knative-routing-go/routing.yaml @@ -51,7 +51,7 @@ spec: route: # Basically here we redirect the request to the cluster entry again with # updated header "login-service.default.example.com" so the request will - # eventually be directed to LOgin service. + # eventually be directed to Login service. - destination: host: istio-ingressgateway.istio-system.svc.cluster.local port: From b4823853e6f6eed9ef416918f4d810f529211c31 Mon Sep 17 00:00:00 2001 From: Carlos Santana Date: Wed, 19 May 2021 15:05:23 -0400 Subject: [PATCH 34/38] api specs for v0.23 (#3619) Signed-off-by: Carlos Santana --- docs/reference/api/eventing/eventing.md | 6464 ++++------------------- docs/reference/api/serving.md | 146 +- 2 files changed, 1038 insertions(+), 5572 deletions(-) diff --git a/docs/reference/api/eventing/eventing.md b/docs/reference/api/eventing/eventing.md index 9257224f022..1b94c6c62f7 100644 --- a/docs/reference/api/eventing/eventing.md +++ b/docs/reference/api/eventing/eventing.md @@ -16,44 +16,29 @@ flows.knative.dev/v1

  • -flows.knative.dev/v1beta1 -
  • -
  • messaging.knative.dev/v1
  • -messaging.knative.dev/v1beta1 -
  • -
  • sources.knative.dev/v1
  • -sources.knative.dev/v1alpha1 -
  • -
  • -sources.knative.dev/v1alpha2 -
  • -
  • -sources.knative.dev/v1beta1 -
  • -
  • sources.knative.dev/v1beta2
  • duck.knative.dev/v1

    -

    +

    Package v1 is the v1 version of the API.

    -

    +
    Resource Types:

      BackoffPolicyType -(string alias)

      +(string alias)

      (Appears on:DeliverySpec)

      -

      +

      BackoffPolicyType is the type for backoff policies

      -

      +
      @@ -71,11 +56,11 @@ Resource Types:

      Channelable

      -

      +

      Channelable is a skeleton type wrapping Subscribable and Addressable in the manner we expect resource writers defining compatible resources to embed it. We will typically use this type to deserialize Channelable ObjectReferences and access their subscription and address data. This is not a real resource.

      -

      +
      @@ -165,9 +150,9 @@ ChannelableStatus

      (Appears on:Channelable, ChannelSpec, InMemoryChannelSpec)

      -

      +

      ChannelableSpec contains Spec of the Channelable object

      -

      +
      @@ -214,9 +199,9 @@ global delivery spec.

      (Appears on:Channelable, ChannelStatus, InMemoryChannelStatus)

      -

      +

      ChannelableStatus contains the Status of a Channelable object.

      -

      +
      @@ -256,6 +241,7 @@ knative.dev/pkg/apis/duck/v1.AddressStatus

      (Members of AddressStatus are embedded into this type.)

      +(Optional)

      AddressStatus is the part where the Channelable fulfills the Addressable contract.

      @@ -295,12 +281,12 @@ Failed messages are delivered here.

      DeliverySpec

      -(Appears on:ChannelableSpec, SubscriberSpec, BrokerSpec, TriggerSpec, TriggerSpec, ParallelBranch, SequenceStep, SubscriptionSpec) +(Appears on:ChannelableSpec, SubscriberSpec, BrokerSpec, TriggerSpec, ParallelBranch, SequenceStep, SubscriptionSpec)

      -

      +

      DeliverySpec contains the delivery options for event senders, such as channelable and source.

      -

      +
      @@ -372,9 +358,9 @@ For exponential policy, backoff delay is backoffDelay*2^.

      DeliveryStatus

      -

      +

      DeliveryStatus contains the Status of an object supporting delivery options.

      -

      +
      @@ -402,11 +388,11 @@ where failed events are sent to.

      Subscribable

      -

      +

      Subscribable is a skeleton type wrapping Subscribable in the manner we expect resource writers defining compatible resources to embed it. We will typically use this type to deserialize SubscribableType ObjectReferences and access the Subscription data. This is not a real resource.

      -

      +
      @@ -481,9 +467,9 @@ configured as to be compatible with Subscribable contract.

      (Appears on:ChannelableSpec, Subscribable)

      -

      +

      SubscribableSpec shows how we expect folks to embed Subscribable in their Spec field.

      -

      +
      @@ -512,10 +498,10 @@ configured as to be compatible with Subscribable contract.

      (Appears on:ChannelableStatus, Subscribable)

      -

      +

      SubscribableStatus is the schema for the subscribable’s status portion of the status section of the resource.

      -

      +
      @@ -544,10 +530,10 @@ section of the resource.

      (Appears on:SubscribableSpec)

      -

      +

      SubscriberSpec defines a single subscriber to a Subscribable.

      At least one of SubscriberURI and ReplyURI must be present

      -

      +
      @@ -629,9 +615,9 @@ DeliverySpec

      (Appears on:SubscribableStatus)

      -

      +

      SubscriberStatus defines the status of a single subscriber to a Channel.

      -

      +
      @@ -693,19 +679,19 @@ string

      duck.knative.dev/v1beta1

      -

      +

      Package v1beta1 is the v1beta1 version of the API.

      -

      +
      Resource Types:

        BackoffPolicyType -(string alias)

        +(string alias)

        (Appears on:DeliverySpec)

        -

        +

        BackoffPolicyType is the type for backoff policies

        -

        +
        @@ -723,11 +709,11 @@ Resource Types:

        Channelable

        -

        +

        Channelable is a skeleton type wrapping Subscribable and Addressable in the manner we expect resource writers defining compatible resources to embed it. We will typically use this type to deserialize Channelable ObjectReferences and access their subscription and address data. This is not a real resource.

        -

        +
        @@ -813,11 +799,11 @@ ChannelableStatus

        ChannelableSpec

        -(Appears on:Channelable, ChannelSpec, InMemoryChannelSpec) +(Appears on:Channelable)

        -

        +

        ChannelableSpec contains Spec of the Channelable object

        -

        +
        @@ -860,11 +846,11 @@ DeliverySpec

        ChannelableStatus

        -(Appears on:Channelable, ChannelStatus, InMemoryChannelStatus) +(Appears on:Channelable)

        -

        +

        ChannelableStatus contains the Status of a Channelable object.

        -

        +
        @@ -943,12 +929,12 @@ Failed messages are delivered here.

        DeliverySpec

        -(Appears on:ChannelableSpec, SubscriberSpec, BrokerSpec, ParallelBranch, SequenceStep, SubscriptionSpec) +(Appears on:ChannelableSpec, SubscriberSpec)

        -

        +

        DeliverySpec contains the delivery options for event senders, such as channelable and source.

        -

        +
        @@ -1020,9 +1006,9 @@ For exponential policy, backoff delay is backoffDelay*2^.

        DeliveryStatus

        -

        +

        DeliveryStatus contains the Status of an object supporting delivery options.

        -

        +
        @@ -1050,11 +1036,11 @@ where failed events are sent to.

        Subscribable

        -

        +

        Subscribable is a skeleton type wrapping Subscribable in the manner we expect resource writers defining compatible resources to embed it. We will typically use this type to deserialize SubscribableType ObjectReferences and access the Subscription data. This is not a real resource.

        -

        +
        @@ -1129,9 +1115,9 @@ configured as to be compatible with Subscribable contract.

        (Appears on:ChannelableSpec, Subscribable)

        -

        +

        SubscribableSpec shows how we expect folks to embed Subscribable in their Spec field.

        -

        +
        @@ -1160,10 +1146,10 @@ configured as to be compatible with Subscribable contract.

        (Appears on:ChannelableStatus, Subscribable)

        -

        +

        SubscribableStatus is the schema for the subscribable’s status portion of the status section of the resource.

        -

        +
        @@ -1192,10 +1178,10 @@ section of the resource.

        (Appears on:SubscribableSpec)

        -

        +

        SubscriberSpec defines a single subscriber to a Subscribable.

        At least one of SubscriberURI and ReplyURI must be present

        -

        +
        @@ -1277,9 +1263,9 @@ DeliverySpec

        (Appears on:SubscribableStatus)

        -

        +

        SubscriberStatus defines the status of a single subscriber to a Channel.

        -

        +
        @@ -1341,9 +1327,9 @@ string

        eventing.knative.dev/v1

        -

        +

        Package v1 is the v1 version of the API.

        -

        +
        Resource Types:
        • Broker @@ -1352,13 +1338,13 @@ Resource Types:

        Broker

        -

        +

        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.

        -

        +
        @@ -1467,10 +1453,10 @@ date.

        Trigger

        -

        +

        Trigger represents a request to have events delivered to a subscriber from a Broker’s event pool.

        -

        +
        @@ -1604,8 +1590,8 @@ date.

        (Appears on:Broker)

        -

        -

        +
        +
        @@ -1653,9 +1639,9 @@ global delivery spec.

        (Appears on:Broker)

        -

        +

        BrokerStatus represents the current state of a Broker.

        -

        +
        @@ -1692,6 +1678,7 @@ knative.dev/pkg/apis/duck/v1.Addressable @@ -1703,8 +1690,8 @@ delivered into the Broker mesh.

        (Appears on:TriggerSpec)

        -

        -

        +
        +
        +(Optional)

        Broker is Addressable. It exposes the endpoint as an URI to get events delivered into the Broker mesh.

        @@ -1734,22 +1721,22 @@ specified values.

        TriggerFilterAttributes -(map[string]string alias)

        +(map[string]string alias)

        (Appears on:TriggerFilter)

        -

        +

        TriggerFilterAttributes is a map of context attribute names to values for filtering by equality. Only exact matches will pass the filter. You can use the value “ to indicate all strings match.

        -

        +

        TriggerSpec

        (Appears on:Trigger)

        -

        -

        +
        +
        @@ -1819,9 +1806,9 @@ DeliverySpec

        (Appears on:Trigger)

        -

        +

        TriggerStatus represents the current state of a Trigger.

        -

        +
        @@ -1866,136 +1853,18 @@ knative.dev/pkg/apis.URL

        eventing.knative.dev/v1beta1

        -

        +

        Package v1beta1 is the v1beta1 version of the API.

        -

        +
        Resource Types: -

        Broker -

        -

        -

        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. Receivers use Triggers to -request delivery of events from a Broker’s pool to a specific URL or -Addressable endpoint.

        -

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        FieldDescription
        -apiVersion
        -string
        - -eventing.knative.dev/v1beta1 - -
        -kind
        -string -
        Broker
        -metadata
        - - -Kubernetes meta/v1.ObjectMeta - - -
        -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
        -spec
        - - -BrokerSpec - - -
        -

        Spec defines the desired state of the Broker.

        -
        -
        - - - - - - - - - -
        -config
        - - -knative.dev/pkg/apis/duck/v1.KReference - - -
        -(Optional) -

        Config is a KReference to the configuration that specifies -configuration options for this Broker. For example, this could be -a pointer to a ConfigMap.

        -
        -delivery
        - - -DeliverySpec - - -
        -(Optional) -

        Delivery is the delivery specification for Events within the Broker mesh. -This includes things like retries, DLQ, etc.

        -
        -
        -status
        - - -BrokerStatus - - -
        -(Optional) -

        Status represents the current state of the Broker. This data may be out of -date.

        -

        EventType

        -

        +

        EventType represents a type of event that can be consumed from a Broker.

        -

        +
        @@ -2150,12 +2019,13 @@ TODO might be removed
        -

        Trigger +

        EventTypeSpec

        -

        Trigger represents a request to have events delivered to a consumer from a -Broker’s event pool.

        +(Appears on:
        EventType)

        +
        +
        @@ -2166,181 +2036,93 @@ Broker’s event pool.

        - - - - - - - - - - -
        -apiVersion
        -string
        - -eventing.knative.dev/v1beta1 - +type
        + +string +
        -kind
        -string +

        Type represents the CloudEvents type. It is authoritative.

        Trigger
        -metadata
        +source
        - -Kubernetes meta/v1.ObjectMeta + +knative.dev/pkg/apis.URL
        (Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. +

        Source is a URI, it represents the CloudEvents source.

        -spec
        +schema
        - -TriggerSpec + +knative.dev/pkg/apis.URL
        -

        Spec defines the desired state of the Trigger.

        -
        -
        - +(Optional) +

        Schema is a URI, it represents the CloudEvents schemaurl extension attribute. +It may be a JSON schema, a protobuf schema, etc. It is optional.

        + + - - - - - - -
        -broker
        +schemaData
        string
        -

        Broker is the broker that this trigger receives events from. If not specified, will default -to ‘default’.

        +(Optional) +

        SchemaData allows the CloudEvents schema to be stored directly in the +EventType. Content is dependent on the encoding. Optional attribute. +The contents are not validated or manipulated by the system.

        -filter
        +broker
        - -TriggerFilter - +string
        (Optional) -

        Filter is the filter to apply against all events from the Broker. Only events that pass this -filter will be sent to the Subscriber. If not specified, will default to allowing all events.

        +

        TODO remove https://github.com/knative/eventing/issues/2750 +Broker refers to the Broker that can provide the EventType.

        -subscriber
        +description
        - -knative.dev/pkg/apis/duck/v1.Destination - - -
        -

        Subscriber is the addressable that receives events from the Broker that pass the Filter. It -is required.

        -
        -delivery
        - - -DeliverySpec - - -
        -(Optional) -

        Delivery contains the delivery spec for this specific trigger.

        -
        -
        -status
        - - -TriggerStatus - - -
        -(Optional) -

        Status represents the current state of the Trigger. This data may be out of -date.

        -
        -

        BrokerSpec -

        -

        -(Appears on:Broker) -

        -

        -

        - - - - - - - - - - - - - -
        FieldDescription
        -config
        - - -knative.dev/pkg/apis/duck/v1.KReference - - -
        -(Optional) -

        Config is a KReference to the configuration that specifies -configuration options for this Broker. For example, this could be -a pointer to a ConfigMap.

        -
        -delivery
        - - -DeliverySpec - +string
        (Optional) -

        Delivery is the delivery specification for Events within the Broker mesh. -This includes things like retries, DLQ, etc.

        +

        Description is an optional field used to describe the EventType, in any meaningful way.

        -

        BrokerStatus +

        EventTypeStatus

        -(Appears on:Broker) -

        -

        -

        BrokerStatus represents the current state of a Broker.

        +(Appears on:EventType)

        +
        +

        EventTypeStatus represents the current state of a EventType.

        +
        @@ -2367,29 +2149,21 @@ knative.dev/pkg/apis/duck/v1.Status * Conditions - the latest available observations of a resource’s current state.

        - - - -
        -address
        - - -knative.dev/pkg/apis/duck/v1.Addressable - - -
        -

        Broker is Addressable. It exposes the endpoint as an URI to get events -delivered into the Broker mesh.

        -
        -

        EventTypeSpec +
        +

        flows.knative.dev/v1

        +
        +

        Package v1 is the v1 version of the API.

        +
        +Resource Types: +
          +

          Parallel

          -

          -(Appears on:EventType) -

          -

          -

          +
          +

          Parallel defines conditional branches that will be wired in +series through Channels and Subscriptions.

          +
          @@ -2400,128 +2174,103 @@ delivered into the Broker mesh.

          - - - - - +

          Spec defines the desired state of the Parallel.

          +
          +
          +
          -type
          - -string - -
          -

          Type represents the CloudEvents type. It is authoritative.

          -
          -source
          +metadata
          - -knative.dev/pkg/apis.URL + +Kubernetes meta/v1.ObjectMeta
          (Optional) -

          Source is a URI, it represents the CloudEvents source.

          +Refer to the Kubernetes API documentation for the fields of the +metadata field.
          -schema
          +spec
          - -knative.dev/pkg/apis.URL + +ParallelSpec
          -(Optional) -

          Schema is a URI, it represents the CloudEvents schemaurl extension attribute. -It may be a JSON schema, a protobuf schema, etc. It is optional.

          -
          -
          -schemaData
          +branches
          -string + +[]ParallelBranch +
          -(Optional) -

          SchemaData allows the CloudEvents schema to be stored directly in the -EventType. Content is dependent on the encoding. Optional attribute. -The contents are not validated or manipulated by the system.

          +

          Branches is the list of Filter/Subscribers pairs.

          -broker
          +channelTemplate
          -string + +ChannelTemplateSpec +
          (Optional) -

          TODO remove https://github.com/knative/eventing/issues/2750 -Broker refers to the Broker that can provide the EventType.

          +

          ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD +for the namespace (or cluster, in case there are no defaults for the namespace).

          -description
          +reply
          -string + +knative.dev/pkg/apis/duck/v1.Destination +
          (Optional) -

          Description is an optional field used to describe the EventType, in any meaningful way.

          +

          Reply is a Reference to where the result of a case Subscriber gets sent to +when the case does not have a Reply

          -

          EventTypeStatus -

          -

          -(Appears on:EventType) -

          -

          -

          EventTypeStatus represents the current state of a EventType.

          -

          - - - - - + - -
          FieldDescription
          -Status
          +status
          - -knative.dev/pkg/apis/duck/v1.Status + +ParallelStatus
          -

          -(Members of Status are embedded into this type.) -

          -

          inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

          +(Optional) +

          Status represents the current state of the Parallel. This data may be out of +date.

          -

          TriggerFilter +

          ParallelBranch

          -(Appears on:TriggerSpec) -

          -

          +(Appears on:ParallelSpec)

          +
          +
          @@ -2532,4394 +2281,127 @@ knative.dev/pkg/apis/duck/v1.Status - -
          -attributes
          +filter
          - -TriggerFilterAttributes + +knative.dev/pkg/apis/duck/v1.Destination
          (Optional) -

          Attributes filters events by exact match on event context attributes. -Each key in the map is compared with the equivalent key in the event -context. An event passes the filter if all values are equal to the -specified values.

          -

          Nested context attributes are not supported as keys. Only string values are supported.

          +

          Filter is the expression guarding the branch

          -

          TriggerFilterAttributes -(map[string]string alias)

          -

          -(Appears on:TriggerFilter) -

          -

          -

          TriggerFilterAttributes is a map of context attribute names to values for -filtering by equality. Only exact matches will pass the filter. You can use the value “ -to indicate all strings match.

          -

          -

          TriggerSpec -

          -

          -(Appears on:Trigger) -

          -

          -

          - - - - - - - - - - - - - - - - - - - - - - - -
          FieldDescription
          -broker
          +subscriber
          -string + +knative.dev/pkg/apis/duck/v1.Destination +
          -

          Broker is the broker that this trigger receives events from. If not specified, will default -to ‘default’.

          -
          -filter
          - - -TriggerFilter - - -
          -(Optional) -

          Filter is the filter to apply against all events from the Broker. Only events that pass this -filter will be sent to the Subscriber. If not specified, will default to allowing all events.

          -
          -subscriber
          - - -knative.dev/pkg/apis/duck/v1.Destination - - -
          -

          Subscriber is the addressable that receives events from the Broker that pass the Filter. It -is required.

          -
          -delivery
          - - -DeliverySpec - - -
          -(Optional) -

          Delivery contains the delivery spec for this specific trigger.

          -
          -

          TriggerStatus -

          -

          -(Appears on:Trigger) -

          -

          -

          TriggerStatus represents the current state of a Trigger.

          -

          - - - - - - - - - - - - - - - - - -
          FieldDescription
          -Status
          - - -knative.dev/pkg/apis/duck/v1.Status - - -
          -

          -(Members of Status are embedded into this type.) -

          -

          inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

          -
          -subscriberUri
          - - -knative.dev/pkg/apis.URL - - -
          -(Optional) -

          SubscriberURI is the resolved URI of the receiver for this Trigger.

          -
          -
          -

          flows.knative.dev/v1

          -

          -

          Package v1 is the v1 version of the API.

          -

          -Resource Types: -
            -

            Parallel -

            -

            -

            Parallel defines conditional branches that will be wired in -series through Channels and Subscriptions.

            -

            - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -metadata
            - - -Kubernetes meta/v1.ObjectMeta - - -
            -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
            -spec
            - - -ParallelSpec - - -
            -

            Spec defines the desired state of the Parallel.

            -
            -
            - - - - - - - - - - - - - -
            -branches
            - - -[]ParallelBranch - - -
            -

            Branches is the list of Filter/Subscribers pairs.

            -
            -channelTemplate
            - - -ChannelTemplateSpec - - -
            -(Optional) -

            ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

            -
            -reply
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -(Optional) -

            Reply is a Reference to where the result of a case Subscriber gets sent to -when the case does not have a Reply

            -
            -
            -status
            - - -ParallelStatus - - -
            -(Optional) -

            Status represents the current state of the Parallel. This data may be out of -date.

            -
            -

            ParallelBranch -

            -

            -(Appears on:ParallelSpec) -

            -

            -

            - - - - - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -filter
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -(Optional) -

            Filter is the expression guarding the branch

            -
            -subscriber
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -

            Subscriber receiving the event when the filter passes

            -
            -reply
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -(Optional) -

            Reply is a Reference to where the result of Subscriber of this case gets sent to. -If not specified, sent the result to the Parallel Reply

            -
            -delivery
            - - -DeliverySpec - - -
            -(Optional) -

            Delivery is the delivery specification for events to the subscriber -This includes things like retries, DLQ, etc.

            -
            -

            ParallelBranchStatus -

            -

            -(Appears on:ParallelStatus) -

            -

            -

            ParallelBranchStatus represents the current state of a Parallel branch

            -

            - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -filterSubscriptionStatus
            - - -ParallelSubscriptionStatus - - -
            -

            FilterSubscriptionStatus corresponds to the filter subscription status.

            -
            -filterChannelStatus
            - - -ParallelChannelStatus - - -
            -

            FilterChannelStatus corresponds to the filter channel status.

            -
            -subscriberSubscriptionStatus
            - - -ParallelSubscriptionStatus - - -
            -

            SubscriptionStatus corresponds to the subscriber subscription status.

            -
            -

            ParallelChannelStatus -

            -

            -(Appears on:ParallelBranchStatus, ParallelStatus) -

            -

            -

            - - - - - - - - - - - - - - - - - -
            FieldDescription
            -channel
            - - -Kubernetes core/v1.ObjectReference - - -
            -

            Channel is the reference to the underlying channel.

            -
            -ready
            - -knative.dev/pkg/apis.Condition - -
            -

            ReadyCondition indicates whether the Channel is ready or not.

            -
            -

            ParallelSpec -

            -

            -(Appears on:Parallel) -

            -

            -

            - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -branches
            - - -[]ParallelBranch - - -
            -

            Branches is the list of Filter/Subscribers pairs.

            -
            -channelTemplate
            - - -ChannelTemplateSpec - - -
            -(Optional) -

            ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

            -
            -reply
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -(Optional) -

            Reply is a Reference to where the result of a case Subscriber gets sent to -when the case does not have a Reply

            -
            -

            ParallelStatus -

            -

            -(Appears on:Parallel) -

            -

            -

            ParallelStatus represents the current state of a Parallel.

            -

            - - - - - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -Status
            - - -knative.dev/pkg/apis/duck/v1.Status - - -
            -

            -(Members of Status are embedded into this type.) -

            -

            inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

            -
            -ingressChannelStatus
            - - -ParallelChannelStatus - - -
            -

            IngressChannelStatus corresponds to the ingress channel status.

            -
            -branchStatuses
            - - -[]ParallelBranchStatus - - -
            -

            BranchStatuses is an array of corresponding to branch statuses. -Matches the Spec.Branches array in the order.

            -
            -AddressStatus
            - - -knative.dev/pkg/apis/duck/v1.AddressStatus - - -
            -

            -(Members of AddressStatus are embedded into this type.) -

            -

            AddressStatus is the starting point to this Parallel. Sending to this -will target the first subscriber. -It generally has the form {channel}.{namespace}.svc.{cluster domain name}

            -
            -

            ParallelSubscriptionStatus -

            -

            -(Appears on:ParallelBranchStatus) -

            -

            -

            - - - - - - - - - - - - - - - - - -
            FieldDescription
            -subscription
            - - -Kubernetes core/v1.ObjectReference - - -
            -

            Subscription is the reference to the underlying Subscription.

            -
            -ready
            - -knative.dev/pkg/apis.Condition - -
            -

            ReadyCondition indicates whether the Subscription is ready or not.

            -
            -

            Sequence -

            -

            -

            Sequence defines a sequence of Subscribers that will be wired in -series through Channels and Subscriptions.

            -

            - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -metadata
            - - -Kubernetes meta/v1.ObjectMeta - - -
            -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
            -spec
            - - -SequenceSpec - - -
            -

            Spec defines the desired state of the Sequence.

            -
            -
            - - - - - - - - - - - - - -
            -steps
            - - -[]SequenceStep - - -
            -

            Steps is the list of Destinations (processors / functions) that will be called in the order -provided. Each step has its own delivery options

            -
            -channelTemplate
            - - -ChannelTemplateSpec - - -
            -(Optional) -

            ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

            -
            -reply
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -(Optional) -

            Reply is a Reference to where the result of the last Subscriber gets sent to.

            -
            -
            -status
            - - -SequenceStatus - - -
            -(Optional) -

            Status represents the current state of the Sequence. This data may be out of -date.

            -
            -

            SequenceChannelStatus -

            -

            -(Appears on:SequenceStatus) -

            -

            -

            - - - - - - - - - - - - - - - - - -
            FieldDescription
            -channel
            - - -Kubernetes core/v1.ObjectReference - - -
            -

            Channel is the reference to the underlying channel.

            -
            -ready
            - -knative.dev/pkg/apis.Condition - -
            -

            ReadyCondition indicates whether the Channel is ready or not.

            -
            -

            SequenceSpec -

            -

            -(Appears on:Sequence) -

            -

            -

            - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -steps
            - - -[]SequenceStep - - -
            -

            Steps is the list of Destinations (processors / functions) that will be called in the order -provided. Each step has its own delivery options

            -
            -channelTemplate
            - - -ChannelTemplateSpec - - -
            -(Optional) -

            ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

            -
            -reply
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -(Optional) -

            Reply is a Reference to where the result of the last Subscriber gets sent to.

            -
            -

            SequenceStatus -

            -

            -(Appears on:Sequence) -

            -

            -

            SequenceStatus represents the current state of a Sequence.

            -

            - - - - - - - - - - - - - - - - - - - - - - - - - -
            FieldDescription
            -Status
            - - -knative.dev/pkg/apis/duck/v1.Status - - -
            -

            -(Members of Status are embedded into this type.) -

            -

            inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

            -
            -subscriptionStatuses
            - - -[]SequenceSubscriptionStatus - - -
            -

            SubscriptionStatuses is an array of corresponding Subscription statuses. -Matches the Spec.Steps array in the order.

            -
            -channelStatuses
            - - -[]SequenceChannelStatus - - -
            -

            ChannelStatuses is an array of corresponding Channel statuses. -Matches the Spec.Steps array in the order.

            -
            -AddressStatus
            - - -knative.dev/pkg/apis/duck/v1.AddressStatus - - -
            -

            -(Members of AddressStatus are embedded into this type.) -

            -

            AddressStatus is the starting point to this Sequence. Sending to this -will target the first subscriber. -It generally has the form {channel}.{namespace}.svc.{cluster domain name}

            -
            -

            SequenceStep -

            -

            -(Appears on:SequenceSpec) -

            -

            -

            - - - - - - - - - - - - - - - - - -
            FieldDescription
            -Destination
            - - -knative.dev/pkg/apis/duck/v1.Destination - - -
            -

            -(Members of Destination are embedded into this type.) -

            -

            Subscriber receiving the step event

            -
            -delivery
            - - -DeliverySpec - - -
            -(Optional) -

            Delivery is the delivery specification for events to the subscriber -This includes things like retries, DLQ, etc.

            -
            -

            SequenceSubscriptionStatus -

            -

            -(Appears on:SequenceStatus) -

            -

            -

            - - - - - - - - - - - - - - - - - -
            FieldDescription
            -subscription
            - - -Kubernetes core/v1.ObjectReference - - -
            -

            Subscription is the reference to the underlying Subscription.

            -
            -ready
            - -knative.dev/pkg/apis.Condition - -
            -

            ReadyCondition indicates whether the Subscription is ready or not.

            -
            -
            -

            flows.knative.dev/v1beta1

            -

            -

            Package v1beta1 is the v1beta1 version of the API.

            -

            -Resource Types: -
              -

              Parallel -

              -

              -

              Parallel defines conditional branches that will be wired in -series through Channels and Subscriptions.

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -ParallelSpec - - -
              -

              Spec defines the desired state of the Parallel.

              -
              -
              - - - - - - - - - - - - - -
              -branches
              - - -[]ParallelBranch - - -
              -

              Branches is the list of Filter/Subscribers pairs.

              -
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -(Optional) -

              ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply is a Reference to where the result of a case Subscriber gets sent to -when the case does not have a Reply

              -
              -
              -status
              - - -ParallelStatus - - -
              -(Optional) -

              Status represents the current state of the Parallel. This data may be out of -date.

              -
              -

              ParallelBranch -

              -

              -(Appears on:ParallelSpec) -

              -

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -filter
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Filter is the expression guarding the branch

              -
              -subscriber
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -

              Subscriber receiving the event when the filter passes

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply is a Reference to where the result of Subscriber of this case gets sent to. -If not specified, sent the result to the Parallel Reply

              -
              -delivery
              - - -DeliverySpec - - -
              -(Optional) -

              Delivery is the delivery specification for events to the subscriber -This includes things like retries, DLQ, etc. -Needed for Roundtripping v1alpha1 <-> v1beta1.

              -
              -

              ParallelBranchStatus -

              -

              -(Appears on:ParallelStatus) -

              -

              -

              ParallelBranchStatus represents the current state of a Parallel branch

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -filterSubscriptionStatus
              - - -ParallelSubscriptionStatus - - -
              -

              FilterSubscriptionStatus corresponds to the filter subscription status.

              -
              -filterChannelStatus
              - - -ParallelChannelStatus - - -
              -

              FilterChannelStatus corresponds to the filter channel status.

              -
              -subscriberSubscriptionStatus
              - - -ParallelSubscriptionStatus - - -
              -

              SubscriptionStatus corresponds to the subscriber subscription status.

              -
              -

              ParallelChannelStatus -

              -

              -(Appears on:ParallelBranchStatus, ParallelStatus) -

              -

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -channel
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Channel is the reference to the underlying channel.

              -
              -ready
              - -knative.dev/pkg/apis.Condition - -
              -

              ReadyCondition indicates whether the Channel is ready or not.

              -
              -

              ParallelSpec -

              -

              -(Appears on:Parallel) -

              -

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -branches
              - - -[]ParallelBranch - - -
              -

              Branches is the list of Filter/Subscribers pairs.

              -
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -(Optional) -

              ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply is a Reference to where the result of a case Subscriber gets sent to -when the case does not have a Reply

              -
              -

              ParallelStatus -

              -

              -(Appears on:Parallel) -

              -

              -

              ParallelStatus represents the current state of a Parallel.

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -Status
              - - -knative.dev/pkg/apis/duck/v1.Status - - -
              -

              -(Members of Status are embedded into this type.) -

              -

              inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

              -
              -ingressChannelStatus
              - - -ParallelChannelStatus - - -
              -

              IngressChannelStatus corresponds to the ingress channel status.

              -
              -branchStatuses
              - - -[]ParallelBranchStatus - - -
              -

              BranchStatuses is an array of corresponding to branch statuses. -Matches the Spec.Branches array in the order.

              -
              -AddressStatus
              - - -knative.dev/pkg/apis/duck/v1.AddressStatus - - -
              -

              -(Members of AddressStatus are embedded into this type.) -

              -

              AddressStatus is the starting point to this Parallel. Sending to this -will target the first subscriber. -It generally has the form {channel}.{namespace}.svc.{cluster domain name}

              -
              -

              ParallelSubscriptionStatus -

              -

              -(Appears on:ParallelBranchStatus) -

              -

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -subscription
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Subscription is the reference to the underlying Subscription.

              -
              -ready
              - -knative.dev/pkg/apis.Condition - -
              -

              ReadyCondition indicates whether the Subscription is ready or not.

              -
              -

              Sequence -

              -

              -

              Sequence defines a sequence of Subscribers that will be wired in -series through Channels and Subscriptions.

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -SequenceSpec - - -
              -

              Spec defines the desired state of the Sequence.

              -
              -
              - - - - - - - - - - - - - -
              -steps
              - - -[]SequenceStep - - -
              -

              Steps is the list of Destinations (processors / functions) that will be called in the order -provided. Each step has its own delivery options

              -
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -(Optional) -

              ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply is a Reference to where the result of the last Subscriber gets sent to.

              -
              -
              -status
              - - -SequenceStatus - - -
              -(Optional) -

              Status represents the current state of the Sequence. This data may be out of -date.

              -
              -

              SequenceChannelStatus -

              -

              -(Appears on:SequenceStatus) -

              -

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -channel
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Channel is the reference to the underlying channel.

              -
              -ready
              - -knative.dev/pkg/apis.Condition - -
              -

              ReadyCondition indicates whether the Channel is ready or not.

              -
              -

              SequenceSpec -

              -

              -(Appears on:Sequence) -

              -

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -steps
              - - -[]SequenceStep - - -
              -

              Steps is the list of Destinations (processors / functions) that will be called in the order -provided. Each step has its own delivery options

              -
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -(Optional) -

              ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD -for the namespace (or cluster, in case there are no defaults for the namespace).

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply is a Reference to where the result of the last Subscriber gets sent to.

              -
              -

              SequenceStatus -

              -

              -(Appears on:Sequence) -

              -

              -

              SequenceStatus represents the current state of a Sequence.

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -Status
              - - -knative.dev/pkg/apis/duck/v1.Status - - -
              -

              -(Members of Status are embedded into this type.) -

              -

              inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

              -
              -subscriptionStatuses
              - - -[]SequenceSubscriptionStatus - - -
              -

              SubscriptionStatuses is an array of corresponding Subscription statuses. -Matches the Spec.Steps array in the order.

              -
              -channelStatuses
              - - -[]SequenceChannelStatus - - -
              -

              ChannelStatuses is an array of corresponding Channel statuses. -Matches the Spec.Steps array in the order.

              -
              -AddressStatus
              - - -knative.dev/pkg/apis/duck/v1.AddressStatus - - -
              -

              -(Members of AddressStatus are embedded into this type.) -

              -

              AddressStatus is the starting point to this Sequence. Sending to this -will target the first subscriber. -It generally has the form {channel}.{namespace}.svc.{cluster domain name}

              -
              -

              SequenceStep -

              -

              -(Appears on:SequenceSpec) -

              -

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -Destination
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -

              -(Members of Destination are embedded into this type.) -

              -

              Subscriber receiving the step event

              -
              -delivery
              - - -DeliverySpec - - -
              -(Optional) -

              Delivery is the delivery specification for events to the subscriber -This includes things like retries, DLQ, etc.

              -
              -

              SequenceSubscriptionStatus -

              -

              -(Appears on:SequenceStatus) -

              -

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -subscription
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Subscription is the reference to the underlying Subscription.

              -
              -ready
              - -knative.dev/pkg/apis.Condition - -
              -

              ReadyCondition indicates whether the Subscription is ready or not.

              -
              -
              -

              messaging.knative.dev/v1

              -

              -

              Package v1 is the v1 version of the API.

              -

              -Resource Types: - -

              Channel -

              -

              -

              Channel represents a generic Channel. It is normally used when we want a Channel, but don’t need a specific Channel implementation.

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -messaging.knative.dev/v1 - -
              -kind
              -string -
              Channel
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -ChannelSpec - - -
              -

              Spec defines the desired state of the Channel.

              -
              -
              - - - - - - - - - -
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -

              ChannelTemplate specifies which Channel CRD to use to create the CRD Channel backing this Channel. -This is immutable after creation. Normally this is set by the Channel defaulter, not directly by the user.

              -
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to ChannelableSpec

              -
              -
              -status
              - - -ChannelStatus - - -
              -(Optional) -

              Status represents the current state of the Channel. This data may be out of -date.

              -
              -

              InMemoryChannel -

              -

              -

              InMemoryChannel is a resource representing an in memory channel

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -messaging.knative.dev/v1 - -
              -kind
              -string -
              InMemoryChannel
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -InMemoryChannelSpec - - -
              -

              Spec defines the desired state of the Channel.

              -
              -
              - - - - - -
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to Duck type Channelable.

              -
              -
              -status
              - - -InMemoryChannelStatus - - -
              -(Optional) -

              Status represents the current state of the Channel. This data may be out of -date.

              -
              -

              Subscription -

              -

              -

              Subscription routes events received on a Channel to a DNS name and -corresponds to the subscriptions.channels.knative.dev CRD.

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -messaging.knative.dev/v1 - -
              -kind
              -string -
              Subscription
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -SubscriptionSpec - - -
              -
              -
              - - - - - - - - - - - - - - - - - -
              -channel
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Reference to a channel that will be used to create the subscription -You can specify only the following fields of the ObjectReference: -- Kind -- APIVersion -- Name -The resource pointed by this ObjectReference must meet the -contract to the ChannelableSpec duck type. If the resource does not -meet this contract it will be reflected in the Subscription’s status.

              -

              This field is immutable. We have no good answer on what happens to -the events that are currently in the channel being consumed from -and what the semantics there should be. For now, you can always -delete the Subscription and recreate it to point to a different -channel, giving the user more control over what semantics should -be used (drain the channel first, possibly have events dropped, -etc.)

              -
              -subscriber
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Subscriber is reference to (optional) function for processing events. -Events from the Channel will be delivered here and replies are -sent to a Destination as specified by the Reply.

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply specifies (optionally) how to handle events returned from -the Subscriber target.

              -
              -delivery
              - - -DeliverySpec - - -
              -(Optional) -

              Delivery configuration

              -
              -
              -status
              - - -SubscriptionStatus - - -
              -
              -

              ChannelDefaulter -

              -

              -

              ChannelDefaulter sets the default Channel CRD and Arguments on Channels that do not -specify any implementation.

              -

              -

              ChannelSpec -

              -

              -(Appears on:Channel) -

              -

              -

              ChannelSpec defines which subscribers have expressed interest in receiving events from this Channel. -It also defines the ChannelTemplate to use in order to create the CRD Channel backing this Channel.

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -

              ChannelTemplate specifies which Channel CRD to use to create the CRD Channel backing this Channel. -This is immutable after creation. Normally this is set by the Channel defaulter, not directly by the user.

              -
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to ChannelableSpec

              -
              -

              ChannelStatus -

              -

              -(Appears on:Channel) -

              -

              -

              ChannelStatus represents the current state of a Channel.

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -ChannelableStatus
              - - -ChannelableStatus - - -
              -

              -(Members of ChannelableStatus are embedded into this type.) -

              -

              Channel conforms to ChannelableStatus

              -
              -channel
              - - -knative.dev/pkg/apis/duck/v1.KReference - - -
              -

              Channel is an KReference to the Channel CRD backing this Channel.

              -
              -

              ChannelTemplateSpec -

              -

              -(Appears on:ParallelSpec, SequenceSpec, ChannelSpec) -

              -

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -spec
              - -k8s.io/apimachinery/pkg/runtime.RawExtension - -
              -(Optional) -

              Spec defines the Spec to use for each channel created. Passed -in verbatim to the Channel CRD as Spec section.

              -
              -
              - -
              -
              -

              InMemoryChannelSpec -

              -

              -(Appears on:InMemoryChannel) -

              -

              -

              InMemoryChannelSpec defines which subscribers have expressed interest in -receiving events from this InMemoryChannel. -arguments for a Channel.

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to Duck type Channelable.

              -
              -

              InMemoryChannelStatus -

              -

              -(Appears on:InMemoryChannel) -

              -

              -

              ChannelStatus represents the current state of a Channel.

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -ChannelableStatus
              - - -ChannelableStatus - - -
              -

              -(Members of ChannelableStatus are embedded into this type.) -

              -

              Channel conforms to Duck type Channelable.

              -
              -

              SubscriptionSpec -

              -

              -(Appears on:Subscription) -

              -

              -

              SubscriptionSpec specifies the Channel for incoming events, a Subscriber target -for processing those events and where to put the result of the processing. Only -From (where the events are coming from) is always required. You can optionally -only Process the events (results in no output events) by leaving out the Result. -You can also perform an identity transformation on the incoming events by leaving -out the Subscriber and only specifying Result.

              -

              The following are all valid specifications: -channel –[subscriber]–> reply -Sink, no outgoing events: -channel – subscriber -no-op function (identity transformation): -channel –> reply

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -channel
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Reference to a channel that will be used to create the subscription -You can specify only the following fields of the ObjectReference: -- Kind -- APIVersion -- Name -The resource pointed by this ObjectReference must meet the -contract to the ChannelableSpec duck type. If the resource does not -meet this contract it will be reflected in the Subscription’s status.

              -

              This field is immutable. We have no good answer on what happens to -the events that are currently in the channel being consumed from -and what the semantics there should be. For now, you can always -delete the Subscription and recreate it to point to a different -channel, giving the user more control over what semantics should -be used (drain the channel first, possibly have events dropped, -etc.)

              -
              -subscriber
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Subscriber is reference to (optional) function for processing events. -Events from the Channel will be delivered here and replies are -sent to a Destination as specified by the Reply.

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply specifies (optionally) how to handle events returned from -the Subscriber target.

              -
              -delivery
              - - -DeliverySpec - - -
              -(Optional) -

              Delivery configuration

              -
              -

              SubscriptionStatus -

              -

              -(Appears on:Subscription) -

              -

              -

              SubscriptionStatus (computed) for a subscription

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -Status
              - - -knative.dev/pkg/apis/duck/v1.Status - - -
              -

              -(Members of Status are embedded into this type.) -

              -

              inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

              -
              -physicalSubscription
              - - -SubscriptionStatusPhysicalSubscription - - -
              -

              PhysicalSubscription is the fully resolved values that this Subscription represents.

              -
              -

              SubscriptionStatusPhysicalSubscription -

              -

              -(Appears on:SubscriptionStatus) -

              -

              -

              SubscriptionStatusPhysicalSubscription represents the fully resolved values for this -Subscription.

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -subscriberUri
              - - -knative.dev/pkg/apis.URL - - -
              -

              SubscriberURI is the fully resolved URI for spec.subscriber.

              -
              -replyUri
              - - -knative.dev/pkg/apis.URL - - -
              -

              ReplyURI is the fully resolved URI for the spec.reply.

              -
              -deadLetterSinkUri
              - - -knative.dev/pkg/apis.URL - - -
              -

              ReplyURI is the fully resolved URI for the spec.delivery.deadLetterSink.

              -
              -
              -

              messaging.knative.dev/v1beta1

              -

              -

              Package v1beta1 is the v1beta1 version of the API.

              -

              -Resource Types: - -

              Channel -

              -

              -

              Channel represents a generic Channel. It is normally used when we want a Channel, but don’t need a specific Channel implementation.

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -messaging.knative.dev/v1beta1 - -
              -kind
              -string -
              Channel
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -ChannelSpec - - -
              -

              Spec defines the desired state of the Channel.

              -
              -
              - - - - - - - - - -
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -

              ChannelTemplate specifies which Channel CRD to use to create the CRD Channel backing this Channel. -This is immutable after creation. Normally this is set by the Channel defaulter, not directly by the user.

              -
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to ChannelableSpec

              -
              -
              -status
              - - -ChannelStatus - - -
              -(Optional) -

              Status represents the current state of the Channel. This data may be out of -date.

              -
              -

              InMemoryChannel -

              -

              -

              InMemoryChannel is a resource representing an in memory channel

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -messaging.knative.dev/v1beta1 - -
              -kind
              -string -
              InMemoryChannel
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -(Optional) -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -InMemoryChannelSpec - - -
              -

              Spec defines the desired state of the Channel.

              -
              -
              - - - - - -
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to Duck type Channelable.

              -
              -
              -status
              - - -InMemoryChannelStatus - - -
              -(Optional) -

              Status represents the current state of the Channel. This data may be out of -date.

              -
              -

              Subscription -

              -

              -

              Subscription routes events received on a Channel to a DNS name and -corresponds to the subscriptions.channels.knative.dev CRD.

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -messaging.knative.dev/v1beta1 - -
              -kind
              -string -
              Subscription
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -SubscriptionSpec - - -
              -
              -
              - - - - - - - - - - - - - - - - - -
              -channel
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Reference to a channel that will be used to create the subscription -You can specify only the following fields of the ObjectReference: -- Kind -- APIVersion -- Name -The resource pointed by this ObjectReference must meet the -contract to the ChannelableSpec duck type. If the resource does not -meet this contract it will be reflected in the Subscription’s status.

              -

              This field is immutable. We have no good answer on what happens to -the events that are currently in the channel being consumed from -and what the semantics there should be. For now, you can always -delete the Subscription and recreate it to point to a different -channel, giving the user more control over what semantics should -be used (drain the channel first, possibly have events dropped, -etc.)

              -
              -subscriber
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Subscriber is reference to (optional) function for processing events. -Events from the Channel will be delivered here and replies are -sent to a Destination as specified by the Reply.

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply specifies (optionally) how to handle events returned from -the Subscriber target.

              -
              -delivery
              - - -DeliverySpec - - -
              -(Optional) -

              Delivery configuration

              -
              -
              -status
              - - -SubscriptionStatus - - -
              -
              -

              ChannelDefaulter -

              -

              -

              ChannelDefaulter sets the default Channel CRD and Arguments on Channels that do not -specify any implementation.

              -

              -

              ChannelSpec -

              -

              -(Appears on:Channel) -

              -

              -

              ChannelSpec defines which subscribers have expressed interest in receiving events from this Channel. -It also defines the ChannelTemplate to use in order to create the CRD Channel backing this Channel.

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -channelTemplate
              - - -ChannelTemplateSpec - - -
              -

              ChannelTemplate specifies which Channel CRD to use to create the CRD Channel backing this Channel. -This is immutable after creation. Normally this is set by the Channel defaulter, not directly by the user.

              -
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to ChannelableSpec

              -
              -

              ChannelStatus -

              -

              -(Appears on:Channel) -

              -

              -

              ChannelStatus represents the current state of a Channel.

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -ChannelableStatus
              - - -ChannelableStatus - - -
              -

              -(Members of ChannelableStatus are embedded into this type.) -

              -

              Channel conforms to ChannelableStatus

              -
              -channel
              - - -knative.dev/pkg/apis/duck/v1.KReference - - -
              -

              Channel is an KReference to the Channel CRD backing this Channel.

              -
              -

              ChannelTemplateSpec -

              -

              -(Appears on:ParallelSpec, SequenceSpec, ChannelSpec) -

              -

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -spec
              - -k8s.io/apimachinery/pkg/runtime.RawExtension - -
              -(Optional) -

              Spec defines the Spec to use for each channel created. Passed -in verbatim to the Channel CRD as Spec section.

              -
              -
              - -
              -
              -

              InMemoryChannelSpec -

              -

              -(Appears on:InMemoryChannel) -

              -

              -

              InMemoryChannelSpec defines which subscribers have expressed interest in -receiving events from this InMemoryChannel. -arguments for a Channel.

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -ChannelableSpec
              - - -ChannelableSpec - - -
              -

              -(Members of ChannelableSpec are embedded into this type.) -

              -

              Channel conforms to Duck type Channelable.

              -
              -

              InMemoryChannelStatus -

              -

              -(Appears on:InMemoryChannel) -

              -

              -

              ChannelStatus represents the current state of a Channel.

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -ChannelableStatus
              - - -ChannelableStatus - - -
              -

              -(Members of ChannelableStatus are embedded into this type.) -

              -

              Channel conforms to Duck type Channelable.

              -
              -

              SubscriptionSpec -

              -

              -(Appears on:Subscription) -

              -

              -

              SubscriptionSpec specifies the Channel for incoming events, a Subscriber target -for processing those events and where to put the result of the processing. Only -From (where the events are coming from) is always required. You can optionally -only Process the events (results in no output events) by leaving out the Result. -You can also perform an identity transformation on the incoming events by leaving -out the Subscriber and only specifying Result.

              -

              The following are all valid specifications: -channel –[subscriber]–> reply -Sink, no outgoing events: -channel – subscriber -no-op function (identity transformation): -channel –> reply

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -channel
              - - -Kubernetes core/v1.ObjectReference - - -
              -

              Reference to a channel that will be used to create the subscription -You can specify only the following fields of the ObjectReference: -- Kind -- APIVersion -- Name -The resource pointed by this ObjectReference must meet the -contract to the ChannelableSpec duck type. If the resource does not -meet this contract it will be reflected in the Subscription’s status.

              -

              This field is immutable. We have no good answer on what happens to -the events that are currently in the channel being consumed from -and what the semantics there should be. For now, you can always -delete the Subscription and recreate it to point to a different -channel, giving the user more control over what semantics should -be used (drain the channel first, possibly have events dropped, -etc.)

              -
              -subscriber
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Subscriber is reference to (optional) function for processing events. -Events from the Channel will be delivered here and replies are -sent to a Destination as specified by the Reply.

              -
              -reply
              - - -knative.dev/pkg/apis/duck/v1.Destination - - -
              -(Optional) -

              Reply specifies (optionally) how to handle events returned from -the Subscriber target.

              -
              -delivery
              - - -DeliverySpec - - -
              -(Optional) -

              Delivery configuration

              -
              -

              SubscriptionStatus -

              -

              -(Appears on:Subscription) -

              -

              -

              SubscriptionStatus (computed) for a subscription

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -Status
              - - -knative.dev/pkg/apis/duck/v1.Status - - -
              -

              -(Members of Status are embedded into this type.) -

              -

              inherits duck/v1 Status, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. -* Conditions - the latest available observations of a resource’s current state.

              -
              -physicalSubscription
              - - -SubscriptionStatusPhysicalSubscription - - -
              -

              PhysicalSubscription is the fully resolved values that this Subscription represents.

              -
              -

              SubscriptionStatusPhysicalSubscription -

              -

              -(Appears on:SubscriptionStatus) -

              -

              -

              SubscriptionStatusPhysicalSubscription represents the fully resolved values for this -Subscription.

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -subscriberUri
              - - -knative.dev/pkg/apis.URL - - -
              -

              SubscriberURI is the fully resolved URI for spec.subscriber.

              -
              -replyUri
              - - -knative.dev/pkg/apis.URL - - -
              -

              ReplyURI is the fully resolved URI for the spec.reply.

              -
              -deadLetterSinkUri
              - - -knative.dev/pkg/apis.URL - - -
              -

              ReplyURI is the fully resolved URI for the spec.delivery.deadLetterSink.

              -
              -
              -

              sources.knative.dev/v1

              -

              -

              Package v1 contains API Schema definitions for the sources v1 API group.

              -

              -Resource Types: - -

              ApiServerSource -

              -

              -

              ApiServerSource is the Schema for the apiserversources API

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -sources.knative.dev/v1 - -
              -kind
              -string -
              ApiServerSource
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -ApiServerSourceSpec - - -
              -
              -
              - - - - - - - - - - - - - - - - - - - - - -
              -SourceSpec
              - - -knative.dev/pkg/apis/duck/v1.SourceSpec - - -
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -resources
              - - -[]APIVersionKindSelector - - -
              -

              Resource are the resources this source will track and send related -lifecycle events from the Kubernetes ApiServer, with an optional label -selector to help filter.

              -
              -owner
              - - -APIVersionKind - - -
              -(Optional) -

              ResourceOwner is an additional filter to only track resources that are -owned by a specific resource type. If ResourceOwner matches Resources[n] -then Resources[n] is allowed to pass the ResourceOwner filter.

              -
              -mode
              - -string - -
              -(Optional) -

              EventMode controls the format of the event. -Reference sends a dataref event type for the resource under watch. -Resource send the full resource lifecycle event. -Defaults to Reference

              -
              -serviceAccountName
              - -string - -
              -(Optional) -

              ServiceAccountName is the name of the ServiceAccount to use to run this -source. Defaults to default if not set.

              -
              -
              -status
              - - -ApiServerSourceStatus - - -
              -
              -

              ContainerSource -

              -

              -

              ContainerSource is the Schema for the containersources API

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -sources.knative.dev/v1 - -
              -kind
              -string -
              ContainerSource
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -ContainerSourceSpec - - -
              -
              -
              - - - - - - - - - -
              -SourceSpec
              - - -knative.dev/pkg/apis/duck/v1.SourceSpec - - -
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -template
              - - -Kubernetes core/v1.PodTemplateSpec - - -
              -

              Template describes the pods that will be created

              -
              -
              -status
              - - -ContainerSourceStatus - - -
              -
              -

              SinkBinding -

              -

              -

              SinkBinding describes a Binding that is also a Source. -The sink (from the Source duck) is resolved to a URL and -then projected into the subject by augmenting the runtime -contract of the referenced containers to have a K_SINK -environment variable holding the endpoint to which to send -cloud events.

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -sources.knative.dev/v1 - -
              -kind
              -string -
              SinkBinding
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -SinkBindingSpec - - -
              -
              -
              - - - - - - - - - -
              -SourceSpec
              - - -knative.dev/pkg/apis/duck/v1.SourceSpec - - -
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -BindingSpec
              - - -knative.dev/pkg/apis/duck/v1.BindingSpec - - -
              -

              -(Members of BindingSpec are embedded into this type.) -

              -

              inherits duck/v1 BindingSpec, which currently provides: -* Subject - Subject references the resource(s) whose “runtime contract” -should be augmented by Binding implementations.

              -
              -
              -status
              - - -SinkBindingStatus - - -
              -
              -

              APIVersionKind -

              -

              -(Appears on:ApiServerSourceSpec) -

              -

              -

              APIVersionKind is an APIVersion and Kind tuple.

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              - -string - -
              -

              APIVersion - the API version of the resource to watch.

              -
              -kind
              - -string - -
              -

              Kind of the resource to watch. -More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              -
              -

              APIVersionKindSelector -

              -

              -(Appears on:ApiServerSourceSpec) -

              -

              -

              APIVersionKindSelector is an APIVersion Kind tuple with a LabelSelector.

              -

              - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              - -string - -
              -

              APIVersion - the API version of the resource to watch.

              -
              -kind
              - -string - -
              -

              Kind of the resource to watch. -More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              -
              -selector
              - - -Kubernetes meta/v1.LabelSelector - - -
              -(Optional) -

              LabelSelector filters this source to objects to those resources pass the -label selector. -More info: http://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

              -
              -

              ApiServerSourceSpec -

              -

              -(Appears on:ApiServerSource) -

              -

              -

              ApiServerSourceSpec defines the desired state of ApiServerSource

              -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -SourceSpec
              - - -knative.dev/pkg/apis/duck/v1.SourceSpec - - -
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -resources
              - - -[]APIVersionKindSelector - - -
              -

              Resource are the resources this source will track and send related -lifecycle events from the Kubernetes ApiServer, with an optional label -selector to help filter.

              -
              -owner
              - - -APIVersionKind - - -
              -(Optional) -

              ResourceOwner is an additional filter to only track resources that are -owned by a specific resource type. If ResourceOwner matches Resources[n] -then Resources[n] is allowed to pass the ResourceOwner filter.

              -
              -mode
              - -string - -
              -(Optional) -

              EventMode controls the format of the event. -Reference sends a dataref event type for the resource under watch. -Resource send the full resource lifecycle event. -Defaults to Reference

              -
              -serviceAccountName
              - -string - -
              -(Optional) -

              ServiceAccountName is the name of the ServiceAccount to use to run this -source. Defaults to default if not set.

              -
              -

              ApiServerSourceStatus -

              -

              -(Appears on:ApiServerSource) -

              -

              -

              ApiServerSourceStatus defines the observed state of ApiServerSource

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -SourceStatus
              - - -knative.dev/pkg/apis/duck/v1.SourceStatus - - -
              -

              -(Members of SourceStatus are embedded into this type.) -

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              -
              -

              ContainerSourceSpec -

              -

              -(Appears on:ContainerSource) -

              -

              -

              ContainerSourceSpec defines the desired state of ContainerSource

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -SourceSpec
              - - -knative.dev/pkg/apis/duck/v1.SourceSpec - - -
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -template
              - - -Kubernetes core/v1.PodTemplateSpec - - -
              -

              Template describes the pods that will be created

              -
              -

              ContainerSourceStatus -

              -

              -(Appears on:ContainerSource) -

              -

              -

              ContainerSourceStatus defines the observed state of ContainerSource

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -SourceStatus
              - - -knative.dev/pkg/apis/duck/v1.SourceStatus - - -
              -

              -(Members of SourceStatus are embedded into this type.) -

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              -
              -

              SinkBindingSpec -

              -

              -(Appears on:SinkBinding) -

              -

              -

              SinkBindingSpec holds the desired state of the SinkBinding (from the client).

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -SourceSpec
              - - -knative.dev/pkg/apis/duck/v1.SourceSpec - - -
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -BindingSpec
              - - -knative.dev/pkg/apis/duck/v1.BindingSpec - - -
              -

              -(Members of BindingSpec are embedded into this type.) -

              -

              inherits duck/v1 BindingSpec, which currently provides: -* Subject - Subject references the resource(s) whose “runtime contract” -should be augmented by Binding implementations.

              -
              -

              SinkBindingStatus -

              -

              -(Appears on:SinkBinding) -

              -

              -

              SinkBindingStatus communicates the observed state of the SinkBinding (from the controller).

              -

              - - - - - - - - - - - - - -
              FieldDescription
              -SourceStatus
              - - -knative.dev/pkg/apis/duck/v1.SourceStatus - - -
              -

              -(Members of SourceStatus are embedded into this type.) -

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              -
              -
              -

              sources.knative.dev/v1alpha1

              -

              -

              Package v1alpha1 contains API Schema definitions for the sources v1alpha1 API group

              -

              -Resource Types: - -

              ApiServerSource -

              -

              -

              ApiServerSource is the Schema for the apiserversources API

              -

              - - - - - - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              -string
              - -sources.knative.dev/v1alpha1 - -
              -kind
              -string -
              ApiServerSource
              -metadata
              - - -Kubernetes meta/v1.ObjectMeta - - -
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
              -spec
              - - -ApiServerSourceSpec - - -
              -
              -
              - - - - - - - - + +
              -resources
              - - -[]ApiServerResource - - -
              -

              Resources is the list of resources to watch

              -
              -serviceAccountName
              - -string - -
              -(Optional) -

              ServiceAccountName is the name of the ServiceAccount to use to run this -source.

              +
              +

              Subscriber receiving the event when the filter passes

              -sink
              +reply
              - -knative.dev/pkg/apis/duck/v1beta1.Destination + +knative.dev/pkg/apis/duck/v1.Destination
              (Optional) -

              Sink is a reference to an object that will resolve to a domain name to use as the sink.

              +

              Reply is a Reference to where the result of Subscriber of this case gets sent to. +If not specified, sent the result to the Parallel Reply

              -ceOverrides
              +delivery
              - -knative.dev/pkg/apis/duck/v1.CloudEventOverrides + +DeliverySpec
              (Optional) -

              CloudEventOverrides defines overrides to control the output format and -modifications of the event sent to the sink.

              +

              Delivery is the delivery specification for events to the subscriber +This includes things like retries, DLQ, etc.

              +

              ParallelBranchStatus +

              +

              +(Appears on:ParallelStatus) +

              +
              +

              ParallelBranchStatus represents the current state of a Parallel branch

              +
              + + + + + + + + - -
              FieldDescription
              -owner
              +filterSubscriptionStatus
              - -APIVersionKind + +ParallelSubscriptionStatus
              -(Optional) -

              ResourceOwner is an additional filter to only track resources that are -owned by a specific resource type. If ResourceOwner matches Resources[n] -then Resources[n] is allowed to pass the ResourceOwner filter.

              +

              FilterSubscriptionStatus corresponds to the filter subscription status.

              -mode
              +filterChannelStatus
              -string + +ParallelChannelStatus +
              -

              Mode is the mode the receive adapter controller runs under: Ref or Resource. -Ref sends only the reference to the resource. -Resource send the full resource.

              -
              +

              FilterChannelStatus corresponds to the filter channel status.

              -status
              +subscriberSubscriptionStatus
              - -ApiServerSourceStatus + +ParallelSubscriptionStatus
              +

              SubscriptionStatus corresponds to the subscriber subscription status.

              -

              SinkBinding +

              ParallelChannelStatus

              -

              SinkBinding describes a Binding that is also a Source. -The sink (from the Source duck) is resolved to a URL and -then projected into the subject by augmenting the runtime -contract of the referenced containers to have a K_SINK -environment variable holding the endpoint to which to send -cloud events.

              +(Appears on:ParallelBranchStatus, ParallelStatus)

              +
              +
              @@ -6930,103 +2412,98 @@ cloud events.

              - - - - - - - - + + +
              -apiVersion
              -string
              - -sources.knative.dev/v1alpha1 - -
              -kind
              -string -
              SinkBinding
              -metadata
              +channel
              - -Kubernetes meta/v1.ObjectMeta + +Kubernetes core/v1.ObjectReference
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. +

              Channel is the reference to the underlying channel.

              -spec
              +ready
              - -SinkBindingSpec - +knative.dev/pkg/apis.Condition
              -
              -
              +

              ReadyCondition indicates whether the Channel is ready or not.

              +
              +

              ParallelSpec +

              +

              +(Appears on:Parallel) +

              +
              +
              + + + + + + + - -
              FieldDescription
              -SourceSpec
              +branches
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +[]ParallelBranch
              -

              -(Members of SourceSpec are embedded into this type.) -

              +

              Branches is the list of Filter/Subscribers pairs.

              -BindingSpec
              +channelTemplate
              - -knative.dev/pkg/apis/duck/v1alpha1.BindingSpec + +ChannelTemplateSpec
              -

              -(Members of BindingSpec are embedded into this type.) -

              -
              +(Optional) +

              ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD +for the namespace (or cluster, in case there are no defaults for the namespace).

              -status
              +reply
              - -SinkBindingStatus + +knative.dev/pkg/apis/duck/v1.Destination +(Optional) +

              Reply is a Reference to where the result of a case Subscriber gets sent to +when the case does not have a Reply

              -

              ApiServerResource +

              ParallelStatus

              -(Appears on:ApiServerSourceSpec) -

              -

              -

              ApiServerResource defines the resource to watch

              +(Appears on:Parallel)

              +
              +

              ParallelStatus represents the current state of a Parallel.

              +
              @@ -7037,80 +2514,116 @@ SinkBindingStatus + + + + + +
              -apiVersion
              +Status
              -string + +knative.dev/pkg/apis/duck/v1.Status +
              -

              API version of the resource to watch.

              +

              +(Members of Status are embedded into this type.) +

              +

              inherits duck/v1 Status, which currently provides: +* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. +* Conditions - the latest available observations of a resource’s current state.

              -kind
              +ingressChannelStatus
              -string + +ParallelChannelStatus +
              -

              Kind of the resource to watch. -More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              +

              IngressChannelStatus corresponds to the ingress channel status.

              -labelSelector
              +branchStatuses
              - -Kubernetes meta/v1.LabelSelector + +[]ParallelBranchStatus
              -

              LabelSelector restricts this source to objects with the selected labels -More info: http://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

              +

              BranchStatuses is an array of corresponding to branch statuses. +Matches the Spec.Branches array in the order.

              +
              +AddressStatus
              + + +knative.dev/pkg/apis/duck/v1.AddressStatus + + +
              +

              +(Members of AddressStatus are embedded into this type.) +

              +

              AddressStatus is the starting point to this Parallel. Sending to this +will target the first subscriber. +It generally has the form {channel}.{namespace}.svc.{cluster domain name}

              +

              ParallelSubscriptionStatus +

              +

              +(Appears on:ParallelBranchStatus) +

              +
              +
              + + + + + + + +
              FieldDescription
              -controllerSelector
              +subscription
              - -Kubernetes meta/v1.OwnerReference + +Kubernetes core/v1.ObjectReference
              -

              ControllerSelector restricts this source to objects with a controlling owner reference of the specified kind. -Only apiVersion and kind are used. Both are optional. -Deprecated: Per-resource owner refs will no longer be supported in -v1alpha2, please use Spec.Owner as a GKV.

              +

              Subscription is the reference to the underlying Subscription.

              -controller
              +ready
              -bool +knative.dev/pkg/apis.Condition
              -

              If true, send an event referencing the object controlling the resource -Deprecated: Per-resource controller flag will no longer be supported in -v1alpha2, please use Spec.Owner as a GKV.

              +

              ReadyCondition indicates whether the Subscription is ready or not.

              -

              ApiServerSourceSpec +

              Sequence

              -

              -(Appears on:ApiServerSource) -

              -

              -

              ApiServerSourceSpec defines the desired state of ApiServerSource

              -

              +
              +

              Sequence defines a sequence of Subscribers that will be wired in +series through Channels and Subscriptions.

              +
              @@ -7121,98 +2634,103 @@ v1alpha2, please use Spec.Owner as a GKV.

              - +

              Spec defines the desired state of the Sequence.

              +
              +
              +
              -resources
              +metadata
              - -[]ApiServerResource + +Kubernetes meta/v1.ObjectMeta
              -

              Resources is the list of resources to watch

              +(Optional) +Refer to the Kubernetes API documentation for the fields of the +metadata field.
              -serviceAccountName
              +spec
              -string + +SequenceSpec +
              -(Optional) -

              ServiceAccountName is the name of the ServiceAccount to use to run this -source.

              -
              + +
              -sink
              +steps
              - -knative.dev/pkg/apis/duck/v1beta1.Destination + +[]SequenceStep
              -(Optional) -

              Sink is a reference to an object that will resolve to a domain name to use as the sink.

              +

              Steps is the list of Destinations (processors / functions) that will be called in the order +provided. Each step has its own delivery options

              -ceOverrides
              +channelTemplate
              - -knative.dev/pkg/apis/duck/v1.CloudEventOverrides + +ChannelTemplateSpec
              (Optional) -

              CloudEventOverrides defines overrides to control the output format and -modifications of the event sent to the sink.

              +

              ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD +for the namespace (or cluster, in case there are no defaults for the namespace).

              -owner
              +reply
              - -APIVersionKind + +knative.dev/pkg/apis/duck/v1.Destination
              (Optional) -

              ResourceOwner is an additional filter to only track resources that are -owned by a specific resource type. If ResourceOwner matches Resources[n] -then Resources[n] is allowed to pass the ResourceOwner filter.

              +

              Reply is a Reference to where the result of the last Subscriber gets sent to.

              +
              -mode
              +status
              -string + +SequenceStatus + -

              Mode is the mode the receive adapter controller runs under: Ref or Resource. -Ref sends only the reference to the resource. -Resource send the full resource.

              +(Optional) +

              Status represents the current state of the Sequence. This data may be out of +date.

              -

              ApiServerSourceStatus +

              SequenceChannelStatus

              -(Appears on:ApiServerSource) -

              -

              -

              ApiServerSourceStatus defines the observed state of ApiServerSource

              +(Appears on:SequenceStatus)

              +
              +
              @@ -7223,36 +2741,37 @@ string + + + +
              -SourceStatus
              +channel
              - -knative.dev/pkg/apis/duck/v1.SourceStatus + +Kubernetes core/v1.ObjectReference
              -

              -(Members of SourceStatus are embedded into this type.) -

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              +

              Channel is the reference to the underlying channel.

              +
              +ready
              + +knative.dev/pkg/apis.Condition + +
              +

              ReadyCondition indicates whether the Channel is ready or not.

              -

              SinkBindingSpec +

              SequenceSpec

              -(Appears on:SinkBinding) -

              -

              -

              SinkBindingSpec holds the desired state of the SinkBinding (from the client).

              +(Appears on:Sequence)

              +
              +
              @@ -7263,89 +2782,57 @@ Source.

              - -
              -SourceSpec
              +steps
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +[]SequenceStep
              -

              -(Members of SourceSpec are embedded into this type.) -

              +

              Steps is the list of Destinations (processors / functions) that will be called in the order +provided. Each step has its own delivery options

              -BindingSpec
              +channelTemplate
              - -knative.dev/pkg/apis/duck/v1alpha1.BindingSpec + +ChannelTemplateSpec
              -

              -(Members of BindingSpec are embedded into this type.) -

              +(Optional) +

              ChannelTemplate specifies which Channel CRD to use. If left unspecified, it is set to the default Channel CRD +for the namespace (or cluster, in case there are no defaults for the namespace).

              -

              SinkBindingStatus -

              -

              -(Appears on:SinkBinding) -

              -

              -

              SinkBindingStatus communicates the observed state of the SinkBinding (from the controller).

              -

              - - - - - - - -
              FieldDescription
              -SourceStatus
              +reply
              - -knative.dev/pkg/apis/duck/v1.SourceStatus + +knative.dev/pkg/apis/duck/v1.Destination
              -

              -(Members of SourceStatus are embedded into this type.) -

              +(Optional) +

              Reply is a Reference to where the result of the last Subscriber gets sent to.

              -
              -

              sources.knative.dev/v1alpha2

              -

              -

              Package v1alpha2 contains API Schema definitions for the sources v1beta1 API group

              -

              -Resource Types: - -

              ApiServerSource +

              SequenceStatus

              -

              ApiServerSource is the Schema for the apiserversources API

              +(Appears on:Sequence)

              +
              +

              SequenceStatus represents the current state of a Sequence.

              +
              @@ -7356,149 +2843,176 @@ Resource Types: - - - - +
              +
              +
              -apiVersion
              -string
              - -sources.knative.dev/v1alpha2 - +Status
              + + +knative.dev/pkg/apis/duck/v1.Status + +
              -kind
              -string +

              +(Members of Status are embedded into this type.) +

              +

              inherits duck/v1 Status, which currently provides: +* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. +* Conditions - the latest available observations of a resource’s current state.

              ApiServerSource
              -metadata
              +subscriptionStatuses
              - -Kubernetes meta/v1.ObjectMeta + +[]SequenceSubscriptionStatus
              -Refer to the Kubernetes API documentation for the fields of the -metadata field. +

              SubscriptionStatuses is an array of corresponding Subscription statuses. +Matches the Spec.Steps array in the order.

              -spec
              +channelStatuses
              - -ApiServerSourceSpec + +[]SequenceChannelStatus
              -
              -
              - +

              ChannelStatuses is an array of corresponding Channel statuses. +Matches the Spec.Steps array in the order.

              + + + + +
              -SourceSpec
              +address
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +knative.dev/pkg/apis/duck/v1.Addressable
              +(Optional) +

              Address is the starting point to this Sequence. Sending to this +will target the first subscriber. +It generally has the form {channel}.{namespace}.svc.{cluster domain name}

              +
              +

              SequenceStep +

              -(Members of SourceSpec are embedded into this type.) +(Appears on:SequenceSpec)

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              + + + + + + + +
              FieldDescription
              -resources
              +Destination
              - -[]APIVersionKindSelector + +knative.dev/pkg/apis/duck/v1.Destination
              -

              Resource are the resources this source will track and send related -lifecycle events from the Kubernetes ApiServer, with an optional label -selector to help filter.

              +

              +(Members of Destination are embedded into this type.) +

              +

              Subscriber receiving the step event

              -owner
              +delivery
              - -APIVersionKind + +DeliverySpec
              (Optional) -

              ResourceOwner is an additional filter to only track resources that are -owned by a specific resource type. If ResourceOwner matches Resources[n] -then Resources[n] is allowed to pass the ResourceOwner filter.

              +

              Delivery is the delivery specification for events to the subscriber +This includes things like retries, DLQ, etc.

              +

              SequenceSubscriptionStatus +

              +

              +(Appears on:SequenceStatus) +

              +
              +
              + + - - + + + + - - -
              -mode
              - -string - -
              -(Optional) -

              EventMode controls the format of the event. -Reference sends a dataref event type for the resource under watch. -Resource send the full resource lifecycle event. -Defaults to Reference

              -
              FieldDescription
              -serviceAccountName
              +subscription
              -string + +Kubernetes core/v1.ObjectReference +
              -(Optional) -

              ServiceAccountName is the name of the ServiceAccount to use to run this -source. Defaults to default if not set.

              -
              - + +

              Subscription is the reference to the underlying Subscription.

              + -status
              +ready
              - -ApiServerSourceStatus - +knative.dev/pkg/apis.Condition +

              ReadyCondition indicates whether the Subscription is ready or not.

              -

              ContainerSource +
              +

              messaging.knative.dev/v1

              +
              +

              Package v1 is the v1 version of the API.

              +
              +Resource Types: + +

              Channel

              -

              -

              ContainerSource is the Schema for the containersources API

              -

              +
              +

              Channel represents a generic Channel. It is normally used when we want a +Channel, but do not need a specific Channel implementation.

              +
              @@ -7513,7 +3027,7 @@ ApiServerSourceStatus string @@ -7522,7 +3036,7 @@ sources.knative.dev/v1alpha2 kind
              string - + @@ -7542,46 +3057,46 @@ Refer to the Kubernetes API documentation for the fields of the
              -sources.knative.dev/v1alpha2 +messaging.knative.dev/v1
              ContainerSourceChannel
              @@ -7534,6 +3048,7 @@ Kubernetes meta/v1.ObjectMeta +(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field. spec
              - -ContainerSourceSpec + +ChannelSpec
              +

              Spec defines the desired state of the Channel.



              -SourceSpec
              +channelTemplate
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +ChannelTemplateSpec
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              +(Optional) +

              ChannelTemplate specifies which Channel CRD to use to create the CRD +Channel backing this Channel. This is immutable after creation. +Normally this is set by the Channel defaulter, not directly by the user.

              -template
              +ChannelableSpec
              - -Kubernetes core/v1.PodTemplateSpec + +ChannelableSpec
              -

              Template describes the pods that will be created

              +

              +(Members of ChannelableSpec are embedded into this type.) +

              +

              Channel conforms to ChannelableSpec

              @@ -7591,21 +3106,24 @@ Kubernetes core/v1.PodTemplateSpec
              status
              - -ContainerSourceStatus + +ChannelStatus
              +(Optional) +

              Status represents the current state of the Channel. This data may be out +of date.

              -

              PingSource +

              InMemoryChannel

              -

              -

              PingSource is the Schema for the PingSources API.

              -

              +
              +

              InMemoryChannel is a resource representing an in memory channel

              +
              @@ -7620,7 +3138,7 @@ ContainerSourceStatus string @@ -7629,7 +3147,7 @@ sources.knative.dev/v1alpha2 kind
              string - + @@ -7649,59 +3168,30 @@ Refer to the Kubernetes API documentation for the fields of the
              -sources.knative.dev/v1alpha2 +messaging.knative.dev/v1
              PingSourceInMemoryChannel
              @@ -7641,6 +3159,7 @@ Kubernetes meta/v1.ObjectMeta +(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field. spec
              - -PingSourceSpec + +InMemoryChannelSpec
              +

              Spec defines the desired state of the Channel.



              - - - - - - - -
              -SourceSpec
              +ChannelableSpec
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +ChannelableSpec

              -(Members of SourceSpec are embedded into this type.) +(Members of ChannelableSpec are embedded into this type.)

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -schedule
              - -string - -
              -(Optional) -

              Schedule is the cronjob schedule. Defaults to * * * * *.

              -
              -jsonData
              - -string - -
              -(Optional) -

              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”.

              +

              Channel conforms to Duck type Channelable.

              @@ -7711,26 +3201,25 @@ to “application/json”.

              status
              - -PingSourceStatus + +InMemoryChannelStatus
              +(Optional) +

              Status represents the current state of the Channel. This data may be out of +date.

              -

              SinkBinding +

              Subscription

              -

              -

              SinkBinding describes a Binding that is also a Source. -The sink (from the Source duck) is resolved to a URL and -then projected into the subject by augmenting the runtime -contract of the referenced containers to have a K_SINK -environment variable holding the endpoint to which to send -cloud events.

              -

              +
              +

              Subscription routes events received on a Channel to a DNS name and +corresponds to the subscriptions.channels.knative.dev CRD.

              +
              @@ -7745,7 +3234,7 @@ cloud events.

              string @@ -7754,7 +3243,7 @@ sources.knative.dev/v1alpha2 kind
              string - + @@ -7785,165 +3274,109 @@ SinkBindingSpec
              -sources.knative.dev/v1alpha2 +messaging.knative.dev/v1
              SinkBindingSubscription
              @@ -7774,8 +3263,8 @@ Refer to the Kubernetes API documentation for the fields of the spec
              - -SinkBindingSpec + +SubscriptionSpec
              - -
              -SourceSpec
              +channel
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +Kubernetes core/v1.ObjectReference
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              +

              Reference to a channel that will be used to create the subscription +You can specify only the following fields of the ObjectReference: +- Kind +- APIVersion +- Name +The resource pointed by this ObjectReference must meet the +contract to the ChannelableSpec duck type. If the resource does not +meet this contract it will be reflected in the Subscription’s status.

              +

              This field is immutable. We have no good answer on what happens to +the events that are currently in the channel being consumed from +and what the semantics there should be. For now, you can always +delete the Subscription and recreate it to point to a different +channel, giving the user more control over what semantics should +be used (drain the channel first, possibly have events dropped, +etc.)

              -BindingSpec
              +subscriber
              - -knative.dev/pkg/apis/duck/v1alpha1.BindingSpec + +knative.dev/pkg/apis/duck/v1.Destination
              -

              -(Members of BindingSpec are embedded into this type.) -

              -

              inherits duck/v1alpha1 BindingSpec, which currently provides: -* Subject - Subject references the resource(s) whose “runtime contract” -should be augmented by Binding implementations.

              -
              +(Optional) +

              Subscriber is reference to (optional) function for processing events. +Events from the Channel will be delivered here and replies are +sent to a Destination as specified by the Reply.

              -status
              +reply
              - -SinkBindingStatus + +knative.dev/pkg/apis/duck/v1.Destination - - - - -

              APIVersionKind -

              -

              -(Appears on:ApiServerSourceSpec, ApiServerSourceSpec) -

              -

              -

              APIVersionKind is an APIVersion and Kind tuple.

              -

              - - - - - - - - - - - - - - - - - -
              FieldDescription
              -apiVersion
              - -string - -
              -

              APIVersion - the API version of the resource to watch.

              -
              -kind
              - -string - -
              -

              Kind of the resource to watch. -More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              -
              -

              APIVersionKindSelector -

              -

              -(Appears on:ApiServerSourceSpec) -

              -

              -

              APIVersionKindSelector is an APIVersion Kind tuple with a LabelSelector.

              -

              - - - - - - - - - - - + +
              FieldDescription
              -apiVersion
              - -string - -
              -

              APIVersion - the API version of the resource to watch.

              +(Optional) +

              Reply specifies (optionally) how to handle events returned from +the Subscriber target.

              -kind
              +delivery
              -string + +DeliverySpec +
              -

              Kind of the resource to watch. -More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

              +(Optional) +

              Delivery configuration

              +
              -selector
              +status
              - -Kubernetes meta/v1.LabelSelector + +SubscriptionStatus -(Optional) -

              LabelSelector filters this source to objects to those resources pass the -label selector. -More info: http://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

              -

              ApiServerSourceSpec +

              ChannelDefaulter +

              +
              +

              ChannelDefaulter sets the default Channel CRD and Arguments on Channels that do not +specify any implementation.

              +
              +

              ChannelSpec

              -(Appears on:ApiServerSource) -

              -

              -

              ApiServerSourceSpec defines the desired state of ApiServerSource

              +(Appears on:Channel)

              +
              +

              ChannelSpec defines which subscribers have expressed interest in receiving +events from this Channel. It also defines the ChannelTemplate to use in +order to create the CRD Channel backing this Channel.

              +
              @@ -7954,93 +3387,93 @@ More info: -knative.dev/pkg/apis/duck/v1.SourceSpec + +ChannelTemplateSpec + +
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              +(Optional) +

              ChannelTemplate specifies which Channel CRD to use to create the CRD +Channel backing this Channel. This is immutable after creation. +Normally this is set by the Channel defaulter, not directly by the user.

              -resources
              +ChannelableSpec
              - -[]APIVersionKindSelector + +ChannelableSpec
              -

              Resource are the resources this source will track and send related -lifecycle events from the Kubernetes ApiServer, with an optional label -selector to help filter.

              +

              +(Members of ChannelableSpec are embedded into this type.) +

              +

              Channel conforms to ChannelableSpec

              +

              ChannelStatus +

              +

              +(Appears on:Channel) +

              +
              +

              ChannelStatus represents the current state of a Channel.

              +
              + + - - + + + +
              -owner
              - - -APIVersionKind - - -
              -(Optional) -

              ResourceOwner is an additional filter to only track resources that are -owned by a specific resource type. If ResourceOwner matches Resources[n] -then Resources[n] is allowed to pass the ResourceOwner filter.

              -
              FieldDescription
              -mode
              +ChannelableStatus
              -string + +ChannelableStatus +
              -(Optional) -

              EventMode controls the format of the event. -Reference sends a dataref event type for the resource under watch. -Resource send the full resource lifecycle event. -Defaults to Reference

              +

              +(Members of ChannelableStatus are embedded into this type.) +

              +

              Channel conforms to ChannelableStatus

              -serviceAccountName
              +channel
              -string + +knative.dev/pkg/apis/duck/v1.KReference +
              (Optional) -

              ServiceAccountName is the name of the ServiceAccount to use to run this -source. Defaults to default if not set.

              +

              Channel is an KReference to the Channel CRD backing this Channel.

              -

              ApiServerSourceStatus +

              ChannelTemplateSpec

              -(Appears on:ApiServerSource) -

              -

              -

              ApiServerSourceStatus defines the observed state of ApiServerSource

              +(Appears on:ParallelSpec, SequenceSpec, ChannelSpec)

              +
              +
              @@ -8051,36 +3484,33 @@ source. Defaults to default if not set.

              -SourceStatus
              +spec
              - -knative.dev/pkg/apis/duck/v1.SourceStatus - +k8s.io/apimachinery/pkg/runtime.RawExtension
              -

              -(Members of SourceStatus are embedded into this type.) -

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              +(Optional) +

              Spec defines the Spec to use for each channel created. Passed +in verbatim to the Channel CRD as Spec section.

              +
              +
              + +
              -

              ContainerSourceSpec +

              InMemoryChannelSpec

              -(Appears on:ContainerSource) -

              -

              -

              ContainerSourceSpec defines the desired state of ContainerSource

              +(Appears on:InMemoryChannel)

              +
              +

              InMemoryChannelSpec defines which subscribers have expressed interest in +receiving events from this InMemoryChannel. +arguments for a Channel.

              +
              @@ -8091,47 +3521,30 @@ Source.

              - - - -
              -SourceSpec
              +ChannelableSpec
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +ChannelableSpec

              -(Members of SourceSpec are embedded into this type.) +(Members of ChannelableSpec are embedded into this type.)

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              -
              -template
              - - -Kubernetes core/v1.PodTemplateSpec - - -
              -

              Template describes the pods that will be created

              +

              Channel conforms to Duck type Channelable.

              -

              ContainerSourceStatus +

              InMemoryChannelStatus

              -(Appears on:ContainerSource) -

              -

              -

              ContainerSourceStatus defines the observed state of ContainerSource

              +(Appears on:InMemoryChannel)

              +
              +

              ChannelStatus represents the current state of a Channel.

              +
              @@ -8142,36 +3555,41 @@ Kubernetes core/v1.PodTemplateSpec
              -SourceStatus
              +ChannelableStatus
              - -knative.dev/pkg/apis/duck/v1.SourceStatus + +ChannelableStatus

              -(Members of SourceStatus are embedded into this type.) +(Members of ChannelableStatus are embedded into this type.)

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              +

              Channel conforms to Duck type Channelable.

              -

              PingSourceSpec +

              SubscriptionSpec

              -(Appears on:PingSource) -

              -

              -

              PingSourceSpec defines the desired state of the PingSource.

              +(Appears on:Subscription)

              +
              +

              SubscriptionSpec specifies the Channel for incoming events, a Subscriber target +for processing those events and where to put the result of the processing. Only +From (where the events are coming from) is always required. You can optionally +only Process the events (results in no output events) by leaving out the Result. +You can also perform an identity transformation on the incoming events by leaving +out the Subscriber and only specifying Result.

              +

              The following are all valid specifications: +channel –[subscriber]–> reply +Sink, no outgoing events: +channel – subscriber +no-op function (identity transformation): +channel –> reply

              +
              @@ -8182,60 +3600,86 @@ Source.

              + + + +
              -SourceSpec
              +channel
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +Kubernetes core/v1.ObjectReference
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              +

              Reference to a channel that will be used to create the subscription +You can specify only the following fields of the ObjectReference: +- Kind +- APIVersion +- Name +The resource pointed by this ObjectReference must meet the +contract to the ChannelableSpec duck type. If the resource does not +meet this contract it will be reflected in the Subscription’s status.

              +

              This field is immutable. We have no good answer on what happens to +the events that are currently in the channel being consumed from +and what the semantics there should be. For now, you can always +delete the Subscription and recreate it to point to a different +channel, giving the user more control over what semantics should +be used (drain the channel first, possibly have events dropped, +etc.)

              -schedule
              +subscriber
              -string + +knative.dev/pkg/apis/duck/v1.Destination + + +
              +(Optional) +

              Subscriber is reference to (optional) function for processing events. +Events from the Channel will be delivered here and replies are +sent to a Destination as specified by the Reply.

              +
              +reply
              + + +knative.dev/pkg/apis/duck/v1.Destination +
              (Optional) -

              Schedule is the cronjob schedule. Defaults to * * * * *.

              +

              Reply specifies (optionally) how to handle events returned from +the Subscriber target.

              -jsonData
              +delivery
              -string + +DeliverySpec +
              (Optional) -

              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”.

              +

              Delivery configuration

              -

              PingSourceStatus +

              SubscriptionStatus

              -(Appears on:PingSource) -

              -

              -

              PingSourceStatus defines the observed state of PingSource.

              +(Appears on:Subscription)

              +
              +

              SubscriptionStatus (computed) for a subscription

              +
              @@ -8246,36 +3690,46 @@ to “application/json”.

              + + + +
              -SourceStatus
              +Status
              - -knative.dev/pkg/apis/duck/v1.SourceStatus + +knative.dev/pkg/apis/duck/v1.Status

              -(Members of SourceStatus are embedded into this type.) +(Members of Status are embedded into this type.)

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              +

              inherits duck/v1 Status, which currently provides: +* ObservedGeneration - the ‘Generation’ of the Service that was last processed by the controller. +* Conditions - the latest available observations of a resource’s current state.

              +
              +physicalSubscription
              + + +SubscriptionStatusPhysicalSubscription + + +
              +

              PhysicalSubscription is the fully resolved values that this Subscription represents.

              -

              SinkBindingSpec +

              SubscriptionStatusPhysicalSubscription

              -(Appears on:SinkBinding) -

              -

              -

              SinkBindingSpec holds the desired state of the SinkBinding (from the client).

              +(Appears on:SubscriptionStatus)

              +
              +

              SubscriptionStatusPhysicalSubscription represents the fully resolved values for this +Subscription.

              +
              @@ -8286,104 +3740,68 @@ Source.

              - -
              -SourceSpec
              +subscriberUri
              - -knative.dev/pkg/apis/duck/v1.SourceSpec + +knative.dev/pkg/apis.URL
              -

              -(Members of SourceSpec are embedded into this type.) -

              -

              inherits duck/v1 SourceSpec, which currently provides: -* Sink - a reference to an object that will resolve to a domain name or -a URI directly to use as the sink. -* CloudEventOverrides - defines overrides to control the output format -and modifications of the event sent to the sink.

              +(Optional) +

              SubscriberURI is the fully resolved URI for spec.subscriber.

              -BindingSpec
              +replyUri
              - -knative.dev/pkg/apis/duck/v1alpha1.BindingSpec + +knative.dev/pkg/apis.URL
              -

              -(Members of BindingSpec are embedded into this type.) -

              -

              inherits duck/v1alpha1 BindingSpec, which currently provides: -* Subject - Subject references the resource(s) whose “runtime contract” -should be augmented by Binding implementations.

              +(Optional) +

              ReplyURI is the fully resolved URI for the spec.reply.

              -

              SinkBindingStatus -

              -

              -(Appears on:SinkBinding) -

              -

              -

              SinkBindingStatus communicates the observed state of the SinkBinding (from the controller).

              -

              - - - - - - - -
              FieldDescription
              -SourceStatus
              +deadLetterSinkUri
              - -knative.dev/pkg/apis/duck/v1.SourceStatus + +knative.dev/pkg/apis.URL
              -

              -(Members of SourceStatus are embedded into this type.) -

              -

              inherits duck/v1 SourceStatus, which currently provides: -* ObservedGeneration - the ‘Generation’ of the Service that was last -processed by the controller. -* Conditions - the latest available observations of a resource’s current -state. -* SinkURI - the current active sink URI that has been configured for the -Source.

              +(Optional) +

              ReplyURI is the fully resolved URI for the spec.delivery.deadLetterSink.


              -

              sources.knative.dev/v1beta1

              -

              -

              Package v1beta1 contains API Schema definitions for the sources v1beta1 API group.

              -

              +

              sources.knative.dev/v1

              +
              +

              Package v1 contains API Schema definitions for the sources v1 API group.

              +
              Resource Types: -

              ApiServerSource +

              ApiServerSource

              -

              +

              ApiServerSource is the Schema for the apiserversources API

              -

              +
              @@ -8398,7 +3816,7 @@ Resource Types: string @@ -8427,7 +3845,7 @@ Refer to the Kubernetes API documentation for the fields of the
              -sources.knative.dev/v1beta1 +sources.knative.dev/v1
              spec
              - + ApiServerSourceSpec @@ -8460,7 +3878,7 @@ and modifications of the event sent to the sink.

              resources
              - + []APIVersionKindSelector @@ -8475,7 +3893,7 @@ selector to help filter.

              owner
              - + APIVersionKind @@ -8522,7 +3940,7 @@ source. Defaults to default if not set.

              status
              - + ApiServerSourceStatus @@ -8532,11 +3950,11 @@ ApiServerSourceStatus
              -

              ContainerSource +

              ContainerSource

              -

              +

              ContainerSource is the Schema for the containersources API

              -

              +
              @@ -8551,7 +3969,7 @@ ApiServerSourceStatus string @@ -8580,7 +3998,7 @@ Refer to the Kubernetes API documentation for the fields of the
              -sources.knative.dev/v1beta1 +sources.knative.dev/v1
              spec
              - + ContainerSourceSpec @@ -8629,7 +4047,7 @@ Kubernetes core/v1.PodTemplateSpec
              status
              - + ContainerSourceStatus @@ -8639,11 +4057,11 @@ ContainerSourceStatus
              -

              PingSource +

              PingSource

              -

              +

              PingSource is the Schema for the PingSources API.

              -

              +
              @@ -8658,7 +4076,7 @@ ContainerSourceStatus string @@ -8687,7 +4105,7 @@ Refer to the Kubernetes API documentation for the fields of the @@ -8744,16 +4162,40 @@ List of valid timezone values: + PingSourceStatus @@ -8773,16 +4215,16 @@ PingSourceStatus
              -sources.knative.dev/v1beta1 +sources.knative.dev/v1
              spec
              - + PingSourceSpec @@ -8725,7 +4143,7 @@ string
              (Optional) -

              Schedule is the cronjob schedule. Defaults to * * * * *.

              +

              Schedule is the cron schedule. Defaults to * * * * *.

              -

              SinkBinding +

              SinkBinding

              -

              +

              SinkBinding describes a Binding that is also a Source. The sink (from the Source duck) is resolved to a URL and then projected into the subject by augmenting the runtime contract of the referenced containers to have a K_SINK environment variable holding the endpoint to which to send cloud events.

              -

              +
              @@ -8797,7 +4239,7 @@ cloud events.

              string @@ -8826,7 +4268,7 @@ Refer to the Kubernetes API documentation for the fields of the @@ -8868,7 +4310,7 @@ knative.dev/pkg/apis/duck/v1beta1.BindingSpec

              (Members of BindingSpec are embedded into this type.)

              -

              inherits duck/v1beta1 BindingSpec, which currently provides: +

              inherits duck/v1 BindingSpec, which currently provides: * Subject - Subject references the resource(s) whose “runtime contract” should be augmented by Binding implementations.

              @@ -8880,7 +4322,7 @@ should be augmented by Binding implementations.

              -sources.knative.dev/v1beta1 +sources.knative.dev/v1
              spec
              - + SinkBindingSpec @@ -8859,8 +4301,8 @@ and modifications of the event sent to the sink.

              BindingSpec
              - -knative.dev/pkg/apis/duck/v1beta1.BindingSpec + +knative.dev/pkg/apis/duck/v1.BindingSpec
              status
              - + SinkBindingStatus @@ -8890,14 +4332,14 @@ SinkBindingStatus
              -

              APIVersionKind +

              APIVersionKind

              -(Appears on:ApiServerSourceSpec) +(Appears on:ApiServerSourceSpec)

              -

              +

              APIVersionKind is an APIVersion and Kind tuple.

              -

              +
              @@ -8931,14 +4373,14 @@ More info: APIVersionKindSelector +

              APIVersionKindSelector

              -(Appears on:ApiServerSourceSpec) +(Appears on:ApiServerSourceSpec)

              -

              +

              APIVersionKindSelector is an APIVersion Kind tuple with a LabelSelector.

              -

              +
              @@ -8988,14 +4430,14 @@ More info: ApiServerSourceSpec +

              ApiServerSourceSpec

              -(Appears on:ApiServerSource) +(Appears on:ApiServerSource)

              -

              +

              ApiServerSourceSpec defines the desired state of ApiServerSource

              -

              +
              @@ -9028,7 +4470,7 @@ and modifications of the event sent to the sink.

              resources
              - + []APIVersionKindSelector @@ -9043,7 +4485,7 @@ selector to help filter.

              owner
              - + APIVersionKind @@ -9085,14 +4527,14 @@ source. Defaults to default if not set.

              -

              ApiServerSourceStatus +

              ApiServerSourceStatus

              -(Appears on:ApiServerSource) +(Appears on:ApiServerSource)

              -

              +

              ApiServerSourceStatus defines the observed state of ApiServerSource

              -

              +
              @@ -9125,14 +4567,14 @@ Source.

              -

              ContainerSourceSpec +

              ContainerSourceSpec

              -(Appears on:ContainerSource) +(Appears on:ContainerSource)

              -

              +

              ContainerSourceSpec defines the desired state of ContainerSource

              -

              +
              @@ -9176,14 +4618,14 @@ Kubernetes core/v1.PodTemplateSpec
              -

              ContainerSourceStatus +

              ContainerSourceStatus

              -(Appears on:ContainerSource) +(Appears on:ContainerSource)

              -

              +

              ContainerSourceStatus defines the observed state of ContainerSource

              -

              +
              @@ -9216,14 +4658,14 @@ Source.

              -

              PingSourceSpec +

              PingSourceSpec

              -(Appears on:PingSource) +(Appears on:PingSource)

              -

              +

              PingSourceSpec defines the desired state of the PingSource.

              -

              +
              @@ -9261,7 +4703,7 @@ string @@ -9280,28 +4722,52 @@ List of valid timezone values: PingSourceStatus +

              PingSourceStatus

              -(Appears on:PingSource) +(Appears on:PingSource)

              -

              +

              PingSourceStatus defines the observed state of PingSource.

              -

              +
              (Optional) -

              Schedule is the cronjob schedule. Defaults to * * * * *.

              +

              Schedule is the cron schedule. Defaults to * * * * *.

              @@ -9334,14 +4800,14 @@ Source.

              -

              SinkBindingSpec +

              SinkBindingSpec

              -(Appears on:SinkBinding) +(Appears on:SinkBinding)

              -

              +

              SinkBindingSpec holds the desired state of the SinkBinding (from the client).

              -

              +
              @@ -9374,8 +4840,8 @@ and modifications of the event sent to the sink.

              @@ -9383,21 +4849,21 @@ knative.dev/pkg/apis/duck/v1beta1.BindingSpec

              (Members of BindingSpec are embedded into this type.)

              -

              inherits duck/v1beta1 BindingSpec, which currently provides: +

              inherits duck/v1 BindingSpec, which currently provides: * Subject - Subject references the resource(s) whose “runtime contract” should be augmented by Binding implementations.

              BindingSpec
              - -knative.dev/pkg/apis/duck/v1beta1.BindingSpec + +knative.dev/pkg/apis/duck/v1.BindingSpec
              -

              SinkBindingStatus +

              SinkBindingStatus

              -(Appears on:SinkBinding) +(Appears on:SinkBinding)

              -

              +

              SinkBindingStatus communicates the observed state of the SinkBinding (from the controller).

              -

              +
              @@ -9432,18 +4898,18 @@ Source.


              sources.knative.dev/v1beta2

              -

              +

              Package v1beta2 contains API Schema definitions for the sources v1beta2 API group.

              -

              +
              Resource Types:

              PingSource

              -

              +

              PingSource is the Schema for the PingSources API.

              -

              +
              @@ -9602,9 +5068,9 @@ PingSourceStatus

              (Appears on:PingSource)

              -

              +

              PingSourceSpec defines the desired state of the PingSource.

              -

              +
              @@ -9704,9 +5170,9 @@ Mutually exclusive with Data.

              (Appears on:PingSource)

              -

              +

              PingSourceStatus defines the observed state of PingSource.

              -

              +
              @@ -9742,5 +5208,5 @@ Source.


              Generated with gen-crd-api-reference-docs -on git commit 8f35d4254. +on git commit 200e54c6c.

              diff --git a/docs/reference/api/serving.md b/docs/reference/api/serving.md index 5806aa8a964..86e175363de 100644 --- a/docs/reference/api/serving.md +++ b/docs/reference/api/serving.md @@ -11,21 +11,21 @@

              autoscaling.internal.knative.dev/v1alpha1

              -

              +

              Package v1alpha1 contains the Autoscaling v1alpha1 API types.

              -

              +
              Resource Types:

              PodAutoscaler

              -

              +

              PodAutoscaler is a Knative abstraction that encapsulates the interface by which Knative components instantiate autoscalers. This definition is an abstraction that may be backed by multiple definitions. For more information, see the Knative Pluggability presentation: https://docs.google.com/presentation/d/10KWynvAJYuOEWy69VBa6bHJVCqIsz1TNdEKosNvcpPY/edit

              -

              +
              @@ -158,9 +158,9 @@ PodAutoscalerStatus

              Metric

              -

              +

              Metric represents a resource to configure the metric collector with.

              -

              +
              @@ -260,9 +260,9 @@ MetricStatus

              (Appears on:Metric)

              -

              +

              MetricSpec contains all values a metric collector needs to operate.

              -

              +
              @@ -315,9 +315,9 @@ string

              (Appears on:Metric)

              -

              +

              MetricStatus reflects the status of metric collection for this specific entity.

              -

              +
              @@ -348,9 +348,9 @@ knative.dev/pkg/apis/duck/v1.Status

              (Appears on:PodAutoscaler)

              -

              +

              PodAutoscalerSpec holds the desired state of the PodAutoscaler (from the client).

              -

              +
              @@ -422,9 +422,9 @@ knative.dev/networking/pkg/apis/networking.ProtocolType

              (Appears on:PodAutoscaler)

              -

              +

              PodAutoscalerStatus communicates the observed state of the PodAutoscaler (from the controller).

              -

              +
              @@ -498,13 +498,13 @@ int32

              PodScalable

              -

              +

              PodScalable is a duck type that the resources referenced by the PodAutoscaler’s ScaleTargetRef must implement. They must also implement the /scale sub-resource for use with /scale based implementations (e.g. HPA), but this further constrains the shape the referenced resources may take.

              -

              +
              @@ -596,10 +596,10 @@ PodScalableStatus

              (Appears on:PodScalable)

              -

              +

              PodScalableSpec is the specification for the desired state of a PodScalable (or at least our shared portion).

              -

              +
              @@ -649,10 +649,10 @@ Kubernetes core/v1.PodTemplateSpec

              (Appears on:PodScalable)

              -

              +

              PodScalableStatus is the observed state of a PodScalable (or at least our shared portion).

              -

              +
              @@ -674,14 +674,14 @@ int32

              ReachabilityType -(string alias)

              +(string alias)

              (Appears on:PodAutoscalerSpec)

              -

              +

              ReachabilityType is the enumeration type for the different states of reachability to the ScaleTarget of a PodAutoscaler

              -

              +
              @@ -703,9 +703,9 @@ Used when the reachability cannot be determined, eg. during activation.


              serving.knative.dev/v1

              -

              +

              Package v1 contains the Serving v1 API types.

              -

              +
              Resource Types:

              Configuration

              -

              +

              Configuration represents the “floating HEAD” of a linear history of Revisions. Users create new Revisions by updating the Configuration’s spec. The “latest created” revision’s name is available under status, as is the “latest ready” revision’s name. See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#configuration

              -

              +
              @@ -813,12 +813,12 @@ ConfigurationStatus

              Revision

              -

              +

              Revision is an immutable snapshot of code and configuration. A revision references a container image. Revisions are created by updates to a Configuration.

              See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#revision

              -

              +
              @@ -937,14 +937,14 @@ RevisionStatus

              Route

              -

              +

              Route is responsible for configuring ingress over a collection of Revisions. Some of the Revisions a Route distributes traffic over may be specified by referencing the Configuration responsible for creating them; in these cases the Route is additionally responsible for monitoring the Configuration for “latest ready revision” changes, and smoothly rolling out latest revisions. See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#route

              -

              +
              @@ -1036,7 +1036,7 @@ RouteStatus

              Service

              -

              +

              Service acts as a top-level container that manages a Route and Configuration which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which @@ -1047,7 +1047,7 @@ orchestrates ReplicaSets), and its usage is optional but recommended.

              The Service’s controller will track the statuses of its owned Configuration and Route, reflecting their statuses and conditions as its own.

              See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#service

              -

              +
              @@ -1160,9 +1160,9 @@ ServiceStatus

              (Appears on:Configuration, ServiceSpec)

              -

              +

              ConfigurationSpec holds the desired state of the Configuration (from the client).

              -

              +
              @@ -1192,9 +1192,9 @@ RevisionTemplateSpec

              (Appears on:Configuration)

              -

              +

              ConfigurationStatus communicates the observed state of the Configuration (from the controller).

              -

              +
              @@ -1240,11 +1240,11 @@ ConfigurationStatusFields

              (Appears on:ConfigurationStatus, ServiceStatus)

              -

              +

              ConfigurationStatusFields holds the fields of Configuration’s status that are not generally shared. This is defined separately and inlined so that other types can readily consume these fields via duck typing.

              -

              +
              @@ -1286,9 +1286,9 @@ Configuration. It might not be ready yet, for that use LatestReadyRevisionName.<

              (Appears on:RevisionStatus)

              -

              +

              ContainerStatus holds the information of container name and image digest value

              -

              +
              @@ -1324,9 +1324,9 @@ string

              (Appears on:Revision, RevisionTemplateSpec)

              -

              +

              RevisionSpec holds the desired state of the Revision (from the client).

              -

              +
              @@ -1386,9 +1386,9 @@ layer will wait for a request delivered to a container to begin replying

              (Appears on:Revision)

              -

              +

              RevisionStatus communicates the observed state of the Revision (from the controller).

              -

              +
              @@ -1513,10 +1513,10 @@ int32

              (Appears on:ConfigurationSpec)

              -

              +

              RevisionTemplateSpec describes the data a revision should have when created from a template. Based on: https://github.com/kubernetes/api/blob/e771f807/core/v1/types.go#L3179-L3190

              -

              +
              @@ -1608,9 +1608,9 @@ layer will wait for a request delivered to a container to begin replying

              (Appears on:Route, ServiceSpec)

              -

              +

              RouteSpec holds the desired state of the Route (from the client).

              -

              +
              @@ -1641,9 +1641,9 @@ revisions and configurations.

              (Appears on:Route)

              -

              +

              RouteStatus communicates the observed state of the Route (from the controller).

              -

              +
              @@ -1689,11 +1689,11 @@ RouteStatusFields

              (Appears on:RouteStatus, ServiceStatus)

              -

              +

              RouteStatusFields holds the fields of Route’s status that are not generally shared. This is defined separately and inlined so that other types can readily consume these fields via duck typing.

              -

              +
              @@ -1751,10 +1751,10 @@ LatestReadyRevisionName that we last observed.

              RoutingState -(string alias)

              -

              +(string alias) +

              RoutingState represents states of a revision with regards to serving a route.

              -

              +
              @@ -1784,7 +1784,7 @@ and is scaled down, but may be rapidly pinned to a route to be made active again

              (Appears on:Service)

              -

              +

              ServiceSpec represents the configuration for the Service object. A Service’s specification is the union of the specifications for a Route and Configuration. The Service restricts what can be expressed in these @@ -1792,7 +1792,7 @@ fields, e.g. the Route must reference the provided Configuration; however, these limitations also enable friendlier defaulting, e.g. Route never needs a Configuration name, and may be defaulted to the appropriate “run latest” spec.

              -

              +
              @@ -1843,9 +1843,9 @@ defaults).

              (Appears on:Service)

              -

              +

              ServiceStatus represents the Status stanza of the Service resource.

              -

              +
              @@ -1910,9 +1910,9 @@ specific to RouteStatus.

              (Appears on:RouteSpec, RouteStatusFields)

              -

              +

              TrafficTarget holds a single entry of the routing table for a Route.

              -

              +
              @@ -2018,21 +2018,21 @@ a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)<

              serving.knative.dev/v1alpha1

              -

              +

              Package v1alpha1 contains the v1alpha1 versions of the serving apis. Api versions allow the api contract for a resource to be changed while keeping backward compatibility by support multiple concurrent versions of the same resource

              -

              +
              Resource Types:

              DomainMapping

              -

              +

              DomainMapping is a mapping from a custom hostname to an Addressable.

              -

              +
              @@ -2132,9 +2132,9 @@ More info: CannotConvertError -

              +

              CannotConvertError is returned when a field cannot be converted.

              -

              +
              @@ -2170,9 +2170,9 @@ string

              (Appears on:DomainMapping)

              -

              +

              DomainMappingSpec describes the DomainMapping the user wishes to exist.

              -

              +
              @@ -2207,9 +2207,9 @@ Knative Routes, and by Kubernetes Services.

              (Appears on:DomainMapping)

              -

              +

              DomainMappingStatus describes the current state of the DomainMapping.

              -

              +
              @@ -2266,5 +2266,5 @@ knative.dev/pkg/apis/duck/v1.Addressable

              Generated with gen-crd-api-reference-docs -on git commit 813aa6596. +on git commit 35efb3108.

              From 0978bf45ca2cefea9ad3b8779db3b9bc7f4779b9 Mon Sep 17 00:00:00 2001 From: Sameer Vohra Date: Wed, 19 May 2021 14:16:16 -0500 Subject: [PATCH 35/38] Update serving/_index.md with network layer option (#3585) * Update _index.md [#3117] Add ref for contour * Update docs/serving/_index.md Co-authored-by: Ashleigh Brennan Co-authored-by: Omer B Co-authored-by: Ashleigh Brennan --- docs/serving/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/serving/_index.md b/docs/serving/_index.md index 6d9b5d9c37d..2842e9c4a8b 100644 --- a/docs/serving/_index.md +++ b/docs/serving/_index.md @@ -11,7 +11,7 @@ The Knative Serving project provides middleware components that enable: - Rapid deployment of serverless containers. - Autoscaling including scaling pods down to zero. -- Support for multiple networking layers such as Ambassador, Courier, Gloo, Istio, and Kong, for integration into existing environments. +- Support for multiple networking layers such as Ambassador, Contour, Kourier, Gloo, Istio, and Kong, for integration into existing environments. - Point-in-time snapshots of deployed code and configurations. ## Serving resources From 3fbb90c79307e00f6032a023100bffe82c224446 Mon Sep 17 00:00:00 2001 From: "Mahdi K. Fard" Date: Wed, 19 May 2021 23:46:23 +0430 Subject: [PATCH 36/38] Fix typos in the sample yaml file (#3616) --- docs/serving/samples/knative-routing-go/routing.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/serving/samples/knative-routing-go/routing.yaml b/docs/serving/samples/knative-routing-go/routing.yaml index a5858abde73..fb4eb5f4afd 100644 --- a/docs/serving/samples/knative-routing-go/routing.yaml +++ b/docs/serving/samples/knative-routing-go/routing.yaml @@ -45,8 +45,8 @@ spec: - uri: prefix: "/login" rewrite: - # Rewrite the original host header to the host header of Search service - # in order to redirect requests to Search service. + # Rewrite the original host header to the host header of Login service + # in order to redirect requests to Login service. authority: login-service.default.example.com route: # Basically here we redirect the request to the cluster entry again with From 725f3b1023df8feec27f2677132d09a972fec8ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lena=20Br=C3=BCder?= Date: Wed, 19 May 2021 21:26:16 +0200 Subject: [PATCH 37/38] EventType is not yet part of the v1 eventing API (#3576) --- docs/eventing/event-registry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/eventing/event-registry.md b/docs/eventing/event-registry.md index 8171676fbac..c3f1e802446 100644 --- a/docs/eventing/event-registry.md +++ b/docs/eventing/event-registry.md @@ -60,7 +60,7 @@ kubectl get eventtype dev.knative.source.github.push-34cnb -o yaml Omitting irrelevant fields: ```yaml -apiVersion: eventing.knative.dev/v1 +apiVersion: eventing.knative.dev/v1beta1 kind: EventType metadata: name: dev.knative.source.github.push-34cnb From d68df6cd7d4770fd429be21968811a7d7b3150f7 Mon Sep 17 00:00:00 2001 From: Omer B Date: Wed, 19 May 2021 15:27:42 -0400 Subject: [PATCH 38/38] Remaining changes from now closed PRs --- docs/getting-started/contributing/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/contributing/contributing.md b/docs/getting-started/contributing/contributing.md index 59ec83cf711..650506ef03f 100644 --- a/docs/getting-started/contributing/contributing.md +++ b/docs/getting-started/contributing/contributing.md @@ -44,7 +44,7 @@ Once you have installed Material for MkDocs and all of the extensions, head over --8<-- "docs/snippets/links/main-docs-branch-link.md" and clone the repo. -In your terminal, find your way over to the location of the cloned repo. Once you are in the main folder (.../docs) and run: +In your terminal, find your way over to the location of the cloned repo. Once you are in the main folder and run: === "Local Preview" ```