docs/archived/v0.23-docs/install/index.xml

3299 lines
258 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Knative Installing Knative</title>
<link>https://knative.dev/v0.23-docs/install/</link>
<description>Recent content in Installing Knative on Knative</description>
<generator>Hugo -- gohugo.io</generator>
<atom:link href="https://knative.dev/v0.23-docs/install/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>V0.23-Docs: Prerequisites</title>
<link>https://knative.dev/v0.23-docs/install/prerequisites/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/prerequisites/</guid>
<description>
&lt;p&gt;Before installing Knative, you must meet the following prerequisites:&lt;/p&gt;
&lt;h2 id=&#34;system-requirements&#34;&gt;System requirements&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;For prototyping purposes&lt;/strong&gt;, Knative will work on most local deployments of Kubernetes.
For example, you can use a local, one-node cluster that has 2 CPU and 4GB of memory.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For production purposes&lt;/strong&gt;, it is recommended that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you have only one node in your cluster, you will need at least 6 CPUs, 6 GB of memory, and 30 GB of disk storage.&lt;/li&gt;
&lt;li&gt;If you have multiple nodes in your cluster, for each node you will need at least 2 CPUs, 4 GB of memory, and 20 GB of disk storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;!--TODO: Verify these requirements--&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The system requirements provided are recommendations only.
The requirements for your installation may vary, depending on whether you use optional components, such as a networking layer.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before installation, you must meet the following prerequisites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have a cluster that uses Kubernetes v1.18 or newer.&lt;/li&gt;
&lt;li&gt;You have installed the &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;&gt;&lt;code&gt;kubectl&lt;/code&gt; CLI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Your Kubernetes cluster must have access to the internet, since Kubernetes needs to be able to fetch images. (To pull from a private registry, see &lt;a href=&#34;https://knative.dev/docs/serving/deploying/private-registry/&#34;&gt;Deploying images from a private container registry&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps-install-knative-serving-and-eventing&#34;&gt;Next Steps: Install Knative Serving and Eventing&lt;/h2&gt;
&lt;p&gt;You can install the Serving component, Eventing component, or both on your cluster. If you&amp;rsquo;re planning on installing both, &lt;strong&gt;we recommend starting with Knative Serving.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../install-serving-with-yaml&#34;&gt;Installing Knative Serving using YAML files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../install-eventing-with-yaml&#34;&gt;Installing Knative Eventing using YAML files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Installing Knative Serving using YAML files</title>
<link>https://knative.dev/v0.23-docs/install/install-serving-with-yaml/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/install-serving-with-yaml/</guid>
<description>
&lt;p&gt;This topic describes how to install Knative Serving by applying YAML files using the &lt;code&gt;kubectl&lt;/code&gt; CLI.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before installation, you must meet the prerequisites.
See &lt;a href=&#34;../prerequisites&#34;&gt;Knative Prerequisites&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;install-the-serving-component&#34;&gt;Install the Serving component&lt;/h2&gt;
&lt;p&gt;To install the serving component:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the required custom resources:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/serving/releases/download/v0.23.0/serving-crds.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the core components of Knative Serving:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/serving/releases/download/v0.23.0/serving-core.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For information about the YAML files in the Knative Serving and Eventing releases, see
&lt;a href=&#34;../installation-files&#34;&gt;Installation files&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;install-a-networking-layer&#34;&gt;Install a networking layer&lt;/h2&gt;
&lt;p&gt;The networking layer in Knative Serving is responsible for incoming requests and the associated
responses for your Knative installation.
Knative enables you to choose a networking layer and then translates Knatives resources
into the specific configuration for your chosen networking solution.&lt;/p&gt;
&lt;p&gt;You can choose a networking layer based on what you are familiar with, what is
already installed on your cluster, or what is suitable for your use case.
For prototyping purposes, if you have no preference for a networking layer, choose Kourier.
For production use cases, Istio is a common choice.&lt;/p&gt;
&lt;p&gt;The tabs below expand to show instructions for installing a networking layer.
Follow the procedure for the networking layer of your choice:&lt;/p&gt;
&lt;!-- TODO: Link to document/diagram describing what is a networking layer. --&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;serving_networking&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-0&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-0&#34; aria-selected=&#34;true&#34;&gt;Ambassador&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-1&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-1&#34; aria-selected=&#34;true&#34;&gt;Contour&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-2&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-2&#34; aria-selected=&#34;true&#34;&gt;Gloo&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-3-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-3&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-3&#34; aria-selected=&#34;true&#34;&gt;Istio&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-4-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-4&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-4&#34; aria-selected=&#34;true&#34;&gt;Kong&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item active&#34;&gt;
&lt;a class=&#34;nav-link active&#34; id=&#34;serving_networking-5-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-5&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-5&#34; aria-selected=&#34;true&#34;&gt;Kourier&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-0-tab&#34;&gt;
&lt;p&gt;The following commands install Ambassador and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a namespace to install Ambassador in:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl create namespace ambassador
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install Ambassador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply --namespace ambassador &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; -f https://getambassador.io/yaml/ambassador/ambassador-crds.yaml &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; -f https://getambassador.io/yaml/ambassador/ambassador-rbac.yaml &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; -f https://getambassador.io/yaml/ambassador/ambassador-service.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Give Ambassador the required permissions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch clusterrolebinding ambassador -p &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;subjects&amp;#34;:[{&amp;#34;kind&amp;#34;: &amp;#34;ServiceAccount&amp;#34;, &amp;#34;name&amp;#34;: &amp;#34;ambassador&amp;#34;, &amp;#34;namespace&amp;#34;: &amp;#34;ambassador&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enable Knative support in Ambassador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl &lt;span style=&#34;color:#204a87&#34;&gt;set&lt;/span&gt; env --namespace ambassador deployments/ambassador &lt;span style=&#34;color:#000&#34;&gt;AMBASSADOR_KNATIVE_SUPPORT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Ambassador by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch configmap/config-network &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --namespace knative-serving &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;ingress.class&amp;#34;:&amp;#34;ambassador.ingress.networking.knative.dev&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace ambassador get service ambassador
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-1-tab&#34;&gt;
&lt;p&gt;The following commands install Contour and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install a properly configured Contour:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/net-contour/releases/download/v0.23.0/contour.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- TODO(https://github.com/knative-sandbox/net-contour/issues/11): We need a guide on how to use/modify a pre-existing install. --&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Knative Contour controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/net-contour/releases/download/v0.23.0/net-contour.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Contour by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch configmap/config-network &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --namespace knative-serving &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;ingress.class&amp;#34;:&amp;#34;contour.ingress.networking.knative.dev&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace contour-external get service envoy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-2-tab&#34;&gt;
&lt;p&gt;&lt;em&gt;For a detailed guide on Gloo integration, see
&lt;a href=&#34;https://docs.solo.io/gloo/latest/installation/knative/&#34;&gt;Installing Gloo for Knative&lt;/a&gt;
in the Gloo documentation.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The following commands install Gloo and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Make sure &lt;code&gt;glooctl&lt;/code&gt; is installed (version 1.3.x and higher recommended):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;glooctl version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If it is not installed, you can install the latest version using:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;curl -sL https://run.solo.io/gloo/install &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; sh
&lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;PATH&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$HOME&lt;/span&gt;/.gloo/bin:&lt;span style=&#34;color:#000&#34;&gt;$PATH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or following the
&lt;a href=&#34;https://docs.solo.io/gloo/latest/installation/knative/#install-command-line-tool-cli&#34;&gt;Gloo CLI install instructions&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install Gloo and the Knative integration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;glooctl install knative --install-knative&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;glooctl proxy url --name knative-external-proxy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-3&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-3-tab&#34;&gt;
&lt;p&gt;The following commands install Istio and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install a properly configured Istio (&lt;a href=&#34;../installing-istio&#34;&gt;Advanced installation&lt;/a&gt;)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/net-istio/releases/download/v0.23.0/istio.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the Knative Istio controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/net-istio/releases/download/v0.23.0/net-istio.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace istio-system get service istio-ingressgateway
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-4&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-4-tab&#34;&gt;
&lt;p&gt;The following commands install Kong and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install Kong Ingress Controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/0.9.x/deploy/single/all-in-one-dbless.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Kong by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch configmap/config-network &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --namespace knative-serving &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;ingress.class&amp;#34;:&amp;#34;kong&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace kong get service kong-proxy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade show active&#34; id=&#34;serving_networking-5&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-5-tab&#34;&gt;
&lt;p&gt;The following commands install Kourier and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Knative Kourier controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/net-kourier/releases/download/v0.23.0/kourier.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Kourier by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch configmap/config-network &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --namespace knative-serving &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;ingress.class&amp;#34;:&amp;#34;kourier.ingress.networking.knative.dev&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace kourier-system get service kourier
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;verify-the-installation&#34;&gt;Verify the installation&lt;/h2&gt;
&lt;p&gt;Monitor the Knative components until all of the components show a &lt;code&gt;STATUS&lt;/code&gt; of &lt;code&gt;Running&lt;/code&gt; or &lt;code&gt;Completed&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get pods --namespace knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;configure-dns&#34;&gt;Configure DNS&lt;/h2&gt;
&lt;p&gt;You can configure DNS to prevent the need to run curl commands with a host header.&lt;/p&gt;
&lt;p&gt;The tabs below expand to show instructions for configuring DNS.
Follow the procedure for the DNS of your choice:&lt;/p&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;serving_dns&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item active&#34;&gt;
&lt;a class=&#34;nav-link active&#34; id=&#34;serving_dns-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_dns-0&#34; role=&#34;tab&#34; aria-controls=&#34;serving_dns-0&#34; aria-selected=&#34;true&#34;&gt;Magic DNS (sslip.io)&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_dns-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_dns-1&#34; role=&#34;tab&#34; aria-controls=&#34;serving_dns-1&#34; aria-selected=&#34;true&#34;&gt;Real DNS&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_dns-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_dns-2&#34; role=&#34;tab&#34; aria-controls=&#34;serving_dns-2&#34; aria-selected=&#34;true&#34;&gt;Temporary DNS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade show active&#34; id=&#34;serving_dns-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_dns-0-tab&#34;&gt;
&lt;p&gt;We ship a simple Kubernetes Job called &amp;ldquo;default domain&amp;rdquo; that will (see caveats)
configure Knative Serving to use &lt;a href=&#34;http://sslip.io&#34;&gt;sslip.io&lt;/a&gt; as the
default DNS suffix.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/serving/releases/download/v0.23.0/serving-default-domain.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Caveat&lt;/strong&gt;: This will only work if the cluster LoadBalancer service exposes an
IPv4 address or hostname, so it will not work with IPv6 clusters or local setups
like Minikube. For these, see &amp;ldquo;Real DNS&amp;rdquo; or &amp;ldquo;Temporary DNS&amp;rdquo;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_dns-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_dns-1-tab&#34;&gt;
&lt;p&gt;To configure DNS for Knative, take the External IP
or CNAME from setting up networking, and configure it with your DNS provider as
follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If the networking layer produced an External IP address, then configure a
wildcard &lt;code&gt;A&lt;/code&gt; record for the domain:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Here knative.example.com is the domain suffix for your cluster
*.knative.example.com == A 35.233.41.212
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If the networking layer produced a CNAME, then configure a CNAME record for
the domain:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Here knative.example.com is the domain suffix for your cluster
*.knative.example.com == CNAME a317a278525d111e89f272a164fd35fb-1510370581.eu-central-1.elb.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once your DNS provider has been configured, direct Knative to use that domain:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Replace knative.example.com with your domain suffix&lt;/span&gt;
kubectl patch configmap/config-domain &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --namespace knative-serving &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;knative.example.com&amp;#34;:&amp;#34;&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_dns-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_dns-2-tab&#34;&gt;
&lt;p&gt;If you are using &lt;code&gt;curl&lt;/code&gt; to access the sample
applications, or your own Knative app, and are unable to use the &amp;ldquo;Magic DNS
(sslip.io)&amp;rdquo; or &amp;ldquo;Real DNS&amp;rdquo; methods, there is a temporary approach. This is useful
for those who wish to evaluate Knative without altering their DNS configuration,
as per the &amp;ldquo;Real DNS&amp;rdquo; method, or cannot use the &amp;ldquo;Magic DNS&amp;rdquo; method due to using,
for example, minikube locally or IPv6 clusters.&lt;/p&gt;
&lt;p&gt;To access your application using &lt;code&gt;curl&lt;/code&gt; using this method:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;After starting your application, get the URL of your application:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get ksvc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output should be similar to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;NAME URL LATESTCREATED LATESTREADY READY REASON
helloworld-go http://helloworld-go.default.example.com helloworld-go-vqjlf helloworld-go-vqjlf True
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instruct &lt;code&gt;curl&lt;/code&gt; to connect to the External IP or CNAME defined by the
networking layer in section 3 above, and use the &lt;code&gt;-H &amp;quot;Host:&amp;quot;&lt;/code&gt; command-line
option to specify the Knative application&amp;rsquo;s host name. For example, if the
networking layer defines your External IP and port to be
&lt;code&gt;http://192.168.39.228:32198&lt;/code&gt; and you wish to access the above
&lt;code&gt;helloworld-go&lt;/code&gt; application, use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;curl -H &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Host: helloworld-go.default.example.com&amp;#34;&lt;/span&gt; http://192.168.39.228:32198
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the case of the provided &lt;code&gt;helloworld-go&lt;/code&gt; sample application, the output
should, using the default configuration, be:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hello Go Sample v1!
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Refer to the &amp;ldquo;Real DNS&amp;rdquo; method for a permanent solution.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;p&gt;After installing Knative Serving:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../install-eventing-with-yaml&#34;&gt;Installing Knative Eventing using YAML files&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To add optional enhancements to your installation, see &lt;a href=&#34;../install-extensions&#34;&gt;Installing optional extensions&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To easily interact with Knative Services, &lt;a href=&#34;../../docs/client/install-kn&#34;&gt;install the &lt;code&gt;kn&lt;/code&gt; CLI&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Installing Knative Eventing using YAML files</title>
<link>https://knative.dev/v0.23-docs/install/install-eventing-with-yaml/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/install-eventing-with-yaml/</guid>
<description>
&lt;p&gt;This topic describes how to install Knative Eventing by applying YAML files using the &lt;code&gt;kubectl&lt;/code&gt; CLI.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before installation, you must meet the prerequisites.
See &lt;a href=&#34;../prerequisites&#34;&gt;Knative Prerequisites&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;install-the-eventing-component&#34;&gt;Install the Eventing component&lt;/h2&gt;
&lt;p&gt;To install the Eventing component:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the required custom resource definitions (CRDs):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/eventing/releases/download/v0.23.0/eventing-crds.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the core components of Eventing:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/eventing/releases/download/v0.23.0/eventing-core.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For information about the YAML files in the Knative Serving and Eventing releases, see
&lt;a href=&#34;../installation-files&#34;&gt;Installation files&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;verify-the-installation&#34;&gt;Verify the installation&lt;/h2&gt;
&lt;p&gt;Monitor the Knative components until all of the components show a &lt;code&gt;STATUS&lt;/code&gt; of &lt;code&gt;Running&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get pods --namespace knative-eventing
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;optional-install-a-default-channel-messaging-layer&#34;&gt;Optional: Install a default channel (messaging) layer&lt;/h2&gt;
&lt;p&gt;The tabs below expand to show instructions for installing a default channel layer.
Follow the procedure for the channel of your choice:&lt;/p&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;eventing_channels&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_channels-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_channels-0&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_channels-0&#34; aria-selected=&#34;true&#34;&gt;Apache Kafka Channel&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_channels-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_channels-1&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_channels-1&#34; aria-selected=&#34;true&#34;&gt;Google Cloud Pub/Sub Channel&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item active&#34;&gt;
&lt;a class=&#34;nav-link active&#34; id=&#34;eventing_channels-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_channels-2&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_channels-2&#34; aria-selected=&#34;true&#34;&gt;In-Memory (standalone)&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_channels-3-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_channels-3&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_channels-3&#34; aria-selected=&#34;true&#34;&gt;NATS Channel&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_channels-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_channels-0-tab&#34;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First,
&lt;a href=&#34;../../eventing/samples/kafka/&#34;&gt;Install Apache Kafka for Kubernetes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Then install the Apache Kafka channel:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;curl -L &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;https://github.com/knative-sandbox/eventing-kafka/releases/download/v0.23.0/channel-consolidated.yaml&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/REPLACE_WITH_CLUSTER_URL/my-cluster-kafka-bootstrap.kafka:9092/&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To learn more about the Apache Kafka channel, try
&lt;a href=&#34;../../eventing/samples/kafka/channel/&#34;&gt;our sample&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_channels-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_channels-1-tab&#34;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Google Cloud Pub/Sub channel:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# This installs both the Channel and the GCP Sources.&lt;/span&gt;
kubectl apply -f https://github.com/google/knative-gcp/releases/download/v0.23.0/cloud-run-events.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To learn more about the Google Cloud Pub/Sub channel, try
&lt;a href=&#34;https://github.com/google/knative-gcp/blob/master/docs/examples/channel/&#34;&gt;our sample&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade show active&#34; id=&#34;eventing_channels-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_channels-2-tab&#34;&gt;
&lt;p&gt;The following command installs an implementation of channel that runs in-memory.
This implementation is nice because it is simple and standalone, but it is
unsuitable for production use cases.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/eventing/releases/download/v0.23.0/in-memory-channel.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_channels-3&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_channels-3-tab&#34;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, &lt;a href=&#34;https://github.com/knative-sandbox/eventing-natss/tree/main/config&#34;&gt;Install NATS Streaming for
Kubernetes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Then install the NATS Streaming channel:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-natss/releases/download/v0.23.0/300-natss-channel.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;optional-install-a-broker-layer&#34;&gt;Optional: Install a broker layer:&lt;/h2&gt;
&lt;p&gt;The tabs below expand to show instructions for installing the broker layer.
Follow the procedure for the broker of your choice:&lt;/p&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;eventing_brokers&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_brokers-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_brokers-0&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_brokers-0&#34; aria-selected=&#34;true&#34;&gt;Apache Kafka Broker&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item active&#34;&gt;
&lt;a class=&#34;nav-link active&#34; id=&#34;eventing_brokers-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_brokers-1&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_brokers-1&#34; aria-selected=&#34;true&#34;&gt;MT-Channel-based&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_brokers-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_brokers-0-tab&#34;&gt;
&lt;p&gt;The following commands install the Apache Kafka broker, and run event routing in a system namespace,
&lt;code&gt;knative-eventing&lt;/code&gt;, by default.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Kafka controller by entering the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.23.0/eventing-kafka-controller.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the Kafka broker data plane by entering the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.23.0/eventing-kafka-broker.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more information, see the &lt;a href=&#34;../../eventing/broker/kafka-broker&#34;&gt;Kafka broker&lt;/a&gt; documentation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade show active&#34; id=&#34;eventing_brokers-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_brokers-1-tab&#34;&gt;
&lt;p&gt;The following command installs an implementation of broker that utilizes
channels and runs event routing components in a System Namespace, providing a
smaller and simpler installation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/eventing/releases/download/v0.23.0/mt-channel-broker.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To customize which broker channel implementation is used, update the following
ConfigMap to specify which configurations are used for which namespaces:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ConfigMap&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;config-br-defaults&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default-br-config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; # This is the cluster-wide default broker channel.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; clusterDefault:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; brokerClass: MTChannelBasedBroker
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; apiVersion: v1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; kind: ConfigMap
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; name: imc-channel
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; namespace: knative-eventing
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; # This allows you to specify different defaults per-namespace,
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; # in this case the &amp;#34;some-namespace&amp;#34; namespace will use the Kafka
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; # channel ConfigMap by default (only for example, you will need
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; # to install kafka also to make use of this).
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; namespaceDefaults:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; some-namespace:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; brokerClass: MTChannelBasedBroker
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; apiVersion: v1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; kind: ConfigMap
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; name: kafka-channel
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; namespace: knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The referenced &lt;code&gt;imc-channel&lt;/code&gt; and &lt;code&gt;kafka-channel&lt;/code&gt; example ConfigMaps would look
like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ConfigMap&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;imc-channel&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;channelTemplateSpec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; apiVersion: messaging.knative.dev/v1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; kind: InMemoryChannel&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;---&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ConfigMap&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kafka-channel&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;channelTemplateSpec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; apiVersion: messaging.knative.dev/v1alpha1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; kind: KafkaChannel
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; spec:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; numPartitions: 3
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; replicationFactor: 1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; In order to use the KafkaChannel make sure it is installed on the cluster as discussed above.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;p&gt;After installing Knative Eventing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To easily interact with Knative Eventing components, &lt;a href=&#34;../../docs/client/install-kn&#34;&gt;install the &lt;code&gt;kn&lt;/code&gt; CLI&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To add optional enhancements to your installation, see &lt;a href=&#34;../install-extensions&#34;&gt;Installing optional extensions&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../install-serving-with-yaml&#34;&gt;Installing Knative Serving using YAML files&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Installing optional extensions</title>
<link>https://knative.dev/v0.23-docs/install/install-extensions/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/install-extensions/</guid>
<description>
&lt;p&gt;To add extra features to your Knative Serving or Eventing installation, you can install extensions
by applying YAML files using the &lt;code&gt;kubectl&lt;/code&gt; CLI.&lt;/p&gt;
&lt;p&gt;For information about the YAML files in the Knative Serving and Eventing releases, see
&lt;a href=&#34;../installation-files&#34;&gt;Installation files&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h1&gt;
&lt;p&gt;Before you install any optional extensions, you must install Knative Serving or Eventing.
See &lt;a href=&#34;../install-serving-with-yaml&#34;&gt;Installing Serving using YAML files&lt;/a&gt;
and &lt;a href=&#34;../install-eventing-with-yaml&#34;&gt;Installing Eventing using YAML files&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;install-optional-serving-extensions&#34;&gt;Install optional Serving extensions&lt;/h2&gt;
&lt;p&gt;The tabs below expand to show instructions for installing each Serving extension.&lt;/p&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;serving_extensions&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_extensions-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_extensions-0&#34; role=&#34;tab&#34; aria-controls=&#34;serving_extensions-0&#34; aria-selected=&#34;true&#34;&gt;HPA autoscaling&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_extensions-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_extensions-1&#34; role=&#34;tab&#34; aria-controls=&#34;serving_extensions-1&#34; aria-selected=&#34;true&#34;&gt;TLS with cert-manager&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_extensions-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_extensions-2&#34; role=&#34;tab&#34; aria-controls=&#34;serving_extensions-2&#34; aria-selected=&#34;true&#34;&gt;TLS via HTTP01&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_extensions-3-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_extensions-3&#34; role=&#34;tab&#34; aria-controls=&#34;serving_extensions-3&#34; aria-selected=&#34;true&#34;&gt;TLS wildcard support&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_extensions-4-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_extensions-4&#34; role=&#34;tab&#34; aria-controls=&#34;serving_extensions-4&#34; aria-selected=&#34;true&#34;&gt;DomainMapping CRD&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_extensions-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_extensions-0-tab&#34;&gt;
&lt;p&gt;Knative also supports the use of the Kubernetes Horizontal Pod Autoscaler (HPA)
for driving autoscaling decisions. The following command will install the
components needed to support HPA-class autoscaling:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/serving/releases/download/v0.23.0/serving-hpa.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- TODO(https://github.com/knative/docs/issues/2152): Link to a more in-depth guide on HPA-class autoscaling --&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_extensions-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_extensions-1-tab&#34;&gt;
&lt;p&gt;Knative supports automatically provisioning TLS certificates via
&lt;a href=&#34;https://cert-manager.io/docs/&#34;&gt;cert-manager&lt;/a&gt;. The following commands will
install the components needed to support the provisioning of TLS certificates
via cert-manager.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, install
&lt;a href=&#34;../../serving/installing-cert-manager&#34;&gt;cert-manager version &lt;code&gt;0.12.0&lt;/code&gt; or higher&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Next, install the component that integrates Knative with cert-manager:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/net-certmanager/releases/download/v0.23.0/release.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Now configure Knative to
&lt;a href=&#34;../../serving/using-auto-tls&#34;&gt;automatically configure TLS certificates&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_extensions-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_extensions-2-tab&#34;&gt;
&lt;p&gt;Knative supports automatically provisioning TLS certificates using Let&amp;rsquo;s Encrypt
HTTP01 challenges. The following commands will install the components needed to
support that.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, install the &lt;code&gt;net-http01&lt;/code&gt; controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/net-http01/releases/download/v0.23.0/release.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Next, configure the &lt;code&gt;certificate.class&lt;/code&gt; to use this certificate type.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch configmap/config-network &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --namespace knative-serving &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;certificate.class&amp;#34;:&amp;#34;net-http01.certificate.networking.knative.dev&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lastly, enable auto-TLS.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch configmap/config-network &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --namespace knative-serving &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;autoTLS&amp;#34;:&amp;#34;Enabled&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_extensions-3&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_extensions-3-tab&#34;&gt;
&lt;p&gt;If you are using a Certificate implementation that supports provisioning
wildcard certificates (e.g. cert-manager with a DNS01 issuer), then the most
efficient way to provision certificates is with the namespace wildcard
certificate controller. The following command will install the components needed
to provision wildcard certificates in each namespace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/serving/releases/download/v0.23.0/serving-nscert.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Note this will not work with HTTP01 either via cert-manager or the net-http01
options.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_extensions-4&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_extensions-4-tab&#34;&gt;
&lt;p&gt;The &lt;code&gt;DomainMapping&lt;/code&gt; CRD allows a user to map a Domain Name that they own to a
specific Knative Service.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/serving/releases/download/v0.23.0/serving-domainmapping-crds.yaml
kubectl &lt;span style=&#34;color:#204a87&#34;&gt;wait&lt;/span&gt; --for&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;condition&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;Established --all crd
kubectl apply -f https://github.com/knative/serving/releases/download/v0.23.0/serving-domainmapping.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;install-optional-eventing-extensions&#34;&gt;Install optional Eventing extensions&lt;/h2&gt;
&lt;p&gt;The tabs below expand to show instructions for installing each Eventing extension.&lt;/p&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;eventing_extensions&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-0&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-0&#34; aria-selected=&#34;true&#34;&gt;Apache Kafka Sink&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-1&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-1&#34; aria-selected=&#34;true&#34;&gt;Sugar Controller&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-2&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-2&#34; aria-selected=&#34;true&#34;&gt;Github Source&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-3-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-3&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-3&#34; aria-selected=&#34;true&#34;&gt;Apache Camel-K Source&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-4-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-4&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-4&#34; aria-selected=&#34;true&#34;&gt;Apache Kafka Source&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-5-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-5&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-5&#34; aria-selected=&#34;true&#34;&gt;GCP Sources&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-6-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-6&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-6&#34; aria-selected=&#34;true&#34;&gt;Apache CouchDB Source&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_extensions-7-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_extensions-7&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_extensions-7&#34; aria-selected=&#34;true&#34;&gt;VMware Sources and Bindings&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-0-tab&#34;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Kafka controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.23.0/eventing-kafka-controller.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the Kafka Sink data plane:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-kafka-broker/releases/download/v0.23.0/eventing-kafka-sink.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more information, see the &lt;a href=&#34;../../eventing/sink/kafka-sink&#34;&gt;Kafka Sink&lt;/a&gt; documentation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-1-tab&#34;&gt;
&lt;!-- Unclear when this feature came in --&gt;
&lt;p&gt;The following command installs the Eventing Sugar Controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative/eventing/releases/download/v0.23.0/eventing-sugar-controller.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Knative Eventing Sugar Controller will react to special labels and
annotations and produce Eventing resources. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When a Namespace is labeled with &lt;code&gt;eventing.knative.dev/injection=enabled&lt;/code&gt;, the
controller will create a default broker in that namespace.&lt;/li&gt;
&lt;li&gt;When a Trigger is annotated with &lt;code&gt;eventing.knative.dev/injection=enabled&lt;/code&gt;, the
controller will create a Broker named by that Trigger in the Trigger&amp;rsquo;s
Namespace.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following command enables the default Broker on a namespace (here
&lt;code&gt;default&lt;/code&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl label namespace default eventing.knative.dev/injection&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;enabled
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-2-tab&#34;&gt;
&lt;p&gt;The following command installs the single-tenant Github source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-github/releases/download/v0.23.0/github.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The single-tenant GitHub source creates one Knative service per GitHub source.&lt;/p&gt;
&lt;p&gt;The following command installs the multi-tenant GitHub source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-github/releases/download/v0.23.0/mt-github.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The multi-tenant GitHub source creates only one Knative service handling all
GitHub sources in the cluster. This source does not support logging or tracing
configuration yet.&lt;/p&gt;
&lt;p&gt;To learn more about the Github source, try
&lt;a href=&#34;../../eventing/samples/github-source/&#34;&gt;our sample&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-3&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-3-tab&#34;&gt;
&lt;p&gt;The following command installs the Apache Camel-K Source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-camel/releases/download/v0.23.0/camel.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To learn more about the Apache Camel-K source, try
&lt;a href=&#34;../../eventing/samples/apache-camel-source/&#34;&gt;our sample&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-4&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-4-tab&#34;&gt;
&lt;p&gt;The following command installs the Apache Kafka Source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-kafka/releases/download/v0.23.0/source.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To learn more about the Apache Kafka source, try
&lt;a href=&#34;../../eventing/samples/kafka/source/&#34;&gt;our sample&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-5&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-5-tab&#34;&gt;
&lt;p&gt;The following command installs the GCP Sources:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# This installs both the Sources and the Channel.&lt;/span&gt;
kubectl apply -f https://github.com/google/knative-gcp/releases/download/v0.23.0/cloud-run-events.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To learn more about the Cloud Pub/Sub source, try
&lt;a href=&#34;../../eventing/samples/cloud-pubsub-source/&#34;&gt;our sample&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about the Cloud Storage source, try
&lt;a href=&#34;../../eventing/samples/cloud-storage-source/&#34;&gt;our sample&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about the Cloud Scheduler source, try
&lt;a href=&#34;../../eventing/samples/cloud-scheduler-source/&#34;&gt;our sample&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about the Cloud Audit Logs source, try
&lt;a href=&#34;../../eventing/samples/cloud-audit-logs-source/&#34;&gt;our sample&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-6&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-6-tab&#34;&gt;
&lt;p&gt;The following command installs the Apache CouchDB Source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/knative-sandbox/eventing-couchdb/releases/download/v0.23.0/couchdb.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To learn more about the Apache CouchDB source, read the &lt;a href=&#34;https://github.com/knative-sandbox/eventing-couchdb/blob/main/source/&#34;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_extensions-7&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_extensions-7-tab&#34;&gt;
&lt;p&gt;The following command installs the VMware Sources and Bindings:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply -f https://github.com/vmware-tanzu/sources-for-knative/releases/download/v0.23.0/release.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To learn more about the VMware sources and bindings, try
&lt;a href=&#34;https://github.com/vmware-tanzu/sources-for-knative/tree/master/samples/&#34;&gt;our samples&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;To easily interact with Knative Services and Eventing components, &lt;a href=&#34;../../docs/client/install-kn&#34;&gt;install the &lt;code&gt;kn&lt;/code&gt; CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Knative Operator installation</title>
<link>https://knative.dev/v0.23-docs/install/knative-with-operators/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/knative-with-operators/</guid>
<description>
&lt;p&gt;Knative provides a &lt;a href=&#34;https://kubernetes.io/docs/concepts/extend-kubernetes/operator/&#34;&gt;Kubernetes Operator&lt;/a&gt; to install, configure and manage Knative.
You can install the Serving component, Eventing component, or both on your cluster.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The Knative Operator is still in Alpha phase. It has not been tested in a production environment, and should be used
for development or test purposes only.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;You have a cluster that uses Kubernetes v1.18 or newer.&lt;/li&gt;
&lt;li&gt;You have installed the &lt;code&gt;kubectl&lt;/code&gt; CLI.&lt;/li&gt;
&lt;li&gt;If you have only one node in your cluster, you will need at least 6 CPUs, 6 GB of memory, and 30 GB of disk storage.&lt;/li&gt;
&lt;li&gt;If you have multiple nodes in your cluster, for each node you will need at least 2 CPUs, 4 GB of memory, and 20 GB of disk storage.&lt;/li&gt;
&lt;li&gt;Your Kubernetes cluster must have access to the internet, since Kubernetes needs to be able to fetch images, such as &lt;code&gt;gcr.io/knative-releases/knative.dev/operator/cmd/operator:&amp;lt;version&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;!--TODO: Verify these requirements--&gt;
&lt;ul&gt;
&lt;li&gt;You have installed &lt;a href=&#34;../installing-istio&#34;&gt;Istio&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;installing-the-latest-release&#34;&gt;Installing the latest release&lt;/h2&gt;
&lt;p&gt;You can find information about the different released versions of the Knative Operator on the &lt;a href=&#34;https://github.com/knative/operator/releases&#34;&gt;Releases page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Install the latest stable Operator release:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl apply -f https://github.com/knative/operator/releases/download/v0.23.0/operator.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;verify-your-installation&#34;&gt;Verify your installation&lt;/h2&gt;
&lt;p&gt;Verify your installation:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl get deployment knative-operator
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the operator is installed correctly, the deployment shows a &lt;code&gt;Ready&lt;/code&gt; status:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;NAME READY UP-TO-DATE AVAILABLE AGE
knative-operator 1/1 1 1 19h
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;track-the-log&#34;&gt;Track the log&lt;/h2&gt;
&lt;p&gt;Track the log of the operator:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl logs -f deploy/knative-operator
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;installing-the-knative-serving-component&#34;&gt;Installing the Knative Serving component&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create and apply the Knative Serving CR:&lt;/p&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;serving_cr&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item active&#34;&gt;
&lt;a class=&#34;nav-link active&#34; id=&#34;serving_cr-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_cr-0&#34; role=&#34;tab&#34; aria-controls=&#34;serving_cr-0&#34; aria-selected=&#34;true&#34;&gt;Install Current Serving (default)&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_cr-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_cr-1&#34; role=&#34;tab&#34; aria-controls=&#34;serving_cr-1&#34; aria-selected=&#34;true&#34;&gt;Install Future Knative Serving&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_cr-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_cr-2&#34; role=&#34;tab&#34; aria-controls=&#34;serving_cr-2&#34; aria-selected=&#34;true&#34;&gt;Install Customized Knative Serving&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade show active&#34; id=&#34;serving_cr-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_cr-0-tab&#34;&gt;
&lt;p&gt;You can install the latest available Knative Serving in the
operator by applying a YAML file containing the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-serving
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you do not specify a version by using spec.version, the operator defaults to the latest available version.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_cr-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_cr-1-tab&#34;&gt;
&lt;p&gt;You do not need to upgrade the operator to a newer version to install
new releases of Knative Serving. If Knative Serving launches a new version, e.g. &lt;code&gt;{{spec.version}}&lt;/code&gt;, you can install it by
applying a YAML file containing the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-serving
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
version: {{spec.version}}
manifests:
- URL: https://github.com/knative/serving/releases/download/v${VERSION}/serving-core.yaml
- URL: https://github.com/knative/serving/releases/download/v${VERSION}/serving-hpa.yaml
- URL: https://github.com/knative/serving/releases/download/v${VERSION}/serving-post-install-jobs.yaml
- URL: https://github.com/knative/net-istio/releases/download/v${VERSION}/net-istio.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The field &lt;code&gt;spec.version&lt;/code&gt; is used to set the version of Knative Serving. Replace &lt;code&gt;{{spec.version}}&lt;/code&gt; with the correct version number.
The tag &lt;code&gt;${VERSION}&lt;/code&gt; is automatically replaced with the version number from &lt;code&gt;spec.version&lt;/code&gt; by the operator.&lt;/p&gt;
&lt;p&gt;The field &lt;code&gt;spec.manifests&lt;/code&gt; is used to specify one or multiple URL links of Knative Serving component. Do not forget to
add the valid URL of the Knative network ingress plugin. Knative Serving component is still tightly-coupled with a network
ingress plugin in the operator. As in the above example, you can use &lt;code&gt;net-istio&lt;/code&gt;. The ordering of the URLs is critical.
Put the manifest you want to apply first on the top.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_cr-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_cr-2-tab&#34;&gt;
&lt;p&gt;The operator provides you the flexibility to install customized
Knative Serving based your own requirements. As long as the manifests of customized Knative Serving are accessible to
the operator, they can be installed.&lt;/p&gt;
&lt;p&gt;There are two modes available for you to install the customized manifests: overwrite mode and append mode. With the
overwrite mode, you need to define all the manifests for Knative Serving to install, because the operator will no long
install any available default manifests. With the append mode, you only need to define your customized manifests, and
the customized manifests are installed, after default manifests are applied.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can use the overwrite mode to customize all the Knative Serving manifests. For example, the version of the customized
Knative Serving is &lt;code&gt;{{spec.version}}&lt;/code&gt;, and it is available at &lt;code&gt;https://my-serving/serving.yaml&lt;/code&gt;. You choose &lt;code&gt;net-istio&lt;/code&gt;
as the ingress plugin, which is available at &lt;code&gt;https://my-net-istio/net-istio.yaml&lt;/code&gt;. You can create the content of Serving
CR as below to install your Knative Serving and the istio ingress:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-serving
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
version: {{spec.version}}
manifests:
- URL: https://my-serving/serving.yaml
- URL: https://my-net-istio/net-istio.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can make the customized Knative Serving available in one or multiple links, as the &lt;code&gt;spec.manifests&lt;/code&gt; supports a list
of links. The ordering of the URLs is critical. Put the manifest you want to apply first on the top. We strongly recommend
you to specify the version and the valid links to the customized Knative Serving, by leveraging both &lt;code&gt;spec.version&lt;/code&gt;
and &lt;code&gt;spec.manifests&lt;/code&gt;. Do not skip either field.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can use the append mode to add your customized manifests into the default manifests. For example, you only customize
a few resources, and make them available at &lt;code&gt;https://my-serving/serving-custom.yaml&lt;/code&gt;. You still need to install the default
Knative Serving. In this case, you can create the content of Serving CR as below:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-serving
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
version: {{spec.version}}
additionalManifests:
- URL: https://my-serving/serving-custom.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Knative operator will install the default manifests of Knative Serving at the version &lt;code&gt;{{spec.version}}&lt;/code&gt;, and then install
your customized manifests based on them.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify the Knative Serving deployment:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;kubectl get deployment -n knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If Knative Serving has been successfully deployed, all deployments of the Knative Serving will show &lt;code&gt;READY&lt;/code&gt; status. Here
is a sample output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;NAME READY UP-TO-DATE AVAILABLE AGE
activator 1/1 1 1 18s
autoscaler 1/1 1 1 18s
autoscaler-hpa 1/1 1 1 14s
controller 1/1 1 1 18s
istio-webhook 1/1 1 1 12s
networking-istio 1/1 1 1 12s
webhook 1/1 1 1 17s
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Check the status of Knative Serving Custom Resource:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;kubectl get KnativeServing knative-serving -n knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If Knative Serving is successfully installed, you should see:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;NAME VERSION READY REASON
knative-serving &amp;lt;version number&amp;gt; True
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;installing-the-knative-serving-component-with-different-network-layers&#34;&gt;Installing the Knative Serving component with different network layers&lt;/h3&gt;
&lt;p&gt;Knative Operator can configure Knative Serving component with different network layer options. Istio is the default network
layer, if the ingress is not specified in the Knative Serving CR. Click on each tab below to see how you can configure
Knative Serving with different ingresses:&lt;/p&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;serving_networking&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item active&#34;&gt;
&lt;a class=&#34;nav-link active&#34; id=&#34;serving_networking-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-0&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-0&#34; aria-selected=&#34;true&#34;&gt;Ambassador&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-1&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-1&#34; aria-selected=&#34;true&#34;&gt;Contour&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-2&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-2&#34; aria-selected=&#34;true&#34;&gt;Gloo&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-3-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-3&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-3&#34; aria-selected=&#34;true&#34;&gt;Kong&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_networking-4-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_networking-4&#34; role=&#34;tab&#34; aria-controls=&#34;serving_networking-4&#34; aria-selected=&#34;true&#34;&gt;Kourier&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade show active&#34; id=&#34;serving_networking-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-0-tab&#34;&gt;
&lt;p&gt;The following commands install Ambassador and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a namespace to install Ambassador in:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl create namespace ambassador
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install Ambassador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply --namespace ambassador &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --filename https://getambassador.io/yaml/ambassador/ambassador-crds.yaml &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --filename https://getambassador.io/yaml/ambassador/ambassador-rbac.yaml &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --filename https://getambassador.io/yaml/ambassador/ambassador-service.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Give Ambassador the required permissions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch clusterrolebinding ambassador -p &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;subjects&amp;#34;:[{&amp;#34;kind&amp;#34;: &amp;#34;ServiceAccount&amp;#34;, &amp;#34;name&amp;#34;: &amp;#34;ambassador&amp;#34;, &amp;#34;namespace&amp;#34;: &amp;#34;ambassador&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enable Knative support in Ambassador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl &lt;span style=&#34;color:#204a87&#34;&gt;set&lt;/span&gt; env --namespace ambassador deployments/ambassador &lt;span style=&#34;color:#000&#34;&gt;AMBASSADOR_KNATIVE_SUPPORT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Ambassador, apply the content of the Serving CR as below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;-EOF | kubectl apply -f -
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: operator.knative.dev/v1alpha1
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: KnativeServing
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; name: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; namespace: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;spec:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; config:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; network:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; ingress.class: &amp;#34;ambassador.ingress.networking.knative.dev&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace ambassador get service ambassador
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-1-tab&#34;&gt;
&lt;p&gt;The following commands install Contour and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install a properly configured Contour:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply --filename https://github.com/knative/net-contour/releases/download/v0.23.0/contour.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Contour, apply the content of the Serving CR as below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;-EOF | kubectl apply -f -
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: operator.knative.dev/v1alpha1
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: KnativeServing
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; name: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; namespace: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;spec:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; ingress:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; contour:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; enabled: true
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; config:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; network:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; ingress.class: &amp;#34;contour.ingress.networking.knative.dev&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace contour-external get service envoy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-2-tab&#34;&gt;
&lt;p&gt;&lt;em&gt;For a detailed guide on Gloo integration, see
&lt;a href=&#34;https://docs.solo.io/gloo/latest/installation/knative/&#34;&gt;Installing Gloo for Knative&lt;/a&gt;
in the Gloo documentation.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The following commands install Gloo and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Make sure &lt;code&gt;glooctl&lt;/code&gt; is installed (version 1.3.x and higher recommended):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;glooctl version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If it is not installed, you can install the latest version using:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;curl -sL https://run.solo.io/gloo/install &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; sh
&lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;PATH&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$HOME&lt;/span&gt;/.gloo/bin:&lt;span style=&#34;color:#000&#34;&gt;$PATH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or following the
&lt;a href=&#34;https://docs.solo.io/gloo/latest/installation/knative/#install-command-line-tool-cli&#34;&gt;Gloo CLI install instructions&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install Gloo and the Knative integration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;glooctl install knative --install-knative&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Gloo, apply the content of the Serving CR as below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;-EOF | kubectl apply -f -
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: operator.knative.dev/v1alpha1
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: KnativeServing
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; name: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; namespace: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There is no need to configure the ingress class to use the gloo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;glooctl proxy url --name knative-external-proxy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-3&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-3-tab&#34;&gt;
&lt;p&gt;The following commands install Kong and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install Kong Ingress Controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply --filename https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/0.9.x/deploy/single/all-in-one-dbless.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Kong, apply the content of the Serving CR as below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;-EOF | kubectl apply -f -
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: operator.knative.dev/v1alpha1
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: KnativeServing
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; name: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; namespace: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;spec:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; config:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; network:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; ingress.class: &amp;#34;kong&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace kong get service kong-proxy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_networking-4&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_networking-4-tab&#34;&gt;
&lt;p&gt;The following commands install Kourier and enable its Knative integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;To configure Knative Serving to use Kourier, apply the content of the Serving CR as below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;-EOF | kubectl apply -f -
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: operator.knative.dev/v1alpha1
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: KnativeServing
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; name: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; namespace: knative-serving
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;spec:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; ingress:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; kourier:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; enabled: true
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; config:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; network:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; ingress.class: &amp;#34;kourier.ingress.networking.knative.dev&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fetch the External IP or CNAME:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl --namespace knative-serving get service kourier
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this for configuring DNS below.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Configure DNS&lt;/p&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;serving_dns&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_dns-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_dns-0&#34; role=&#34;tab&#34; aria-controls=&#34;serving_dns-0&#34; aria-selected=&#34;true&#34;&gt;Magic DNS (sslip.io)&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_dns-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_dns-1&#34; role=&#34;tab&#34; aria-controls=&#34;serving_dns-1&#34; aria-selected=&#34;true&#34;&gt;Real DNS&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;serving_dns-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#serving_dns-2&#34; role=&#34;tab&#34; aria-controls=&#34;serving_dns-2&#34; aria-selected=&#34;true&#34;&gt;Temporary DNS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_dns-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_dns-0-tab&#34;&gt;
&lt;p&gt;We ship
a simple Kubernetes Job called &amp;ldquo;default domain&amp;rdquo; that will (see caveats)
configure Knative Serving to use &lt;a href=&#34;http://sslip.io&#34;&gt;sslip.io&lt;/a&gt; as the
default DNS suffix.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply --filename https://github.com/knative/serving/releases/download/v0.23.0/serving-default-domain.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Caveat&lt;/strong&gt;: This will only work if the cluster LoadBalancer service exposes an
IPv4 address or hostname, so it will not work with IPv6 clusters or local setups
like Minikube. For these, see &amp;ldquo;Real DNS&amp;rdquo; or &amp;ldquo;Temporary DNS&amp;rdquo;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_dns-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_dns-1-tab&#34;&gt;
&lt;p&gt;To configure DNS for Knative, take the External IP
or CNAME from setting up networking, and configure it with your DNS provider as
follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If the networking layer produced an External IP address, then configure a
wildcard &lt;code&gt;A&lt;/code&gt; record for the domain:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Here knative.example.com is the domain suffix for your cluster
*.knative.example.com == A 35.233.41.212
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If the networking layer produced a CNAME, then configure a CNAME record for
the domain:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Here knative.example.com is the domain suffix for your cluster
*.knative.example.com == CNAME a317a278525d111e89f272a164fd35fb-1510370581.eu-central-1.elb.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once your DNS provider has been configured, add the following section into your existing Serving CR, and apply it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Replace knative.example.com with your domain suffix&lt;/span&gt;
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
config:
domain:
&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;knative.example.com&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;serving_dns-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;serving_dns-2-tab&#34;&gt;
&lt;p&gt;If you are using &lt;code&gt;curl&lt;/code&gt; to access the sample
applications, or your own Knative app, and are unable to use the &amp;ldquo;Magic DNS
(sslip.io)&amp;rdquo; or &amp;ldquo;Real DNS&amp;rdquo; methods, there is a temporary approach. This is useful
for those who wish to evaluate Knative without altering their DNS configuration,
as per the &amp;ldquo;Real DNS&amp;rdquo; method, or cannot use the &amp;ldquo;Magic DNS&amp;rdquo; method due to using,
for example, minikube locally or IPv6 clusters.&lt;/p&gt;
&lt;p&gt;To access your application using &lt;code&gt;curl&lt;/code&gt; using this method:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;After starting your application, get the URL of your application:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get ksvc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output should be similar to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;NAME URL LATESTCREATED LATESTREADY READY REASON
helloworld-go http://helloworld-go.default.example.com helloworld-go-vqjlf helloworld-go-vqjlf True
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instruct &lt;code&gt;curl&lt;/code&gt; to connect to the External IP or CNAME defined by the
networking layer in section 3 above, and use the &lt;code&gt;-H &amp;quot;Host:&amp;quot;&lt;/code&gt; command-line
option to specify the Knative application&amp;rsquo;s host name. For example, if the
networking layer defines your External IP and port to be
&lt;code&gt;http://192.168.39.228:32198&lt;/code&gt; and you wish to access the above
&lt;code&gt;helloworld-go&lt;/code&gt; application, use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;curl -H &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Host: helloworld-go.default.example.com&amp;#34;&lt;/span&gt; http://192.168.39.228:32198
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the case of the provided &lt;code&gt;helloworld-go&lt;/code&gt; sample application, using the default
configuration, the output should be:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hello Go Sample v1!
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Refer to the &amp;ldquo;Real DNS&amp;rdquo; method for a permanent solution.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Monitor the Knative components until all of the components show a &lt;code&gt;STATUS&lt;/code&gt; of
&lt;code&gt;Running&lt;/code&gt; or &lt;code&gt;Completed&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get pods --namespace knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;installing-the-knative-eventing-component&#34;&gt;Installing the Knative Eventing component&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create and apply the Knative Eventing CR:&lt;/p&gt;
&lt;!-- This indentation is important for things to render properly. --&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;eventing_cr&#34; role=&#34;tablist&#34;&gt;
&lt;li class=&#34;nav-item active&#34;&gt;
&lt;a class=&#34;nav-link active&#34; id=&#34;eventing_cr-0-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_cr-0&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_cr-0&#34; aria-selected=&#34;true&#34;&gt;Install Current Eventing (default)&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_cr-1-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_cr-1&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_cr-1&#34; aria-selected=&#34;true&#34;&gt;Install Future Knative Eventing&lt;/a&gt;
&lt;/li&gt;
&lt;li class=&#34;nav-item &#34;&gt;
&lt;a class=&#34;nav-link &#34; id=&#34;eventing_cr-2-tab&#34; data-toggle=&#34;tab&#34; href=&#34;#eventing_cr-2&#34; role=&#34;tab&#34; aria-controls=&#34;eventing_cr-2&#34; aria-selected=&#34;true&#34;&gt;Install Customized Knative Eventing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; &gt;
&lt;div class=&#34;tab-pane fade show active&#34; id=&#34;eventing_cr-0&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_cr-0-tab&#34;&gt;
&lt;p&gt;You can install the latest available Knative Eventing in the
operator by applying a YAML file containing the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-eventing
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you do not specify a version by using spec.version, the operator defaults to the latest available version.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_cr-1&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_cr-1-tab&#34;&gt;
&lt;p&gt;You do not need to upgrade the operator to a newer version to install
new releases of Knative Eventing. If Knative Eventing launches a new version, e.g. &lt;code&gt;{{spec.version}}&lt;/code&gt;, you can install it by
applying a YAML file containing the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-eventing
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
version: {{spec.version}}
manifests:
- URL: https://github.com/knative/eventing/releases/download/v${VERSION}/eventing.yaml
- URL: https://github.com/knative/eventing/releases/download/v${VERSION}/eventing-post-install-jobs.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The field &lt;code&gt;spec.version&lt;/code&gt; is used to set the version of Knative Eventing. Replace &lt;code&gt;{{spec.version}}&lt;/code&gt; with the correct version number.
The tag &lt;code&gt;${VERSION}&lt;/code&gt; is automatically replaced with the version number from &lt;code&gt;spec.version&lt;/code&gt; by the operator.&lt;/p&gt;
&lt;p&gt;The field &lt;code&gt;spec.manifests&lt;/code&gt; is used to specify one or multiple URL links of Knative Eventing component. Do not forget to
add the valid URL of the Knative network ingress plugin. The ordering of the URLs is critical. Put the manifest you want
to apply first on the top.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;tab-pane fade &#34; id=&#34;eventing_cr-2&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;eventing_cr-2-tab&#34;&gt;
&lt;p&gt;The operator provides you the flexibility to install customized
Knative Eventing based your own requirements. As long as the manifests of customized Knative Eventing are accessible to
the operator, they can be installed.&lt;/p&gt;
&lt;p&gt;There are two modes available for you to install the customized manifests: overwrite mode and append mode. With the
overwrite mode, you need to define all the manifests for Knative Eventing to install, because the operator will no long
install any available default manifests. With the append mode, you only need to define your customized manifests, and
the customized manifests are installed, after default manifests are applied.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can use the overwrite mode to customize all the Knative Eventing manifests. For example, the version of the customized
Knative Eventing is &lt;code&gt;{{spec.version}}&lt;/code&gt;, and it is available at &lt;code&gt;https://my-eventing/eventing.yaml&lt;/code&gt;. You can create the
content of Eventing CR as below to install your Knative Eventing:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-eventing
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
version: {{spec.version}}
manifests:
- URL: https://my-eventing/eventing.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can make the customized Knative Eventing available in one or multiple links, as the &lt;code&gt;spec.manifests&lt;/code&gt; supports a list
of links. The ordering of the URLs is critical. Put the manifest you want to apply first on the top. We strongly recommend
you to specify the version and the valid links to the customized Knative Eventing, by leveraging both &lt;code&gt;spec.version&lt;/code&gt;
and &lt;code&gt;spec.manifests&lt;/code&gt;. Do not skip either field.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can use the append mode to add your customized manifests into the default manifests. For example, you only customize
a few resources, and make them available at &lt;code&gt;https://my-eventing/eventing-custom.yaml&lt;/code&gt;. You still need to install the default
Knative eventing. In this case, you can create the content of Eventing CR as below:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
name: knative-eventing
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
version: {{spec.version}}
additionalManifests:
- URL: https://my-eventing/eventing-custom.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Knative operator will install the default manifests of Knative Eventing at the version &lt;code&gt;{{spec.version}}&lt;/code&gt;, and then install
your customized manifests based on them.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify the Knative Eventing deployment:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;kubectl get deployment -n knative-eventing
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If Knative Eventing has been successfully deployed, all deployments of the Knative Eventing will show &lt;code&gt;READY&lt;/code&gt; status. Here
is a sample output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;NAME READY UP-TO-DATE AVAILABLE AGE
broker-controller 1/1 1 1 63s
broker-filter 1/1 1 1 62s
broker-ingress 1/1 1 1 62s
eventing-controller 1/1 1 1 67s
eventing-webhook 1/1 1 1 67s
imc-controller 1/1 1 1 59s
imc-dispatcher 1/1 1 1 59s
mt-broker-controller 1/1 1 1 62s
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Check the status of Knative Eventing Custom Resource:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;kubectl get KnativeEventing knative-eventing -n knative-eventing
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If Knative Eventing is successfully installed, you should see:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;NAME VERSION READY REASON
knative-eventing &amp;lt;version number&amp;gt; True
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../operator/configuring-serving-cr&#34;&gt;Configure Knative Serving using Operator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../operator/configuring-eventing-cr&#34;&gt;Configure Knative Eventing using Operator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Installing Istio for Knative</title>
<link>https://knative.dev/v0.23-docs/install/installing-istio/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/installing-istio/</guid>
<description>
&lt;p&gt;This guide walks you through manually installing and customizing Istio for use
with Knative.&lt;/p&gt;
&lt;p&gt;If your cloud platform offers a managed Istio installation, we recommend
installing Istio that way, unless you need to customize your
installation.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;You need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Kubernetes cluster created.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://istio.io/docs/setup/install/istioctl/&#34;&gt;&lt;code&gt;istioctl&lt;/code&gt;&lt;/a&gt; (v1.7 or later) installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;supported-istio-versions&#34;&gt;Supported Istio versions&lt;/h2&gt;
&lt;p&gt;The current known-to-be-stable version of Istio tested in conjunction with Knative is &lt;strong&gt;v1.8.2&lt;/strong&gt;.
Versions in the 1.7 line are generally fine too.
1.8.0 and 1.8.1 have bugs that don&amp;rsquo;t work with Knative.&lt;/p&gt;
&lt;h2 id=&#34;installing-istio&#34;&gt;Installing Istio&lt;/h2&gt;
&lt;p&gt;When you install Istio, there are a few options depending on your goals. For a
basic Istio installation suitable for most Knative use cases, follow the
&lt;a href=&#34;#installing-istio-without-sidecar-injection&#34;&gt;Installing Istio without sidecar injection&lt;/a&gt;
instructions. If you&amp;rsquo;re familiar with Istio and know what kind of installation
you want, read through the options and choose the installation that suits your
needs.&lt;/p&gt;
&lt;p&gt;You can easily customize your Istio installation with &lt;code&gt;istioctl&lt;/code&gt;. The below sections
cover a few useful Istio configurations and their benefits.&lt;/p&gt;
&lt;h3 id=&#34;choosing-an-istio-installation&#34;&gt;Choosing an Istio installation&lt;/h3&gt;
&lt;p&gt;You can install Istio with or without a service mesh:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#installing-istio-without-sidecar-injection&#34;&gt;Installing Istio without sidecar injection&lt;/a&gt;(Recommended
default installation)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#installing-istio-with-sidecar-injection&#34;&gt;Installing Istio with sidecar injection&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to get up and running with Knative quickly, we recommend installing
Istio without automatic sidecar injection. This install is also recommended for
users who don&amp;rsquo;t need the Istio service mesh, or who want to enable the service
mesh by &lt;a href=&#34;https://istio.io/docs/setup/kubernetes/additional-setup/sidecar-injection/#manual-sidecar-injection&#34;&gt;manually injecting the Istio sidecars&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;installing-istio-without-sidecar-injection&#34;&gt;Installing Istio without sidecar injection&lt;/h4&gt;
&lt;p&gt;Run the following comand to install Istio.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;istioctl install -y
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;installing-istio-with-sidecar-injection&#34;&gt;Installing Istio with sidecar injection&lt;/h4&gt;
&lt;p&gt;If you want to enable the Istio service mesh, you must enable &lt;a href=&#34;https://istio.io/docs/setup/kubernetes/additional-setup/sidecar-injection/#automatic-sidecar-injection&#34;&gt;automatic sidecar
injection&lt;/a&gt;. The Istio service mesh provides a few benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Allows you to turn on &lt;a href=&#34;https://istio.io/docs/concepts/security/#mutual-tls-authentication&#34;&gt;mutual TLS&lt;/a&gt;, which secures service-to-service
traffic within the cluster.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Allows you to use the &lt;a href=&#34;https://istio.io/docs/tasks/security/authz-http/&#34;&gt;Istio authorization policy&lt;/a&gt;, controlling the access
to each Knative service based on Istio service roles.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To automatic sidecar injection, set &lt;code&gt;autoInject: enabled&lt;/code&gt; in addition to above
operator configuration.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; global:
proxy:
autoInject: enabled
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;using-istio-mtls-feature&#34;&gt;Using Istio mTLS feature&lt;/h4&gt;
&lt;p&gt;Since there are some networking communications between knative-serving namespace
and the namespace where your services running on, you need additional
preparations for mTLS enabled environment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable sidecar container on &lt;code&gt;knative-serving&lt;/code&gt; system namespace.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl label namespace knative-serving istio-injection&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;enabled
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;PeerAuthentication&lt;/code&gt; to &lt;code&gt;PERMISSIVE&lt;/code&gt; on knative-serving system namespace.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;EOF | kubectl apply -f -
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: &amp;#34;security.istio.io/v1beta1&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: &amp;#34;PeerAuthentication&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; name: &amp;#34;default&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; namespace: &amp;#34;knative-serving&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;spec:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; mtls:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; mode: PERMISSIVE
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After you install the cluster local gateway, your service and deployment for the local gateway is named &lt;code&gt;knative-local-gateway&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;updating-the-config-istio-configmap-to-use-a-non-default-local-gateway&#34;&gt;Updating the &lt;code&gt;config-istio&lt;/code&gt; configmap to use a non-default local gateway&lt;/h3&gt;
&lt;p&gt;If you create a custom service and deployment for local gateway with a name other than &lt;code&gt;knative-local-gateway&lt;/code&gt;, you
need to update gateway configmap &lt;code&gt;config-istio&lt;/code&gt; under the &lt;code&gt;knative-serving&lt;/code&gt; namespace.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit the &lt;code&gt;config-istio&lt;/code&gt; configmap:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl edit configmap config-istio -n knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Replace the &lt;code&gt;local-gateway.knative-serving.knative-local-gateway&lt;/code&gt; field with the custom service. As an example, if you name both
the service and deployment &lt;code&gt;custom-local-gateway&lt;/code&gt; under the namespace &lt;code&gt;istio-system&lt;/code&gt;, it should be updated to:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;custom-local-gateway.istio-system.svc.cluster.local
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As an example, if both the custom service and deployment are labeled with &lt;code&gt;custom: custom-local-gateway&lt;/code&gt;, not the default
&lt;code&gt;istio: knative-local-gateway&lt;/code&gt;, you must update gateway instance &lt;code&gt;knative-local-gateway&lt;/code&gt; in the &lt;code&gt;knative-serving&lt;/code&gt; namespace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl edit gateway knative-local-gateway -n knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Replace the label selector with the label of your service:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;istio: knative-local-gateway
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For the service above, it should be updated to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;custom: custom-local-gateway
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If there is a change in service ports (compared to that of
&lt;code&gt;knative-local-gateway&lt;/code&gt;), update the port info in the gateway accordingly.&lt;/p&gt;
&lt;h3 id=&#34;verifying-your-istio-install&#34;&gt;Verifying your Istio install&lt;/h3&gt;
&lt;p&gt;View the status of your Istio installation to make sure the install was
successful. It might take a few seconds, so rerun the following command until
all of the pods show a &lt;code&gt;STATUS&lt;/code&gt; of &lt;code&gt;Running&lt;/code&gt; or &lt;code&gt;Completed&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get pods --namespace istio-system
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Tip: You can append the &lt;code&gt;--watch&lt;/code&gt; flag to the &lt;code&gt;kubectl get&lt;/code&gt; commands to view
the pod status in realtime. You use &lt;code&gt;CTRL + C&lt;/code&gt; to exit watch mode.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;configuring-dns&#34;&gt;Configuring DNS&lt;/h3&gt;
&lt;p&gt;Knative dispatches to different services based on their hostname, so it is recommended to have DNS properly configured.&lt;/p&gt;
&lt;p&gt;To do this, begin by looking up the external IP address that Istio received:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl get svc -nistio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.0.2.24 34.83.80.117 15020:32206/TCP,80:30742/TCP,443:30996/TCP 2m14s
istio-pilot ClusterIP 10.0.3.27 &amp;lt;none&amp;gt; 15010/TCP,15011/TCP,8080/TCP,15014/TCP 2m14s
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This external IP can be used with your DNS provider with a wildcard &lt;code&gt;A&lt;/code&gt; record. However, for a basic non-production set
up, this external IP address can be used with &lt;code&gt;sslip.io&lt;/code&gt; in the &lt;code&gt;config-domain&lt;/code&gt; ConfigMap in &lt;code&gt;knative-serving&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can edit this by using the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl edit cm config-domain --namespace knative-serving
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Given the external IP above, change the content to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
name: config-domain
namespace: knative-serving
data:
# sslip.io is a &amp;quot;magic&amp;quot; DNS provider, which resolves all DNS lookups for:
# *.{ip}.sslip.io to {ip}.
34.83.80.117.sslip.io: &amp;quot;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;istio-resources&#34;&gt;Istio resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For the official Istio installation guide, see the
&lt;a href=&#34;https://istio.io/docs/setup/kubernetes/&#34;&gt;Istio Kubernetes Getting Started Guide&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For the full list of available configs when installing Istio with &lt;code&gt;istioctl&lt;/code&gt;, see
the
&lt;a href=&#34;https://istio.io/docs/setup/install/istioctl/&#34;&gt;Istio Installation Options reference&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;clean-up-istio&#34;&gt;Clean up Istio&lt;/h2&gt;
&lt;p&gt;See the &lt;a href=&#34;https://istio.io/docs/setup/install/istioctl/#uninstall-istio&#34;&gt;Uninstall Istio&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Try the &lt;a href=&#34;../../serving/getting-started-knative-app&#34;&gt;Getting Started with App Deployment guide&lt;/a&gt; for Knative serving.&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Checking the version of your Knative components</title>
<link>https://knative.dev/v0.23-docs/install/check-install-version/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/check-install-version/</guid>
<description>
&lt;p&gt;To obtain the version of the Knative component that you have running on your cluster, you query for the
&lt;code&gt;[component].knative.dev/release&lt;/code&gt; label with the following commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Knative Serving&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get namespace knative-serving -o &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;go-template={{index .metadata.labels &amp;#34;serving.knative.dev/release&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Knative Eventing&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get namespace knative-eventing -o &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;go-template={{index .metadata.labels &amp;#34;eventing.knative.dev/release&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Configuring the Serving Operator Custom Resource</title>
<link>https://knative.dev/v0.23-docs/install/operator/configuring-serving-cr/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/operator/configuring-serving-cr/</guid>
<description>
&lt;p&gt;The Knative Serving operator can be configured with these options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#version-configuration&#34;&gt;Version Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#serving-configuration-by-configmap&#34;&gt;Serving Configuration by ConfigMap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#private-repository-and-private-secrets&#34;&gt;Private repository and private secret&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ssl-certificate-for-controller&#34;&gt;SSL certificate for controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuration-of-knative-ingress-gateway&#34;&gt;Knative ingress gateway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuration-of-cluster-local-gateway&#34;&gt;Cluster local gateway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#high-availability&#34;&gt;High availability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#system-resource-settings&#34;&gt;System Resource Settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#override-system-deployments&#34;&gt;Override system deployments&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;version-configuration&#34;&gt;Version Configuration&lt;/h2&gt;
&lt;p&gt;Cluster administrators can install a specific version of Knative Serving by using the &lt;code&gt;spec.version&lt;/code&gt; field. For example,
if you want to install Knative Serving 0.16.0, you can apply the following &lt;code&gt;KnativeServing&lt;/code&gt; custom resource:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
version: 0.16.0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If &lt;code&gt;spec.version&lt;/code&gt; is not specified, the Knative Operator will install the latest available version of Knative Serving.
If users specify an invalid or unavailable version, the Knative Operator will do nothing. The Knative Operator always
includes the latest 3 minor release versions. For example, if the current version of the Knative Operator is 0.16.x, the
earliest version of Knative Serving available through the Operator is 0.14.0.&lt;/p&gt;
&lt;p&gt;If Knative Serving is already managed by the Operator, updating the &lt;code&gt;spec.version&lt;/code&gt; field in the &lt;code&gt;KnativeServing&lt;/code&gt; resource
enables upgrading or downgrading the Knative Serving version, without needing to change the Operator.&lt;/p&gt;
&lt;p&gt;Note that the Knative Operator only permits upgrades or downgrades by one minor release version at a time. For example,
if the current Knative Serving deployment is version 0.14.x, you must upgrade to 0.15.x before upgrading to 0.16.x.&lt;/p&gt;
&lt;h2 id=&#34;serving-configuration-by-configmap&#34;&gt;Serving Configuration by ConfigMap&lt;/h2&gt;
&lt;p&gt;The Operator manages the Knative Serving installation. It overwrites any updates to ConfigMaps which are used to configure Knative Serving.
The KnativeServing custom resource (CR) allows you to set values for these ConfigMaps by using the Operator.
Knative Serving has multiple ConfigMaps that are named with the prefix &lt;code&gt;config-&lt;/code&gt;.
The &lt;code&gt;spec.config&lt;/code&gt; in the KnativeServing CR has one &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; entry for each ConfigMap, named &lt;code&gt;config-&amp;lt;name&amp;gt;&lt;/code&gt;, with a value which will be used for the ConfigMap &lt;code&gt;data&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&#34;../../../serving/using-a-custom-domain&#34;&gt;setup a custom domain example&lt;/a&gt;, you can see the content of the ConfigMap
&lt;code&gt;config-domain&lt;/code&gt; is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
name: config-domain
namespace: knative-serving
data:
example.org: |
selector:
app: prod
example.com: &amp;quot;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Using the operator, specify the ConfigMap &lt;code&gt;config-domain&lt;/code&gt; using the operator CR:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
config:
domain:
example.org: |
selector:
app: prod
example.com: &amp;quot;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can apply values to multiple ConfigMaps. This example sets &lt;code&gt;stable-window&lt;/code&gt; to 60s in &lt;code&gt;config-autoscaler&lt;/code&gt; as well as specifying &lt;code&gt;config-domain&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
config:
domain:
example.org: |
selector:
app: prod
example.com: &amp;quot;&amp;quot;
autoscaler:
stable-window: &amp;quot;60s&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;All the ConfigMaps are created in the same namespace as the operator CR. You can use the operator CR as the
unique entry point to edit all of them.&lt;/p&gt;
&lt;h2 id=&#34;private-repository-and-private-secrets&#34;&gt;Private repository and private secrets&lt;/h2&gt;
&lt;p&gt;You can use the &lt;code&gt;spec.registry&lt;/code&gt; section of the operator CR to change the image references to point to a private registry or &lt;a href=&#34;https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod&#34;&gt;specify imagePullSecrets&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;default&lt;/code&gt;: this field defines a image reference template for all Knative images. The format
is &lt;code&gt;example-registry.io/custom/path/${NAME}:{CUSTOM-TAG}&lt;/code&gt;. If you use the same tag for all your images, the only difference is the image name. &lt;code&gt;${NAME}&lt;/code&gt; is
a pre-defined variable in the operator corresponding to the container name. If you name the images in your private repo to align with the container names (
&lt;code&gt;activator&lt;/code&gt;, &lt;code&gt;autoscaler&lt;/code&gt;, &lt;code&gt;controller&lt;/code&gt;, &lt;code&gt;webhook&lt;/code&gt;, &lt;code&gt;autoscaler-hpa&lt;/code&gt;, &lt;code&gt;networking-istio&lt;/code&gt;, and &lt;code&gt;queue-proxy&lt;/code&gt;), the &lt;code&gt;default&lt;/code&gt; argument should be sufficient.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;override&lt;/code&gt;: a map from container name to the full registry
location. This section is only needed when the registry images do not match the common naming format. For containers whose name matches a key, the value is used in preference to the image name calculated by &lt;code&gt;default&lt;/code&gt;. If a container&amp;rsquo;s name does not match a key in &lt;code&gt;override&lt;/code&gt;, the template in &lt;code&gt;default&lt;/code&gt; is used.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;imagePullSecrets&lt;/code&gt;: a list of Secret names used when pulling Knative container images. The Secrets
must be created in the same namespace as the Knative Serving Deployments. See &lt;a href=&#34;../../../serving/deploying/private-registry&#34;&gt;deploying images
from a private container registry&lt;/a&gt; for configuration details.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;download-images-in-a-predefined-format-without-secrets&#34;&gt;Download images in a predefined format without secrets:&lt;/h3&gt;
&lt;p&gt;This example shows how you can define custom image links that can be defined in the CR using the simplified format
&lt;code&gt;docker.io/knative-images/${NAME}:{CUSTOM-TAG}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the example below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the custom tag &lt;code&gt;v0.13.0&lt;/code&gt; is used for all images&lt;/li&gt;
&lt;li&gt;all image links are accessible without using secrets&lt;/li&gt;
&lt;li&gt;images are pushed as &lt;code&gt;docker.io/knative-images/${NAME}:{CUSTOM-TAG}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First, you need to make sure your images pushed to the following image tags:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;th&gt;Docker Image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;activator&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/activator:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;autoscaler&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/autoscaler:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/controller:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/webhook:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;autoscaler-hpa&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/autoscaler-hpa:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;networking-istio&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/networking-istio:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;queue-proxy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/queue-proxy:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Then, you need to define your operator CR with following content:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
registry:
default: docker.io/knative-images/${NAME}:v0.13.0
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;download-images-individually-without-secrets&#34;&gt;Download images individually without secrets:&lt;/h3&gt;
&lt;p&gt;If your custom image links are not defined in a uniform format by default, you will need to individually include each
link in the CR.&lt;/p&gt;
&lt;p&gt;For example, to given the following images:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;th&gt;Docker Image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;activator&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images-repo1/activator:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;autoscaler&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images-repo2/autoscaler:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images-repo3/controller:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images-repo4/webhook:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;autoscaler-hpa&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images-repo5/autoscaler-hpa:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;networking-istio&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images-repo6/prefix-networking-istio:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;queue-proxy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images-repo7/queue-proxy-suffix:v0.13.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The operator CR should be modified to include the full list:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
registry:
override:
activator: docker.io/knative-images-repo1/activator:v0.13.0
autoscaler: docker.io/knative-images-repo2/autoscaler:v0.13.0
controller: docker.io/knative-images-repo3/controller:v0.13.0
webhook: docker.io/knative-images-repo4/webhook:v0.13.0
autoscaler-hpa: docker.io/knative-images-repo5/autoscaler-hpa:v0.13.0
networking-istio: docker.io/knative-images-repo6/prefix-networking-istio:v0.13.0
queue-proxy: docker.io/knative-images-repo7/queue-proxy-suffix:v0.13.0
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;download-images-with-secrets&#34;&gt;Download images with secrets:&lt;/h3&gt;
&lt;p&gt;If your image repository requires private secrets for
access, include the &lt;code&gt;imagePullSecrets&lt;/code&gt; attribute.&lt;/p&gt;
&lt;p&gt;This example uses a secret named &lt;code&gt;regcred&lt;/code&gt;. You must create your own private secrets if these are required:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials&#34;&gt;From existing docker credentials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#create-a-secret-by-providing-credentials-on-the-command-line&#34;&gt;From command line for docker credentials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kubernetes.io/docs/concepts/configuration/secret/#creating-your-own-secrets&#34;&gt;Create your own secret&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After you create this secret, edit your operator CR by appending the content below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
registry:
...
imagePullSecrets:
- name: regcred
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The field &lt;code&gt;imagePullSecrets&lt;/code&gt; expects a list of secrets. You can add multiple secrets to access the images as below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
registry:
...
imagePullSecrets:
- name: regcred
- name: regcred-2
...
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;ssl-certificate-for-controller&#34;&gt;SSL certificate for controller&lt;/h2&gt;
&lt;p&gt;To &lt;a href=&#34;../../../serving/tag-resolution&#34;&gt;enable tag to digest resolution&lt;/a&gt;, the Knative Serving controller needs to access the container registry.
To allow the controller to trust a self-signed registry cert, you can use the Operator to specify the certificate using a ConfigMap or Secret.&lt;/p&gt;
&lt;p&gt;Specify the following fields in &lt;code&gt;spec.controller-custom-certs&lt;/code&gt; to select a custom registry certificate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: the name of the ConfigMap or Secret.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: either the string &amp;ldquo;ConfigMap&amp;rdquo; or &amp;ldquo;Secret&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you create a ConfigMap named &lt;code&gt;testCert&lt;/code&gt; containing the certificate, change your CR:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
controller-custom-certs:
name: testCert
type: ConfigMap
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;configuration-of-knative-ingress-gateway&#34;&gt;Configuration of Knative ingress gateway&lt;/h2&gt;
&lt;p&gt;To set up custom ingress gateway, follow &lt;a href=&#34;../../../serving/setting-up-custom-ingress-gateway&#34;&gt;&lt;strong&gt;Step 1: Create Gateway Service and Deployment Instance&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;step-2-update-the-knative-gateway&#34;&gt;Step 2: Update the Knative gateway&lt;/h3&gt;
&lt;p&gt;Update &lt;code&gt;spec.ingress.istio.knative-ingress-gateway&lt;/code&gt; to select the labels of the new ingress gateway:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
ingress:
istio:
enabled: true
knative-ingress-gateway:
selector:
custom: ingressgateway
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;step-3-update-gateway-configmap&#34;&gt;Step 3: Update Gateway ConfigMap&lt;/h3&gt;
&lt;p&gt;Additionally, you will need to update the Istio ConfigMap:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
ingress:
istio:
enabled: true
knative-ingress-gateway:
selector:
custom: ingressgateway
config:
istio:
gateway.knative-serving.knative-ingress-gateway: &amp;quot;custom-ingressgateway.istio-system.svc.cluster.local&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The key in &lt;code&gt;spec.config.istio&lt;/code&gt; is in the format of &lt;code&gt;gateway.{{gateway_namespace}}.{{gateway_name}}&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;configuration-of-cluster-local-gateway&#34;&gt;Configuration of cluster local gateway&lt;/h2&gt;
&lt;p&gt;Update &lt;code&gt;spec.ingress.istio.knative-local-gateway&lt;/code&gt; to select the labels of the new cluster-local ingress gateway:&lt;/p&gt;
&lt;h3 id=&#34;default-local-gateway-name&#34;&gt;Default local gateway name:&lt;/h3&gt;
&lt;p&gt;Go through the guide &lt;a href=&#34;../../installing-istio/#installing-istio-without-sidecar-injection&#34;&gt;here&lt;/a&gt; to use local cluster gateway,
if you use the default gateway called &lt;code&gt;knative-local-gateway&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;non-default-local-gateway-name&#34;&gt;Non-default local gateway name:&lt;/h3&gt;
&lt;p&gt;If you create custom local gateway with a name other than &lt;code&gt;knative-local-gateway&lt;/code&gt;, update &lt;code&gt;config.istio&lt;/code&gt; and the
&lt;code&gt;knative-local-gateway&lt;/code&gt; selector:&lt;/p&gt;
&lt;p&gt;This example shows a service and deployment &lt;code&gt;knative-local-gateway&lt;/code&gt; in the namespace &lt;code&gt;istio-system&lt;/code&gt;, with the
label &lt;code&gt;custom: custom-local-gw&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
ingress:
istio:
enabled: true
knative-local-gateway:
selector:
custom: custom-local-gateway
config:
istio:
local-gateway.knative-serving.knative-local-gateway: &amp;quot;custom-local-gateway.istio-system.svc.cluster.local&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;high-availability&#34;&gt;High availability&lt;/h2&gt;
&lt;p&gt;By default, Knative Serving runs a single instance of each controller. The &lt;code&gt;spec.high-availability&lt;/code&gt; field allows you to configure the number of replicas for the following leader-elected controllers: &lt;code&gt;controller&lt;/code&gt;, &lt;code&gt;autoscaler-hpa&lt;/code&gt;, &lt;code&gt;networking-istio&lt;/code&gt;. This field also configures the &lt;code&gt;HorizontalPodAutoscaler&lt;/code&gt; resources for the data plane (&lt;code&gt;activator&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;The following configuration specifies a replica count of 3 for the controllers and a minimum of 3 activators (which may scale higher if needed):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
high-availability:
replicas: 3
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;system-resource-settings&#34;&gt;System Resource Settings&lt;/h2&gt;
&lt;p&gt;The operator custom resource allows you to configure system resources for the Knative system containers.
Requests and limits can be configured for the following containers: &lt;code&gt;activator&lt;/code&gt;, &lt;code&gt;autoscaler&lt;/code&gt;, &lt;code&gt;controller&lt;/code&gt;, &lt;code&gt;webhook&lt;/code&gt;, &lt;code&gt;autoscaler-hpa&lt;/code&gt;,
&lt;code&gt;networking-istio&lt;/code&gt; and &lt;code&gt;queue-proxy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To override resource settings for a specific container, create an entry in the &lt;code&gt;spec.resources&lt;/code&gt; list with the container name and the &lt;a href=&#34;https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container&#34;&gt;Kubernetes resource settings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For example, the following KnativeServing resource configures the &lt;code&gt;activator&lt;/code&gt; to request 0.3 CPU and 100MB of RAM, and sets hard limits of 1 CPU, 250MB RAM, and 4GB of local storage:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
resources:
- container: activator
requests:
cpu: 300m
memory: 100Mi
limits:
cpu: 1000m
memory: 250Mi
ephemeral-storage: 4Gi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you would like to add another container &lt;code&gt;autoscaler&lt;/code&gt; with the same configuration, you need to change your CR as below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
resources:
- container: activator
requests:
cpu: 300m
memory: 100Mi
limits:
cpu: 1000m
memory: 250Mi
ephemeral-storage: 4Gi
- container: autoscaler
requests:
cpu: 300m
memory: 100Mi
limits:
cpu: 1000m
memory: 250Mi
ephemeral-storage: 4Gi
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;override-system-deployments&#34;&gt;Override system deployments&lt;/h2&gt;
&lt;p&gt;If you would like to override some configurations for a specific deployment, you can override the configuration by using &lt;code&gt;spec.deployments&lt;/code&gt; in CR.
Currently &lt;code&gt;replicas&lt;/code&gt;, &lt;code&gt;labels&lt;/code&gt; and &lt;code&gt;annotations&lt;/code&gt; are supported.&lt;/p&gt;
&lt;p&gt;For example, the following KnativeServing resource overrides the &lt;code&gt;webhook&lt;/code&gt; to have &lt;code&gt;3&lt;/code&gt; replicass, &lt;code&gt;mylabel: foo&lt;/code&gt; labels and &lt;code&gt;myannotataions: bar&lt;/code&gt; annotations,
while other system deployments have &lt;code&gt;2&lt;/code&gt; replicas by &lt;code&gt;spec.high-availability&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
name: ks
namespace: knative-serving
spec:
high-availability:
replicas: 2
deployments:
- name: webhook
replicas: 3
labels:
mylabel: foo
annotations:
myannotataions: bar
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The labels and annotations settings override webhook&amp;rsquo;s labels and annotations in deployment and pod both.&lt;/p&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Installation files</title>
<link>https://knative.dev/v0.23-docs/install/installation-files/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/installation-files/</guid>
<description>
&lt;p&gt;This guide provides reference information about the YAML files in the Knative
Serving and Eventing releases.&lt;/p&gt;
&lt;p&gt;The YAML files in the releases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The custom resource definitions (CRDs) and core components required to install Knative.&lt;/li&gt;
&lt;li&gt;Optional components that you can apply to customize your installation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For information about installing these files, see &lt;a href=&#34;../install-serving-with-yaml&#34;&gt;Installing Serving using YAML files&lt;/a&gt;
and &lt;a href=&#34;../install-eventing-with-yaml&#34;&gt;Installing Eventing using YAML files&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;knative-serving-installation-files&#34;&gt;Knative Serving installation files&lt;/h2&gt;
&lt;p&gt;The table below describes the installation files in the Knative Serving release:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Dependencies&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;serving-core.yaml&lt;/td&gt;
&lt;td&gt;Required: Knative Serving core components.&lt;/td&gt;
&lt;td&gt;serving-crds.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-crds.yaml&lt;/td&gt;
&lt;td&gt;Required: Knative Serving core CRDs.&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-default-domain.yaml&lt;/td&gt;
&lt;td&gt;Configures Knative Serving to use &lt;a href=&#34;http://sslip.io&#34;&gt;http://sslip.io&lt;/a&gt; as the default DNS suffix.&lt;/td&gt;
&lt;td&gt;serving-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-domainmapping-crds.yaml&lt;/td&gt;
&lt;td&gt;CRDs used by the Domain Mapping feature.&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-domainmapping.yaml&lt;/td&gt;
&lt;td&gt;Components used by the Domain Mapping feature.&lt;/td&gt;
&lt;td&gt;serving-domainmapping-crds.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-hpa.yaml&lt;/td&gt;
&lt;td&gt;Components to autoscale Knative revisions through the Kubernetes Horizontal Pod Autoscaler.&lt;/td&gt;
&lt;td&gt;serving-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-nscert.yaml&lt;/td&gt;
&lt;td&gt;Components to provision TLS wildcard certificates.&lt;/td&gt;
&lt;td&gt;serving-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-post-install-jobs.yaml&lt;/td&gt;
&lt;td&gt;Additional jobs after installing &lt;code&gt;serving-core.yaml&lt;/code&gt;. Currently it is the same as &lt;code&gt;serving-storage-version-migration.yaml&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;serving-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;serving-storage-version-migration.yaml&lt;/td&gt;
&lt;td&gt;Migrates the storage version of Knative resources, including Service, Route, Revision, and Configuration, from &lt;code&gt;v1alpha1&lt;/code&gt; and &lt;code&gt;v1beta1&lt;/code&gt; to &lt;code&gt;v1&lt;/code&gt;. Required by upgrade from version 0.18 to 0.19.&lt;/td&gt;
&lt;td&gt;serving-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;knative-eventing-installation-files&#34;&gt;Knative Eventing installation files&lt;/h2&gt;
&lt;p&gt;The table below describes the installation files in the Knative Eventing release:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Dependencies&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;eventing-core.yaml&lt;/td&gt;
&lt;td&gt;Required: Knative Eventing core components.&lt;/td&gt;
&lt;td&gt;eventing-crds.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eventing-crds.yaml&lt;/td&gt;
&lt;td&gt;Required: Knative Eventing core CRDs.&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eventing-post-install.yaml&lt;/td&gt;
&lt;td&gt;Jobs required for upgrading to a new minor version.&lt;/td&gt;
&lt;td&gt;eventing-core.yaml, eventing-crds.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eventing-sugar-controller.yaml&lt;/td&gt;
&lt;td&gt;Reconciler that watches for labels and annotations on certain resources to inject eventing components.&lt;/td&gt;
&lt;td&gt;eventing-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eventing.yaml&lt;/td&gt;
&lt;td&gt;Combines &lt;code&gt;eventing-core.yaml&lt;/code&gt;, &lt;code&gt;mt-channel-broker.yaml&lt;/code&gt;, and &lt;code&gt;in-memory-channel.yaml&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;in-memory-channel.yaml&lt;/td&gt;
&lt;td&gt;Components to configure In-Memory Channels.&lt;/td&gt;
&lt;td&gt;eventing-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mt-channel-broker.yaml&lt;/td&gt;
&lt;td&gt;Components to configure Multi-Tenant (MT) Channel Broker.&lt;/td&gt;
&lt;td&gt;eventing-core.yaml&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Collecting Logs with Fluentbit</title>
<link>https://knative.dev/v0.23-docs/install/collecting-logs/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/collecting-logs/</guid>
<description>
&lt;p&gt;This document describes how to set up &lt;a href=&#34;https://docs.fluentbit.io/&#34;&gt;Fluent Bit&lt;/a&gt;,
a log processor and forwarder, to collect your kubernetes logs in a central
directory. This is not required for running Knative, but can be helpful with
&lt;a href=&#34;../serving&#34;&gt;Knative Serving&lt;/a&gt;, which will automatically delete pods (and their
associated logs) when they are no longer needed. Note that Fluent Bit supports
exporting to a number of other log providers; if you already have an existing
log provider (for example, Splunk, Datadog, ElasticSearch, or Stackdriver), then
you may only need
&lt;a href=&#34;#setting-up-the-forwarders&#34;&gt;the second part of setting up and configuring log forwarders&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Setting up log collection consists of two pieces: running a log forwarding
DaemonSet on each node, and running a collector somewhere in the cluster (in our
example, we use a StatefulSet which stores logs on a Kubernetes
PersistentVolumeClaim, but you could also use a HostPath).&lt;/p&gt;
&lt;h2 id=&#34;setting-up-the-collector&#34;&gt;Setting up the collector&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s useful to set up the collector before the forwarders, because you&amp;rsquo;ll need
the address of the collector when configuring the forwarders, and the forwarders
may queue logs until the collector is ready.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;system.svg&#34; alt=&#34;System diagram: forwarders and co-located collector and nginx&#34;&gt;&lt;/p&gt;
&lt;!-- yuml.me UML rendering of:
[Forwarder1]logs-&gt;[Collector]
[Forwarder2]logs-&gt;[Collector]
// Add notes
[Collector]-&gt;[shared volume]
[nginx]-[shared volume]
--&gt;
&lt;p&gt;The &lt;a href=&#34;./fluent-bit-collector.yaml&#34;&gt;&lt;code&gt;fluent-bit-collector.yaml&lt;/code&gt;&lt;/a&gt; defines a
StatefulSet as well as a Kubernetes Service which allows accessing and reading
the logs from within the cluster. The supplied configuration will create the
monitoring configuration in a namespace called &lt;code&gt;logging&lt;/code&gt;. You can apply the
configuration with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply --filename https://github.com/knative/docs/raw/main/docs/install/collecting-logs/fluent-bit-collector.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The default configuration will classify logs into Knative, apps (pods with an
&lt;code&gt;app=&lt;/code&gt; label which aren&amp;rsquo;t Knative), and the default to logging with the pod
name; this can be changed by updating the &lt;code&gt;log-collector-config&lt;/code&gt; ConfigMap
before or after installation. Once the ConfigMap is updated, you&amp;rsquo;ll need to
restart Fluent Bit (for example, by deleting the pod and letting the StatefulSet
recreate it).&lt;/p&gt;
&lt;p&gt;To access the logs through your web browser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl port-forward --namespace logging service/log-collector 8080:80
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then visit http://localhost:8080/.&lt;/p&gt;
&lt;p&gt;You can also open a shell in the &lt;code&gt;nginx&lt;/code&gt; pod and search the logs using unix
tools:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl exec --namespace logging --stdin --tty --container nginx log-collector-0
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;setting-up-the-forwarders&#34;&gt;Setting up the forwarders&lt;/h2&gt;
&lt;p&gt;For the most part, you can follow the
&lt;a href=&#34;https://docs.fluentbit.io/manual/installation/kubernetes&#34;&gt;Fluent Bit directions for installing on Kubernetes&lt;/a&gt;.
Those directions will set up a Fluent Bit DaemonSet which forwards logs to
ElasticSearch by default; when the directions call for creating the ConfigMap,
you&amp;rsquo;ll want to either replace the elasticsearch configuration with
&lt;a href=&#34;./fluent-bit-configmap.yaml&#34;&gt;this &lt;code&gt;fluent-bit-configmap.yaml&lt;/code&gt;&lt;/a&gt; or add the
following block to the ConfigMap and update the
&lt;code&gt;@INCLUDE output-elasticsearch.conf&lt;/code&gt; to be &lt;code&gt;@INCLUDE output-forward.conf&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;output-forward.conf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; [OUTPUT]
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; Name forward
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; Host log-collector.logging
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; Port 24224
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; Require_ack_response True&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you are using a different log collection infrastructure (Splunk, for
example),
&lt;a href=&#34;https://docs.fluentbit.io/manual/pipeline/outputs&#34;&gt;follow the directions in the FluentBit documentation&lt;/a&gt;
on how to configure your forwarders.&lt;/p&gt;
&lt;h2 id=&#34;local-collector&#34;&gt;Local collector&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This describes a development environment setup, and is not appropriate
for production.&lt;/p&gt;
&lt;p&gt;If you are using a local Kubernetes cluster for development (Kind, Docker
Desktop, or Minikube), you can create a &lt;code&gt;hostPath&lt;/code&gt; PersistentVolume to store the
logs on your desktop OS. This will allow you to use all your normal desktop
tools on the files without needing Kubernetes-specific tools.&lt;/p&gt;
&lt;p&gt;The PersistentVolumeClaim will look something like this, but the &lt;code&gt;hostPath&lt;/code&gt; will
vary based on your Kubernetes software and host operating system. Some example
values are documented below.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;PersistentVolume&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;shared-logs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logs-collector&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;accessModes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ReadWriteOnce&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;storageClassName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;manual&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;claimRef&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;PersistentVolumeClaim&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logs-log-collector-0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logging&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;capacity&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;storage&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;5Gi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;&amp;lt;see below&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then you&amp;rsquo;ll need to update the StatefulSet&amp;rsquo;s &lt;code&gt;volumeClaimTemplates&lt;/code&gt; to
reference the &lt;code&gt;shared-logs&lt;/code&gt; volume, like this fragment of yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;volumeClaimTemplates&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;accessModes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ReadWriteOnce&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;volumeName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;shared-logs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;kind&#34;&gt;Kind&lt;/h3&gt;
&lt;p&gt;When creating your cluster, you&amp;rsquo;ll need to use a &lt;code&gt;kind-config.yaml&lt;/code&gt; and specify
&lt;code&gt;extraMounts&lt;/code&gt; for each node, like so:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiversion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kind.x-k8s.io/v1alpha4&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Cluster&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nodes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;role&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;control-plane&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;extraMounts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;./logs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containerPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/shared/logs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;role&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;worker&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;extraMounts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;./logs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containerPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/shared/logs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can then use &lt;code&gt;/shared/logs&lt;/code&gt; as the &lt;code&gt;spec.hostPath.path&lt;/code&gt; in your
PersistentVolume. Note that the directory path &lt;code&gt;./logs&lt;/code&gt; is relative to the
directory that the Kind cluster was created in.&lt;/p&gt;
&lt;h3 id=&#34;docker-desktop&#34;&gt;Docker Desktop&lt;/h3&gt;
&lt;p&gt;Docker desktop automatically creates some shared mounts between the host and the
guest operating systems, so you only need to know the path to your home
directory. Here are some examples for different operating systems:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Host OS&lt;/th&gt;
&lt;th&gt;&lt;code&gt;hostPath&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mac OS&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/Users/${USER}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/run/desktop/mnt/host/c/Users/${USER}/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/home/${USER}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;minikube&#34;&gt;Minikube&lt;/h3&gt;
&lt;p&gt;Minikube requires an explicit command to &lt;a href=&#34;https://minikube.sigs.k8s.io/docs/handbook/mount/&#34;&gt;mount a directory into the VM running
Kubernetes&lt;/a&gt;. This command
mounts the &lt;code&gt;logs&lt;/code&gt; directory inside the current directory onto &lt;code&gt;/mnt/logs&lt;/code&gt; in the
VM:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;minikube mount ./logs:/mnt/logs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You would then reference &lt;code&gt;/mnt/logs&lt;/code&gt; as the &lt;code&gt;hostPath.path&lt;/code&gt; in the
PersistentVolume.&lt;/p&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Collecting Metrics with OpenTelemetry</title>
<link>https://knative.dev/v0.23-docs/install/collecting-metrics/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/collecting-metrics/</guid>
<description>
&lt;p&gt;This document describes how to set up the
&lt;a href=&#34;https://opentelemetry.io/docs/collector/&#34;&gt;OpenTelemetry Collector&lt;/a&gt; to receive
metrics from the Knative infrastructure components and distribute them to
Prometheus. &lt;a href=&#34;https://opentelemetry.io/&#34;&gt;OpenTelemetry&lt;/a&gt; is a CNCF an
observability framework for cloud-native software. The project provides a
collection of tools, APIs, and SDKs. You use it to instrument, generate,
collect, and export telemetry data (metrics, logs, and traces) for analysis in
order to understand your software&amp;rsquo;s performance and behavior. OpenTelemetry
allows Knative to build provider-agnostic instrumentation into the platform, so
that it&amp;rsquo;s easy to export metrics to multiple monitoring services without
needing to rebuild or reconfigure the Knative binaries.&lt;/p&gt;
&lt;h2 id=&#34;setting-up-the-collector&#34;&gt;Setting up the collector&lt;/h2&gt;
&lt;p&gt;The collector provides a long-lived location where various Knative components
can push metrics (and eventually traces) to be retained and collected by a
monitoring service. For this example, we&amp;rsquo;ll configure a single collector
instance using a ConfigMap and a Deployment. For more complex deployments, some
of this can be automated using the
&lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-operator&#34;&gt;opentelemetry-operator&lt;/a&gt;,
but it&amp;rsquo;s also easy to manage this service directly. Note that you can attach
other components (node agents, other services); this is just a simple sample.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./system-diagram.svg&#34; alt=&#34;Diagram of components reporting to collector, which is scraped by Prometheus&#34;&gt;&lt;/p&gt;
&lt;!-- yuml.me UML rendering of:
[queue-proxy1]-&gt;[Collector]
[queue-proxy2]-&gt;[Collector]
[autoscaler]-&gt;[Collector]
[controller]-&gt;[Collector]
[Collector]&lt;-scrape[Prometheus]
--&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, create a namespace for the collector to run in:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl create namespace metrics
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And then create a Deployment, Service, and ConfigMap for the collector:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl apply --filename https://raw.githubusercontent.com/knative/docs/master/docs/install/collecting-metrics/collector.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finally, update the &lt;code&gt;config-observability&lt;/code&gt; ConfigMap in Knative Serving and
Eventing&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl patch --namespace knative-serving configmap/config-observability &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;metrics.backend-destination&amp;#34;:&amp;#34;opencensus&amp;#34;,&amp;#34;request-metrics-backend-destination&amp;#34;:&amp;#34;opencensus&amp;#34;,&amp;#34;metrics.opencensus-address&amp;#34;:&amp;#34;otel-collector.metrics:55678&amp;#34;}}&amp;#39;&lt;/span&gt;
kubectl patch --namespace knative-eventing configmap/config-observability &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --type merge &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt; --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;metrics.backend-destination&amp;#34;:&amp;#34;opencensus&amp;#34;,&amp;#34;metrics.opencensus-address&amp;#34;:&amp;#34;otel-collector.metrics:55678&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can check that metrics are being forwarded by loading the Prometheus export
port on the collector:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl port-forward --namespace metrics deployment/otel-collector &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8889&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then fetch http://localhost:8889/metrics to see the exported metrics.&lt;/p&gt;
&lt;h2 id=&#34;setting-up-prometheus&#34;&gt;Setting up Prometheus&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://prometheus.io/&#34;&gt;Prometheus&lt;/a&gt; is an open-source tool for collecting and
aggregating timeseries metrics. Full configuration of Prometheus can be found at
the website, but this document will provide a simple setup for scraping the
OpenTelemetry Collector we set up in the previous section.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the
&lt;a href=&#34;https://github.com/prometheus-operator/prometheus-operator&#34;&gt;Prometheus Operator&lt;/a&gt;.
Note that the provided manifest installs the operator into the &lt;code&gt;default&lt;/code&gt;
namespace. If you want to install into another namespace, you&amp;rsquo;ll need to
download the YAML manifest and update all the namespace references to your
target namespace.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl apply --filename https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/master/bundle.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You&amp;rsquo;ll then need to set up a ServiceMonitor object to track the OpenTelemetry
Collector, as well as a ServiceAccount with the ability to read Kubernetes
services and pods (so that Prometheus can track the resource endpoints) and
finally a Prometheus object to instantiate the actual Prometheus instance.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl apply --filename prometheus.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By default, the Prometheus instance will only be exposed on a private service
named &lt;code&gt;prometheus-operated&lt;/code&gt;; to access the console in your web browser, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;kubectl port-forward --namespace metrics service/prometheus-operated &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;9090&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then access the console in your browser via http://localhost:9090.&lt;/p&gt;
</description>
</item>
<item>
<title>V0.23-Docs: Configuring the Eventing Operator custom resource</title>
<link>https://knative.dev/v0.23-docs/install/operator/configuring-eventing-cr/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://knative.dev/v0.23-docs/install/operator/configuring-eventing-cr/</guid>
<description>
&lt;p&gt;You can configure the Knative Eventing operator by modifying settings in the KnativeEventing custom resource (CR).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Kubernetes spec level policies cannot be configured using the Knative Operators.&lt;/p&gt;
&lt;!--TODO: break this into sub sections like for the channels sections, i.e. a page per topic--&gt;
&lt;h2 id=&#34;installing-a-specific-version-of-eventing&#34;&gt;Installing a specific version of Eventing&lt;/h2&gt;
&lt;p&gt;Cluster administrators can install a specific version of Knative Eventing by using the &lt;code&gt;spec.version&lt;/code&gt; field. For example,
if you want to install Knative Eventing v0.19.0, you can apply the following KnativeEventing CR:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0.19.0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If &lt;code&gt;spec.version&lt;/code&gt; is not specified, the Knative Operator will install the latest available version of Knative Eventing.
If users specify an invalid or unavailable version, the Knative Operator will do nothing. The Knative Operator always
includes the latest 3 minor release versions.&lt;/p&gt;
&lt;p&gt;If Knative Eventing is already managed by the Operator, updating the &lt;code&gt;spec.version&lt;/code&gt; field in the KnativeEventing CR enables upgrading or downgrading the Knative Eventing version, without requiring modifications to the Operator.&lt;/p&gt;
&lt;p&gt;Note that the Knative Operator only permits upgrades or downgrades by one minor release version at a time. For example,
if the current Knative Eventing deployment is version 0.18.x, you must upgrade to 0.19.x before upgrading to 0.20.x.&lt;/p&gt;
&lt;h2 id=&#34;configuring-knative-eventing-using-configmaps&#34;&gt;Configuring Knative Eventing using ConfigMaps&lt;/h2&gt;
&lt;p&gt;The Operator manages the Knative Eventing installation. It overwrites any updates to ConfigMaps which are used to configure Knative Eventing.
The KnativeEventing CR allows you to set values for these ConfigMaps by using the Operator.&lt;/p&gt;
&lt;p&gt;All Knative Eventing ConfigMaps are created in the same namespace as the KnativeEventing CR. You can use the KnativeEventing CR as a unique entry point to edit all ConfigMaps.&lt;/p&gt;
&lt;p&gt;Knative Eventing has multiple ConfigMaps that are named with the prefix &lt;code&gt;config-&lt;/code&gt;.
The &lt;code&gt;spec.config&lt;/code&gt; in the KnativeEventing CR has one &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; entry for each ConfigMap, named &lt;code&gt;config-&amp;lt;name&amp;gt;&lt;/code&gt;, with a value which will be used for the ConfigMap &lt;code&gt;data&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;setting-a-default-channel&#34;&gt;Setting a default channel&lt;/h3&gt;
&lt;p&gt;If you are using different channel implementations, like the KafkaChannel, or you want a specific configuration of the InMemoryChannel to be the default configuration, you can change the default behavior by updating the &lt;code&gt;default-ch-webhook&lt;/code&gt; ConfigMap.&lt;/p&gt;
&lt;p&gt;You can do this by modifying the KnativeEventing CR:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default-ch-webhook&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default-ch-config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; clusterDefault:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; apiVersion: messaging.knative.dev/v1beta1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; kind: KafkaChannel
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; spec:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; numPartitions: 10
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; replicationFactor: 1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; namespaceDefaults:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; my-namespace:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; apiVersion: messaging.knative.dev/v1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; kind: InMemoryChannel
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; spec:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; delivery:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; backoffDelay: PT0.5S
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; backoffPolicy: exponential
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; retry: 5&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The &lt;code&gt;clusterDefault&lt;/code&gt; setting determines the global, cluster-wide default channel type. You can configure channel defaults for individual namespaces by using the &lt;code&gt;namespaceDefaults&lt;/code&gt; setting.&lt;/p&gt;
&lt;h3 id=&#34;setting-the-default-channel-for-the-broker&#34;&gt;Setting the default channel for the broker&lt;/h3&gt;
&lt;p&gt;If you are using a channel-based broker, you can change the default channel type for the broker from InMemoryChannel to KafkaChannel, by updating the &lt;code&gt;config-br-default-channel&lt;/code&gt; ConfigMap.&lt;/p&gt;
&lt;p&gt;You can do this by modifying the KnativeEventing CR:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;config-br-default-channel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;channelTemplateSpec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; apiVersion: messaging.knative.dev/v1beta1
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; kind: KafkaChannel
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; spec:
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; numPartitions: 6
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt; replicationFactor: 1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;private-repository-and-private-secrets&#34;&gt;Private repository and private secrets&lt;/h2&gt;
&lt;p&gt;The Knative Eventing Operator CR is configured the same way as the Knative Serving Operator CR.
See the documentation on &lt;a href=&#34;configuring-serving-cr#private-repository-and-private-secrets&#34;&gt;Private repository and private secret&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Knative Eventing also specifies only one container within each Deployment resource. However, the container does not use
the same name as its parent Deployment, which means that the container name in Knative Eventing is not the same unique identifier
as it is in Knative Serving.&lt;/p&gt;
&lt;p&gt;List of containers within each Deployment resource:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Deployment name&lt;/th&gt;
&lt;th&gt;Container name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core eventing&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core eventing&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-webhook&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-webhook&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eventing Broker&lt;/td&gt;
&lt;td&gt;&lt;code&gt;broker-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In-Memory Channel&lt;/td&gt;
&lt;td&gt;&lt;code&gt;imc-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;controller&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In-Memory Channel&lt;/td&gt;
&lt;td&gt;&lt;code&gt;imc-dispatcher&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dispatcher&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The &lt;code&gt;default&lt;/code&gt; field can still be used to replace the images in a predefined format. However, if the container name is not
a unique identifier, for example &lt;code&gt;eventing-controller&lt;/code&gt;, you must use the &lt;code&gt;override&lt;/code&gt; field to replace it, by specifying
&lt;code&gt;deployment/container&lt;/code&gt; as the unique key.&lt;/p&gt;
&lt;p&gt;Some images are defined by using the environment variable in Knative Eventing. They can be replaced by taking advantage of the
&lt;code&gt;override&lt;/code&gt; field.&lt;/p&gt;
&lt;h3 id=&#34;download-images-in-a-predefined-format-without-secrets&#34;&gt;Download images in a predefined format without secrets&lt;/h3&gt;
&lt;p&gt;This example shows how you can define custom image links that can be defined in the KnativeEventing CR using the simplified format
&lt;code&gt;docker.io/knative-images/${NAME}:{CUSTOM-TAG}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the example below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The custom tag &lt;code&gt;latest&lt;/code&gt; is used for all images.&lt;/li&gt;
&lt;li&gt;All image links are accessible without using secrets.&lt;/li&gt;
&lt;li&gt;Images are defined in the accepted format &lt;code&gt;docker.io/knative-images/${NAME}:{CUSTOM-TAG}&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Push images to the following image tags:&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Deployment&lt;/th&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;th&gt;Docker image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/eventing-controller:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-webhook&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/eventing-webhook:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;broker-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/broker-eventing-controller:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/controller:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dispatcher&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/dispatcher:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Define your the KnativeEventing CR with following content:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;registry&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images/${NAME}:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;override&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;broker-controller/eventing-controller&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo1/broker-eventing-controller:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;- `${NAME}` maps to the container name in each `Deployment` resource.
- `default` is used to define the image format for all containers, except the container `eventing-controller` in the deployment `broker-controller`. To replace the image for this container, use the `override`
field to specify individually, by using `broker-controller/eventing-controller` as the key.
&lt;/code&gt;&lt;/pre&gt;
&lt;!-- TODO: check that this is still relevant, I don&#39;t see default in this example?--&gt;
&lt;h3 id=&#34;download-images-from-different-repositories-without-secrets&#34;&gt;Download images from different repositories without secrets&lt;/h3&gt;
&lt;p&gt;If your custom image links are not defined in a uniform format, you will need to individually include each link in the KnativeEventing CR.&lt;/p&gt;
&lt;p&gt;For example, to define the following list of images:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Deployment&lt;/th&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;th&gt;Docker Image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/eventing-controller:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-webhook&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/eventing-webhook:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/controller:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dispatcher&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/dispatcher:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;broker-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker.io/knative-images/broker-eventing-controller:latest&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The KnativeEventing CR must be modified to include the full list. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;registry&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;override&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;eventing-controller/eventing-controller&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo1/eventing-controller:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;eventing-webhook/eventing-webhook&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo2/eventing-webhook:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;imc-controller/controller&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo3/imc-controller:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;imc-dispatcher/dispatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo4/imc-dispatcher:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;broker-controller/eventing-controller&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo5/broker-eventing-controller:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you want to replace the image defined by the environment variable, you must modify the KnativeEventing CR.
For example, if you want to replace the image defined by the environment variable &lt;code&gt;DISPATCHER_IMAGE&lt;/code&gt;, in the container &lt;code&gt;controller&lt;/code&gt;, of the deployment &lt;code&gt;imc-controller&lt;/code&gt;, and the target image is &lt;code&gt;docker.io/knative-images-repo5/DISPATCHER_IMAGE:latest&lt;/code&gt;, the KnativeEventing CR would be as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;registry&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;override&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;eventing-controller/eventing-controller&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo1/eventing-controller:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;eventing-webhook/eventing-webhook&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo2/eventing-webhook:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;imc-controller/controller&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo3/imc-controller:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;imc-dispatcher/dispatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo4/imc-dispatcher:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;broker-controller/eventing-controller&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo5/broker-eventing-controller:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;DISPATCHER_IMAGE&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;docker.io/knative-images-repo5/DISPATCHER_IMAGE:latest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;download-images-with-secrets&#34;&gt;Download images with secrets&lt;/h3&gt;
&lt;p&gt;If your image repository requires private secrets for access, you must append the &lt;code&gt;imagePullSecrets&lt;/code&gt; attribute to the KnativeEventing CR.&lt;/p&gt;
&lt;p&gt;This example uses a secret named &lt;code&gt;regcred&lt;/code&gt;. Refer to the &lt;a href=&#34;https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod&#34;&gt;Kubernetes documentation&lt;/a&gt; to create your own private secrets.&lt;/p&gt;
&lt;p&gt;After you create the secret, edit the KnativeEventing CR:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;registry&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;...&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;imagePullSecrets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;regcred&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The field &lt;code&gt;imagePullSecrets&lt;/code&gt; requires a list of secrets. You can add multiple secrets to access the images:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;registry&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;...&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;imagePullSecrets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;regcred&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;regcred-2&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;...&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;configuring-the-default-broker-class&#34;&gt;Configuring the default broker class&lt;/h2&gt;
&lt;p&gt;Knative Eventing allows you to define a default broker class when the user does not specify one.
The Operator provides two broker classes by default: ChannelBasedBroker and MTChannelBasedBroker.&lt;/p&gt;
&lt;p&gt;The field &lt;code&gt;defaultBrokerClass&lt;/code&gt; indicates which class to use; if empty, the ChannelBasedBroker is used.&lt;/p&gt;
&lt;p&gt;The following example CR specifies MTChannelBasedBroker as the default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;defaultBrokerClass&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MTChannelBasedBroker&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;system-resource-settings&#34;&gt;System resource settings&lt;/h2&gt;
&lt;p&gt;The KnativeEventing CR allows you to configure system resources for Knative system containers.&lt;/p&gt;
&lt;p&gt;Requests and limits can be configured for the following containers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;eventing-controller&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;eventing-webhook&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;imc-controller&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;imc-dispatcher&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mt-broker-ingress&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mt-broker-ingress&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mt-broker-controller&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To override resource settings for a specific container, you must create an entry in the &lt;code&gt;spec.resources&lt;/code&gt; list with the container name and the &lt;a href=&#34;https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container&#34;&gt;Kubernetes resource settings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For example, the following KnativeEventing CR configures the &lt;code&gt;eventing-webhook&lt;/code&gt; container to request 0.3 CPU and 100MB of RAM, and sets hard limits of 1 CPU, 250MB RAM, and 4GB of local storage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;operator.knative.dev/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KnativeEventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;knative-eventing&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;container&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;eventing-webhook&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;requests&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;cpu&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;300m&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;memory&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;100Mi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;limits&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;cpu&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;1000m&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;memory&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;250Mi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
</description>
</item>
</channel>
</rss>