<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Using on </title>
    <link>https://emissary-ingress.dev/docs/4.1/topics/using/</link>
    <description>Recent content in Using on </description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://emissary-ingress.dev/docs/4.1/topics/using/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Introduction to the Mapping Resource</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/intro-mappings/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/intro-mappings/</guid>
      <description>&lt;p&gt;Emissary is designed around a &lt;a href=&#34;../../concepts/gitops-continuous-delivery&#34;&gt;declarative, self-service management model&lt;/a&gt;. The core resource used to support application development teams who need to manage the edge with Emissary is the &lt;code&gt;Mapping&lt;/code&gt; resource.&lt;/p&gt;&#xA;&lt;Alert severity=&#34;warning&#34;&gt;&#xA;  Remember that &lt;code&gt;Listener&lt;/code&gt; and &lt;code&gt;Host&lt;/code&gt; resources are&#xA;  &amp;nbsp;&lt;b&gt;required&lt;/b&gt;&amp;nbsp;for a functioning Emissary installation that can route traffic!&lt;br/&gt;&#xA;  &lt;a href=&#34;../../running/listener&#34;&gt;Learn more about &lt;code&gt;Listener&lt;/code&gt;&lt;/a&gt;.&lt;br/&gt;&#xA;  &lt;a href=&#34;../../running/host-crd&#34;&gt;Learn more about &lt;code&gt;Host&lt;/code&gt;&lt;/a&gt;.&#xA;&lt;/Alert&gt;&#xA;&lt;h2 id=&#34;quick-example&#34;&gt;Quick example&lt;/h2&gt;&#xA;&lt;p&gt;At its core a &lt;code&gt;Mapping&lt;/code&gt; resource maps a &lt;code&gt;resource&lt;/code&gt; to a &lt;code&gt;service&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Required attribute&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;is a string identifying the &lt;code&gt;Mapping&lt;/code&gt; (e.g. in diagnostics)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/topics/using/intro-mappings/#resources&#34;&gt;&lt;code&gt;prefix&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;is the URL prefix identifying your &lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/topics/using/intro-mappings/#resources&#34;&gt;resource&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/topics/using/intro-mappings/#services&#34;&gt;&lt;code&gt;service&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;is the name of the &lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/topics/using/intro-mappings/#services&#34;&gt;service&lt;/a&gt; handling the resource; must include the namespace (e.g. &lt;code&gt;myservice.othernamespace&lt;/code&gt;) if the service is in a different namespace than Emissary&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;These resources are defined as Kubernetes Custom Resource Definitions. Here&amp;rsquo;s a simple example that maps all requests to &lt;code&gt;/httpbin/&lt;/code&gt; to the &lt;code&gt;httpbin.org&lt;/code&gt; web service:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Advanced Mapping configuration</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/mappings/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/mappings/</guid>
      <description>&lt;p&gt;Emissary is designed so that the author of a given Kubernetes service can easily and flexibly configure how traffic gets routed to the service. The core abstraction used to support service authors is a mapping, which maps a target backend service to a given host or prefix. For Layer 7 protocols such as HTTP, gRPC, or WebSockets, the &lt;code&gt;Mapping&lt;/code&gt; resource is used. For TCP, the &lt;code&gt;TCPMapping&lt;/code&gt; resource is used.&lt;/p&gt;&#xA;&lt;p&gt;Emissary &lt;em&gt;must&lt;/em&gt; have one or more mappings defined to provide access to any services at all. The name of the mapping must be unique.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ambassador module defaults</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/defaults/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/defaults/</guid>
      <description>&lt;p&gt;If present, the &lt;code&gt;ambassador Module&lt;/code&gt; can define a set of defaults that will automatically be applied to certain resources:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;getambassador.io/v3alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;Module&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;ambassador&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;defaults&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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;class1&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:#8f5902;font-style:italic&#34;&gt;# This is a class. Different resource types will look in different classes.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;key1&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;value1   &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Within a class, you can set different keys.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;key2&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;value2&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;class2&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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;top_key1&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;value1 &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# If a key isn&amp;#39;t found in a resource&amp;#39;s class, the system will look in the&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;top_key2&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;value2 &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# toplevel defaults dictionary for it.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;mapping&#34;&gt;Mapping&lt;/h3&gt;&#xA;&lt;p&gt;Currently, only the &lt;code&gt;Mapping&lt;/code&gt; resource uses the &lt;code&gt;defaults&lt;/code&gt; mechanism. &lt;code&gt;Mapping&lt;/code&gt; looks first for defaultable resources in the &lt;code&gt;httpmapping&lt;/code&gt; class, including:&lt;/p&gt;</description>
    </item>
    <item>
      <title>AuthService settings</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/authservice/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/authservice/</guid>
      <description>&lt;p&gt;A Mapping can pass these settings along to an &lt;a href=&#34;../../running/services/auth-service&#34;&gt;AuthService&lt;/a&gt;.  This is helpful to allow these specific configurations to apply only to certain Mappings and not globally.&lt;/p&gt;&#xA;&lt;h2 id=&#34;bypass-authentication&#34;&gt;Bypass authentication&lt;/h2&gt;&#xA;&lt;p&gt;An AuthService can be disabled for a specific Mapping with the &lt;code&gt;bypass_auth&lt;/code&gt; attribute. This will tell Emissary to allow all requests for that Mapping through without interacting with the external auth service.  This could be helpful, for example, for a public API.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automatic retries</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/retries/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/retries/</guid>
      <description>&lt;p&gt;Sometimes requests fail. When these requests fail for transient issues, Emissary can automatically retry the request.&lt;/p&gt;&#xA;&lt;p&gt;Retry policy can be set for all Emissary mappings in the &lt;a href=&#34;../../running/ambassador&#34;&gt;&lt;code&gt;ambassador Module&lt;/code&gt;&lt;/a&gt;, or set per &lt;a href=&#34;../mappings&#34;&gt;&lt;code&gt;Mapping&lt;/code&gt;&lt;/a&gt;. Generally speaking, you should set &lt;code&gt;retry_policy&lt;/code&gt; on a per mapping basis. Global retries can easily result in unexpected cascade failures.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Note that when setting &lt;code&gt;retry_policy&lt;/code&gt;, adjusting &lt;code&gt;max_retries&lt;/code&gt; in the &lt;a href=&#34;../circuit-breakers/&#34;&gt;circuit breaker&lt;/a&gt; configuration should also be considered in order to account for all desired retries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic rate limiting</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/base-rate-limiting/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/base-rate-limiting/</guid>
      <description>&lt;p&gt;Rate limiting in Emissary is composed of two parts:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;../../running/services/rate-limit-service&#34;&gt;&lt;code&gt;RateLimitService&lt;/code&gt;&lt;/a&gt; resource tells Emissary what external service&#xA;to use for rate limiting.&lt;/p&gt;&#xA;&lt;p&gt;&lt;Alert severity=&#34;info&#34;&gt;If Emissary cannot contact the rate limit service, it will allow the request to be processed as if there were no rate limit service configuration.&lt;/Alert&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;em&gt;Labels&lt;/em&gt; that get attached to requests. A label is basic metadata that&#xA;is used by the &lt;code&gt;RateLimitService&lt;/code&gt; to decide which limits to apply to&#xA;the request.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Canary releases</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/canary/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/canary/</guid>
      <description>&lt;p&gt;Canary releasing is a deployment pattern where a small percentage of traffic is diverted to an early (&amp;ldquo;canary&amp;rdquo;) release of a particular service. This technique lets you test a release on a small subset of users, mitigating the impact of any given bug. Canary releasing also allows you to quickly roll back to a known good version in the event of an unexpected error. Detailed monitoring of core service metrics is an essential part of canary releasing, as monitoring enables the rapid detection of problems in the canary release.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Circuit breakers</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/circuit-breakers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/circuit-breakers/</guid>
      <description>&lt;p&gt;Circuit breakers are a powerful technique to improve resilience. By preventing additional connections or requests to an overloaded service, circuit breakers limit the &lt;a href=&#34;https://www.ibm.com/garage/method/practices/manage/practice_limited_blast_radius/&#34;&gt;&amp;ldquo;blast radius&amp;rdquo;&lt;/a&gt; of an overloaded service. By design, Emissary circuit breakers are distributed, i.e., different Emissary instances do not coordinate circuit breaker information.&lt;/p&gt;&#xA;&lt;h2 id=&#34;circuit-breaker-configuration&#34;&gt;Circuit breaker configuration&lt;/h2&gt;&#xA;&lt;p&gt;A default circuit breaking configuration can be set for all&#xA;Emissary resources in the &lt;a href=&#34;../../running/ambassador&#34;&gt;&lt;code&gt;ambassador Module&lt;/code&gt;&lt;/a&gt;, or set to a different value on a&#xA;per-resource basis for &lt;a href=&#34;../mappings&#34;&gt;&lt;code&gt;Mappings&lt;/code&gt;&lt;/a&gt;,&#xA;&lt;a href=&#34;../tcpmappings/&#34;&gt;&lt;code&gt;TCPMappings&lt;/code&gt;&lt;/a&gt;, and&#xA;&lt;a href=&#34;../../running/services/auth-service/&#34;&gt;&lt;code&gt;AuthServices&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cross-Origin Resource Sharing (CORS)</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/cors/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/cors/</guid>
      <description>&lt;p&gt;Cross-Origin resource sharing lets users request resources (e.g., images, fonts, videos) from domains outside the original domain.&lt;/p&gt;&#xA;&lt;p&gt;CORS configuration can be set for all Emissary mappings in the &lt;a href=&#34;../../running/ambassador&#34;&gt;&lt;code&gt;ambassador Module&lt;/code&gt;&lt;/a&gt;, or set per &lt;a href=&#34;../mappings&#34;&gt;&lt;code&gt;Mapping&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;When the CORS attribute is set at either the &lt;code&gt;Mapping&lt;/code&gt; or &lt;code&gt;Module&lt;/code&gt; level, Emissary will intercept the pre-flight &lt;code&gt;OPTIONS&lt;/code&gt; request and respond with the appropriate CORS headers. This means you will not need to implement any logic in your upstreams to handle these CORS &lt;code&gt;OPTIONS&lt;/code&gt; requests.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gateway API</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/gateway-api/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/gateway-api/</guid>
      <description>&lt;p&gt;Emissary now supports a limited subset of the new &lt;code&gt;v1alpha1&lt;/code&gt; &lt;a href=&#34;https://gateway-api.sigs.k8s.io/&#34;&gt;Gateway API&lt;/a&gt;.&#xA;Note that the Gateway API is not supported when &lt;code&gt;AMBASSADOR_LEGACY_MODE&lt;/code&gt; is set.&lt;/p&gt;&#xA;&lt;p&gt;Support is currently limited to the following fields, however this will expand in future releases:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Gateway.spec.listeners.port&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute.spec.rules.matches.path.type&lt;/code&gt; (&lt;code&gt;Exact&lt;/code&gt;, &lt;code&gt;Prefix&lt;/code&gt;, and &lt;code&gt;RegularExpression&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute.spec.rules.matches.path.value&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute.spec.rules.matches.header.type&lt;/code&gt; (&lt;code&gt;Exact&lt;/code&gt; and &lt;code&gt;RegularExpression&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute.spec.rules.matches.header.values&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute.spec.rules.forwardTo.serviceName&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute.spec.rules.forwardTo.port&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute.spec.rules.forwardTo.weight&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Please see the &lt;a href=&#34;https://gateway-api.sigs.k8s.io/reference/spec/&#34;&gt;specification&lt;/a&gt; for more details.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keepalive</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/keepalive/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/keepalive/</guid>
      <description>&lt;p&gt;Keepalive option indicates whether &lt;code&gt;SO_KEEPALIVE&lt;/code&gt; on the socket should be enabled.&lt;/p&gt;&#xA;&lt;h2 id=&#34;keepalive-configuration&#34;&gt;Keepalive configuration&lt;/h2&gt;&#xA;&lt;p&gt;Keepalive configuration can be set for all Emissary mappings in the &lt;a href=&#34;../../running/ambassador&#34;&gt;&lt;code&gt;ambassador Module&lt;/code&gt;&lt;/a&gt; or set per &lt;a href=&#34;../mappings&#34;&gt;&lt;code&gt;Mapping&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;keepalive&lt;/code&gt; attribute configures keepalive. The following fields are supported:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;keepalive&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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;idle_time&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;integer&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;interval&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;integer&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;probes&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;integer&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;idle_time&#34;&gt;&lt;code&gt;idle_time&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;p&gt;(Default: &lt;code&gt;7200&lt;/code&gt;) The number of seconds a connection needs to be idle before keep-alive probes start being sent.&lt;/p&gt;&#xA;&lt;h3 id=&#34;interval&#34;&gt;&lt;code&gt;interval&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;p&gt;(Default: &lt;code&gt;75&lt;/code&gt;) The number of seconds between keep-alive probes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Method-based routing</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/method/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/method/</guid>
      <description>&lt;p&gt;Emissary supports routing based on the HTTP method and regular expression.&lt;/p&gt;&#xA;&lt;h2 id=&#34;using-method&#34;&gt;Using &lt;code&gt;method&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;method&lt;/code&gt; annotation specifies the specific HTTP method for a mapping. The value of the &lt;code&gt;method&lt;/code&gt; annotation must be in all upper case.&lt;/p&gt;&#xA;&lt;p&gt;For example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;getambassador.io/v3alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;Mapping&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;get&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;hostname&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:#4e9a06&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;prefix&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;/backend/get_only/&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;method&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;GET&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;service&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;quote&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;using-method_regex&#34;&gt;Using &lt;code&gt;method_regex&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When &lt;code&gt;method_regex&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt;, the value of the &lt;code&gt;method&lt;/code&gt; annotation will be interpreted as a regular expression.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prefix regex</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/prefix-regex/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/prefix-regex/</guid>
      <description>&lt;h2 id=&#34;using-prefix-and-prefix_regex&#34;&gt;Using &lt;code&gt;prefix&lt;/code&gt; and &lt;code&gt;prefix_regex&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When the &lt;code&gt;prefix_regex&lt;/code&gt; attribute is set to &lt;code&gt;true&lt;/code&gt;, Emissary configures a &lt;a href=&#34;https://www.envoyproxy.io/docs/envoy/v1.5.0/api-v1/route_config/route#route&#34;&gt;regex route&lt;/a&gt; instead of a prefix route in Envoy. &lt;strong&gt;This means the entire path must match the regex specified, not only the prefix.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-with-a-version-in-the-url&#34;&gt;Example with a version in the URL&lt;/h2&gt;&#xA;&lt;p&gt;If the version is a path parameter and the resources are served by different services, then&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;getambassador.io/v3alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;Mapping&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;qotm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;prefix&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:#4e9a06&#34;&gt;&amp;#34;/(v1|v2)/qotm/.*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;prefix_regex&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:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;service&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;qotm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;will map requests to both &lt;code&gt;/v1&lt;/code&gt; and &lt;code&gt;/v2&lt;/code&gt; to the &lt;code&gt;qotm&lt;/code&gt; service.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Query parameter-based routing</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/query-parameters/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/query-parameters/</guid>
      <description>&lt;p&gt;Emissary can route to target services based on HTTP query parameters with the &lt;code&gt;query_parameters&lt;/code&gt; and &lt;code&gt;regex_query_parameters&lt;/code&gt; specifications. Multiple mappings with different annotations can be applied to construct more complex routing rules.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-query_parameters-annotation&#34;&gt;The &lt;code&gt;query_parameters&lt;/code&gt; annotation&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;query_parameters&lt;/code&gt; attribute is a dictionary of &lt;code&gt;query_parameter&lt;/code&gt;: &lt;code&gt;value&lt;/code&gt; pairs. Emissary will only allow requests that match the specified &lt;code&gt;query_parameter&lt;/code&gt;: &lt;code&gt;value&lt;/code&gt; pairs to reach the target service.&lt;/p&gt;&#xA;&lt;p&gt;You can also set the &lt;code&gt;value&lt;/code&gt; of a query parameter to &lt;code&gt;true&lt;/code&gt; to test for the existence of a query parameter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redirects</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/redirects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/redirects/</guid>
      <description>&lt;p&gt;Emissary can perform 3xx redirects on &lt;code&gt;Mapping&lt;/code&gt;s to a different host, with various options to redirect the path and to return a different 3xx response code instead of the default 301.&lt;/p&gt;&#xA;&lt;h2 id=&#34;schema&#34;&gt;Schema&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Name&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;spec.host_redirect&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Boolean&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;This is &lt;em&gt;required&lt;/em&gt; to be set to &lt;code&gt;true&lt;/code&gt; to use any type of redirect, otherwise the request will be proxied instead of redirected.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;spec.path_redirect&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;String&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Optional, changes the path for the redirect.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;spec.prefix_redirect&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;String&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Optional, matches the &lt;code&gt;prefix&lt;/code&gt; value and replaces it with the &lt;code&gt;prefix_redirect&lt;/code&gt; value.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;spec.regex_redirect&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;String&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Optional, uses regex to match and replace the &lt;code&gt;prefix&lt;/code&gt; value.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;spec.redirect_response_code&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Integer&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Optional, changes the response code from the default 301, valid values are 301, 302, 303, 307, and 308.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;spec.config.  x_forwarded_proto_redirect&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Boolean&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Redirect only the originating HTTP requests to HTTPS, allowing the originating HTTPS requests to pass through.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;spec.config.  use_remote_address&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Boolean&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Required to be set to &lt;code&gt;false&lt;/code&gt; to use the &lt;code&gt;x_forwarded_proto_redirect&lt;/code&gt; feature.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;&#xA;&lt;h3 id=&#34;basic-redirect&#34;&gt;Basic redirect&lt;/h3&gt;&#xA;&lt;p&gt;To effect any type of HTTP &lt;code&gt;Redirect&lt;/code&gt;, the &lt;code&gt;Mapping&lt;/code&gt; &lt;em&gt;must&lt;/em&gt; set &lt;code&gt;host_redirect&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;, with &lt;code&gt;service&lt;/code&gt; set to the host to which the client should be redirected:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rewrites</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/rewrites/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/rewrites/</guid>
      <description>&lt;p&gt;Once Emissary uses a prefix to identify the service to which a given request should be passed, it can rewrite the URL before handing it off to the service.&lt;/p&gt;&#xA;&lt;p&gt;There are two approaches for rewriting: &lt;code&gt;rewrite&lt;/code&gt; for simpler scenarios and &lt;code&gt;regex_rewrite&lt;/code&gt; for more advanced rewriting.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Please note that&lt;/strong&gt; only one of these two can be configured for a mapping &lt;strong&gt;at the same time&lt;/strong&gt;. As a result Emissary ignores &lt;code&gt;rewrite&lt;/code&gt; when &lt;code&gt;regex_rewrite&lt;/code&gt; is provided.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TCPMapping resources</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/tcpmappings/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/tcpmappings/</guid>
      <description>&lt;p&gt;In addition to managing HTTP, gRPC, and WebSockets at layer 7, Emissary can also manage TCP connections at layer 4. The core abstraction used to support TCP connections is the &lt;code&gt;TCPMapping&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;An Emissary &lt;code&gt;TCPMapping&lt;/code&gt; associates TCP connections with upstream &lt;em&gt;services&lt;/em&gt;.&#xA;Cleartext TCP connections are defined by destination IP address and/or destination TCP port;&#xA;TLS-encrypted TCP connections can also be defined by the hostname presented using SNI.&#xA;A service is exactly the same as in HTTP &lt;a href=&#34;../mappings/&#34;&gt;&lt;code&gt;Mappings&lt;/code&gt;&lt;/a&gt; and other Emissary resources.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Timeouts</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/timeouts/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/timeouts/</guid>
      <description>&lt;p&gt;Emissary enables you to control timeouts in several different ways.&lt;/p&gt;&#xA;&lt;h2 id=&#34;request-timeout-timeout_ms&#34;&gt;Request timeout: &lt;code&gt;timeout_ms&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;timeout_ms&lt;/code&gt; is the end-to-end timeout for an entire user-level transaction in milliseconds. It begins after the full incoming request is received up until the full response stream is returned to the client. This timeout includes all retries. It can be disabled by setting the value to &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Default: &lt;code&gt;3000&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;idle-timeout-idle_timeout_ms&#34;&gt;Idle timeout: &lt;code&gt;idle_timeout_ms&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;idle_timeout_ms&lt;/code&gt; controls how long a connection should remain open when no traffic is being sent through the connection. &lt;code&gt;idle_timeout_ms&lt;/code&gt; is distinct from &lt;code&gt;timeout_ms&lt;/code&gt;, as the idle timeout applies on either down or upstream request events and is reset every time an encode/decode event occurrs or data is processed for the stream. &lt;code&gt;idle_timeout_ms&lt;/code&gt; operates on a per-route basis and will overwrite behavior of the &lt;code&gt;cluster_idle_timeout_ms&lt;/code&gt;.  If not set, Emissary will default to the value set by &lt;code&gt;cluster_idle_timeout_ms&lt;/code&gt;. It can be disabled by setting the value to &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Traffic shadowing</title>
      <link>https://emissary-ingress.dev/docs/4.1/topics/using/shadowing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/topics/using/shadowing/</guid>
      <description>&lt;p&gt;Traffic shadowing is a deployment pattern where production traffic is asynchronously copied to a non-production service for testing. Shadowing is a close cousin to two other commonly known deployment patterns, &lt;a href=&#34;../canary&#34;&gt;canary releases&lt;/a&gt; and blue/green deployments. Shadowing traffic has several important benefits over blue/green and canary testing:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Zero production impact. Since traffic is duplicated, any bugs in services that are processing shadow data have no impact on production.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Test persistent services. Since there is no production impact, shadowing provides a powerful technique to test persistent services. You can configure your test service to store data in a test database, and shadow traffic to your test service for testing. Both blue/green deployments and canary deployments require more machinery for testing.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
