<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>How-to guides on </title>
    <link>https://emissary-ingress.dev/docs/4.1/howtos/</link>
    <description>Recent content in How-to guides on </description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://emissary-ingress.dev/docs/4.1/howtos/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Active Health Checking</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/active-health-checking/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/active-health-checking/</guid>
      <description>&lt;p&gt;Emissary provides support for active health checking of upstreams via the &lt;code&gt;Mapping&lt;/code&gt; resource. Active health checking will configure Envoy to make requests to the upstream at a configurable interval. If the upstream does not respond with an expected status code then the upstream will be marked as unhealthy and Envoy will no longer route requests to that upstream until they respond successfully to the health check.&lt;/p&gt;&#xA;&lt;p&gt;This feature can only be used with the &lt;a href=&#34;../../topics/running/resolvers#the-kubernetes-endpoint-resolver&#34;&gt;endpoint resolver&lt;/a&gt;. This is necessary because the endpoint resolver allows Envoy to be aware of each individual pod in a deployment as opposed to the &lt;a href=&#34;../../topics/running/resolvers#the-kubernetes-service-resolver&#34;&gt;kubernetes service resolver&lt;/a&gt; where Envoy is only aware of the upstream as a single endpoint. When envoy is aware of the multiple pods in a deployment then it will allow the active health checks to mark an individual pod as unhealthy while the remaining pods are able to serve requests.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic Authentication</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/basic-auth/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/basic-auth/</guid>
      <description>&lt;p&gt;Emissary can authenticate incoming requests before routing them to a backing service. In this tutorial, we&amp;rsquo;ll configure Emissary to use an external third&#xA;party authentication service. We&amp;rsquo;re assuming also that you are running the quote application in your cluster as described in the &lt;a href=&#34;../../tutorials/quickstart-demo/&#34;&gt;Emissary tutorial&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;before-you-get-started&#34;&gt;Before you get started&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial assumes you have already followed the Emissary &lt;a href=&#34;../../topics/install/&#34;&gt;Installation&lt;/a&gt; guide. If you haven&amp;rsquo;t done that already, you should do so now.&lt;/p&gt;&#xA;&lt;p&gt;Once complete, you&amp;rsquo;ll have a Kubernetes cluster running Emissary. Let&amp;rsquo;s walk through adding authentication to this setup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Client certificate validation</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/client-cert-validation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/client-cert-validation/</guid>
      <description>&lt;p&gt;Sometimes, for additional security or authentication purposes, you will want&#xA;the server to validate who the client is before establishing an encrypted&#xA;connection.&lt;/p&gt;&#xA;&lt;p&gt;To support this, Emissary can be configured to use a provided CA certificate&#xA;to validate certificates sent from your clients. This allows for client-side&#xA;mTLS where both Emissary and the client provide and validate each other&amp;rsquo;s&#xA;certificates.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.openssl.org/source/&#34;&gt;openssl&lt;/a&gt; For creating client certificates&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;&gt;kubectl&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;../../tutorials/getting-started&#34;&gt;Emissary&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://curl.haxx.se/download.html&#34;&gt;cURL&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Create a certificate and key.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Emissary Communications</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/configure-communications/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/configure-communications/</guid>
      <description>&lt;p&gt;For Emissary to do its job of managing network communications for your services, it first needs to know how its own communications should be set up. This is handled by a combination of resources: the &lt;code&gt;Listener&lt;/code&gt;, the &lt;code&gt;Host&lt;/code&gt;, and the &lt;code&gt;TLSContext&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Listener&lt;/code&gt;: defines where, and how, Emissary should listen for requests from the network.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Host&lt;/code&gt;: defines which hostnames Emissary should care about, and how to handle different kinds of requests for those hosts. &lt;code&gt;Host&lt;/code&gt;s can be associated with one or more &lt;code&gt;Listener&lt;/code&gt;s.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;TLSContext&lt;/code&gt;: defines whether, and how, Emissary will manage TLS certificates and options. &lt;code&gt;TLSContext&lt;/code&gt;s can be associated with one or more &lt;code&gt;Host&lt;/code&gt;s.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Once the basic communications setup is in place, Emissary &lt;code&gt;Mapping&lt;/code&gt;s and &lt;code&gt;TCPMapping&lt;/code&gt;s can be associated with &lt;code&gt;Host&lt;/code&gt;s to actually do routing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Consul integration</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/consul/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/consul/</guid>
      <description>&lt;div class=&#34;docs-article-toc&#34;&gt;&#xA;&lt;h3&gt;Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#consul-integration&#34;&gt;Consul integration&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#architecture-overview&#34;&gt;Architecture overview&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#installing-consul&#34;&gt;Installing Consul&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#installing-consul&#34;&gt;Installing Emissary&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#using-consul-for-service-discovery&#34;&gt;Using Consul for service discovery&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#using-consul-for-authorization-and-encryption&#34;&gt;Using Consul for authorization and encryption&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#environment-variables&#34;&gt;Environment variables&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/consul/#more-information&#34;&gt;More information&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.consul.io&#34;&gt;Consul&lt;/a&gt; is a widely used service mesh.&#xA;Emissary natively supports service discovery and unauthenticated&#xA;communication to services in Consul.  Additionally, the &lt;em&gt;Ambassador&#xA;Consul Connector&lt;/em&gt; enables Emissary to encrypt and authenticate&#xA;its communication via mTLS with services in Consul that make use of&#xA;&lt;a href=&#34;https://www.consul.io/docs/connect&#34;&gt;Consul&amp;rsquo;s &lt;em&gt;Connect&lt;/em&gt; feature&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture-overview&#34;&gt;Architecture overview&lt;/h2&gt;&#xA;&lt;p&gt;Using Consul with Emissary is particularly useful when deploying&#xA;Emissary in hybrid cloud environments where you deploy&#xA;applications on VMs and Kubernetes.  In this environment, Consul&#xA;enables Emissary to securely route over TLS to any application&#xA;regardless of where it is deployed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developing custom filters for routing</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/filter-dev-guide/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/filter-dev-guide/</guid>
      <description>&lt;p&gt;Sometimes you may want Ambassador Edge Stack to manipulate an incoming request. Some example use cases:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Inspect an incoming request, and add a custom header that can then be used for routing&lt;/li&gt;&#xA;&lt;li&gt;Add custom Authorization headers&lt;/li&gt;&#xA;&lt;li&gt;Validate an incoming request fits an OpenAPI specification before passing the request to a target service&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Ambassador Edge Stack supports these use cases by allowing you to execute custom logic in &lt;code&gt;Filters&lt;/code&gt;. Filters are written in Golang, and managed by Ambassador Edge Stack. If you want to write a filter in a language other than Golang, Ambassador Edge Stack also has an HTTP/gRPC interface for Filters called &lt;code&gt;External&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed Tracing</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/dist-tracing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/dist-tracing/</guid>
      <description>&lt;p&gt;The Kubernetes monitoring and distributed tracing landscape is hard to grasp. Although this conceptual approach to &lt;a href=&#34;https://blog.getambassador.io/distributed-tracing-with-java-microdonuts-kubernetes-and-the-ambassador-api-gateway-ace15b62a89e&#34;&gt;observability is nothing new&lt;/a&gt; — companies like New Relic revolutionized single-application performance monitoring (APM) over a decade ago — it took a few years and the &lt;a href=&#34;https://research.google/pubs/pub36356/&#34;&gt;Dapper publication&lt;/a&gt; for this idea to migrate to distributed applications. The importance of this technology is only increasing, as more and more of us are building deep systems.&lt;/p&gt;&#xA;&lt;p&gt;As the industry is slowly but surely maturing, standardization is underway. Standardization means proprietary vendor solutions and open source projects are able to collaborate, making our lives easier. For newcomers, understanding the plethora of options, concepts, specifications, and implementations available is still a daunting task:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed Tracing with Datadog</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/tracing-datadog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/tracing-datadog/</guid>
      <description>&lt;p&gt;In this tutorial, we&amp;rsquo;ll configure Emissary to initiate a trace on some sample requests, and use DataDog APM to visualize them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;before-you-get-started&#34;&gt;Before you get started&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial assumes you have already followed Emissary &lt;a href=&#34;../../tutorials/getting-started&#34;&gt;Getting Started&lt;/a&gt; guide. If you haven&amp;rsquo;t done that already, you should do that now.&lt;/p&gt;&#xA;&lt;p&gt;After completing the Getting Started guide you will have a Kubernetes cluster running Emissary and the Quote service. Let&amp;rsquo;s walk through adding tracing to this setup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed Tracing with OpenTelemetry and Dash0</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/tracing-dash0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/tracing-dash0/</guid>
      <description>&lt;p&gt;In this tutorial, we&amp;rsquo;ll configure Emissary to initiate a trace on some sample requests, collect them with the OpenTelemetry Collector and use Dash0 to visualize them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;before-you-get-started&#34;&gt;Before you get started&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial will walk you through setting up Emissary with distributed tracing using Dash0. We&amp;rsquo;ll use a local &lt;a href=&#34;https://kind.sigs.k8s.io/&#34;&gt;kind&lt;/a&gt; cluster for this guide.&lt;/p&gt;&#xA;&lt;p&gt;First, create a kind cluster:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kind create cluster --name emissary&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then follow the &lt;a href=&#34;../../quick-start&#34;&gt;Quick Start&lt;/a&gt; guide to install Emissary and the Faces demo application. After completing those steps, you&amp;rsquo;ll have a Kubernetes cluster running Emissary and the Faces demo. Now let&amp;rsquo;s add distributed tracing to this setup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed Tracing with OpenTelemetry and Lightstep</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/tracing-lightstep/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/tracing-lightstep/</guid>
      <description>&lt;p&gt;In this tutorial, we&amp;rsquo;ll configure &lt;a href=&#34;https://www.getambassador.io/products/edge-stack/api-gateway&#34;&gt;Emissary&lt;/a&gt; to initiate a trace on some sample requests, collect them with the OpenTelemetry Collector and use Lightstep to visualize them.&lt;/p&gt;&#xA;&lt;Alert severity=&#34;warning&#34;&gt;&#xA;  Please note that the &lt;code&gt;TracingService&lt;/code&gt; no longer supports the native Envoy Lightstep tracing driver as of Emissary version 3.4.0. If you are currently using the native Lightstep tracing driver, please refer to the bottom of the page on how to migrate.&#xA;&lt;/Alert&gt;&#xA;&lt;h2 id=&#34;before-you-get-started&#34;&gt;Before you get started&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial assumes you have already followed the Emissary &lt;a href=&#34;../../tutorials/getting-started&#34;&gt;Getting Started&lt;/a&gt; guide. If you haven&amp;rsquo;t done that already, you should do that now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed tracing with Zipkin</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/tracing-zipkin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/tracing-zipkin/</guid>
      <description>&lt;p&gt;In this tutorial, we&amp;rsquo;ll configure Emissary to initiate a trace on some sample requests, and use Zipkin to visualize them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;before-you-get-started&#34;&gt;Before you get started&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial assumes you have already followed Emissary &lt;a href=&#34;../../tutorials/getting-started&#34;&gt;Getting Started&lt;/a&gt; guide. If you haven&amp;rsquo;t done that already, you should do that now.&lt;/p&gt;&#xA;&lt;p&gt;After completing the Getting Started guide you will have a Kubernetes cluster running Emissary and the Quote service. Let&amp;rsquo;s walk through adding tracing to this setup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ExternalDNS</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/external-dns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/external-dns/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/kubernetes-sigs/external-dns&#34;&gt;ExternalDNS&lt;/a&gt; configures your existing DNS provider to make Kubernetes resources discoverable via public DNS servers by getting resources from the Kubernetes API to create a list of DNS records.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-started&#34;&gt;Getting started&lt;/h2&gt;&#xA;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h3&gt;&#xA;&lt;p&gt;Start by checking the &lt;a href=&#34;https://github.com/kubernetes-sigs/external-dns#deploying-to-a-cluster&#34;&gt;ExternalDNS repo&amp;rsquo;s deployment instructions&lt;/a&gt; to get information about the supported DNS providers and steps to setup ExternalDNS for your provider. Each DNS provider will have its own required steps as well as annotations, arguments, and permissions needed for the following configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>gRPC</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/grpc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/grpc/</guid>
      <description>&lt;p&gt;Emissary makes it easy to access your services from outside your application. This includes gRPC services, although a little bit of additional configuration is required: by default, Envoy connects to upstream services using HTTP/1.x and then upgrades to HTTP/2 whenever possible. However, gRPC is built on HTTP/2 and most gRPC servers do not speak HTTP/1.x at all. Emissary must tell its underlying Envoy that your gRPC service only wants to speak to that HTTP/2, using the &lt;code&gt;grpc&lt;/code&gt; attribute of a &lt;code&gt;Mapping&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP/3 support for Azure Kubernetes Service (AKS)</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/http3-aks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/http3-aks/</guid>
      <description>&lt;p&gt;This guide shows how to setup HTTP/3 support for Azure Kubernetes Service (AKS). The instructions provided in this page are a continuation of the &lt;a href=&#34;../../topics/running/http3&#34;&gt;HTTP/3 in Emissary&lt;/a&gt; documentation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuring-an-external-load-balancer-for-aks&#34;&gt;Configuring an external load balancer for AKS&lt;/h2&gt;&#xA;&lt;p&gt;To configure an external load balancer for AKS, you need to:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Reserve a public static IP address.&lt;/li&gt;&#xA;&lt;li&gt;Create two &lt;code&gt;LoadBalancer&lt;/code&gt; services, one for TCP and one for UDP.&lt;/li&gt;&#xA;&lt;li&gt;Assign the public static IP address to the &lt;code&gt;loadBalancerIP&lt;/code&gt; field.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;An example of the two load balancer services described above looks as follows:&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP/3 support for Google Kubernetes Engine (GKE)</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/http3-gke/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/http3-gke/</guid>
      <description>&lt;p&gt;This guide shows how to setup HTTP/3 support for Google Kubernetes Engine (GKE). The instructions provided in this page are a continuation of the &lt;a href=&#34;../../topics/running/http3&#34;&gt;HTTP/3 in Emissary&lt;/a&gt; documentation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuring-an-external-load-balancer-for-gke&#34;&gt;Configuring an external load balancer for GKE&lt;/h2&gt;&#xA;&lt;p&gt;Currently, GKE only supports adding feature flags to &lt;code&gt;alpha&lt;/code&gt; clusters, and doesn&amp;rsquo;t support the creation of mixed protocol services of type &lt;code&gt;LoadBalancer&lt;/code&gt;. To configure an external load balancer for GKE, you need to:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Reserve a public static IP address.&lt;/li&gt;&#xA;&lt;li&gt;Create two &lt;code&gt;LoadBalancer&lt;/code&gt; services, one for TCP and one for UDP.&lt;/li&gt;&#xA;&lt;li&gt;Assign the public static IP address to the &lt;code&gt;loadBalancerIP&lt;/code&gt; field.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;An example of the two load balancer services described above looks as follows:&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP/3 with Amazon Elastic Kubernetes Service (EKS) | Emissary</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/http3-eks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/http3-eks/</guid>
      <description>&lt;p&gt;This guide shows how to setup HTTP/3 support for Amazon Elastic Kubernetes Service (EKS) The instructions provided in this page are a continuation of the &lt;a href=&#34;../../topics/running/http3&#34;&gt;HTTP/3 in Emissary&lt;/a&gt; documentation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-a-network-load-balancer-nlb&#34;&gt;Create a network load balancer (NLB)&lt;/h2&gt;&#xA;&lt;p&gt;The virtual private cloud (VPC) for your load balancer needs one public subnet in each availability zone where you have targets.&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-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;SUBNET_IDS&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=(&lt;/span&gt;&amp;lt;your-subnet1-id&amp;gt; &amp;lt;your-subnet2-id&amp;gt; &amp;lt;your-subnet3-id&amp;gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aws elbv2 create-load-balancer &lt;span style=&#34;color:#4e9a06&#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:#4e9a06&#34;&gt;&lt;/span&gt;  --name &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;CLUSTER_NAME&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;-nlb &lt;span style=&#34;color:#4e9a06&#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:#4e9a06&#34;&gt;&lt;/span&gt;  --type network &lt;span style=&#34;color:#4e9a06&#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:#4e9a06&#34;&gt;&lt;/span&gt;  --subnets &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;SUBNET_IDS&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;create-a-nodeport-service&#34;&gt;Create a NodePort service&lt;/h2&gt;&#xA;&lt;p&gt;Now create a &lt;code&gt;NodePort&lt;/code&gt; service for Emissary installation with two entries. Use &lt;code&gt;port: 443&lt;/code&gt; to include support for both TCP and UDP traffic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Istio</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/istio/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/istio/</guid>
      <description>&lt;p&gt;Emissary and Istio: Edge Proxy and Service Mesh together in one. Emissary is deployed at the edge of your network and routes incoming traffic to your internal services (aka &amp;ldquo;north-south&amp;rdquo; traffic). &lt;a href=&#34;https://istio.io/&#34;&gt;Istio&lt;/a&gt; is a service mesh for microservices, and is designed to add application-level Layer (L7) observability, routing, and resilience to service-to-service traffic (aka &amp;ldquo;east-west&amp;rdquo; traffic). Both Istio and Emissary are built using &lt;a href=&#34;https://www.envoyproxy.io&#34;&gt;Envoy&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Emissary and Istio can be deployed together on Kubernetes. In this configuration, Emissary manages&#xA;traditional edge functions such as authentication, TLS termination, and edge routing. Istio mediates communication&#xA;from Emissary to services, and communication between services.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Knative</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/knative/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/knative/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://knative.dev/&#34;&gt;Knative&lt;/a&gt; is a popular Kubernetes-based platform for managing serverless workloads with two main components:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Eventing: Management and delivery of events&lt;/li&gt;&#xA;&lt;li&gt;Serving: Request-driven compute that can scale to zero&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We will be focusing on Knative Serving, which builds on Kubernetes to support deploying and serving of serverless applications and functions.&lt;/p&gt;&#xA;&lt;p&gt;Ambassador can watch for changes in Knative configuration in your Kubernetes cluster and set up routing accordingly.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Knative was originally built with Istio handling cluster networking. This integration lets us replace Istio with  Ambassador, which will dramatically reduce the operational overhead of running Knative.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linkerd 2</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/linkerd2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/linkerd2/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.linkerd.io&#34;&gt;Linkerd 2&lt;/a&gt; is a zero-config and ultra-lightweight service mesh. Emissary natively supports Linkerd 2 for service discovery, end-to-end TLS (including mTLS between services), and (with Linkerd 2.8) multicluster operation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;Linkerd 2 is designed for simplicity, security, and performance. In the cluster, it runs a control plane in its own namespace and then injects sidecar proxy containers in every Pod that should be meshed.&lt;/p&gt;&#xA;&lt;p&gt;Emissary itself also needs to be interwoven or &amp;ldquo;meshed&amp;rdquo; with Linkerd 2, and then configured to add special Linkerd headers to requests that tell Linkerd 2 where to forward them. This ie because mTLS between services is automatically handled by the control plane and the proxies. Istio and Consul allow Emissary to initiate mTLS connections to upstream services by grabbing a certificate from a Kubernetes Secret. However, Linkerd 2 does not work this way, so Emissary must rely on Linkerd 2 for mTLS connections to upstream services. This means we want Linkerd 2 to inject its sidecar into Emissary&amp;rsquo;s pods, but not Istio and Consul.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mapping resource</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/route/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/route/</guid>
      <description>&lt;h1 id=&#34;get-traffic-from-the-edge&#34;&gt;Get traffic from the edge&lt;/h1&gt;&#xA;&lt;div class=&#34;docs-article-toc&#34;&gt;&#xA;&lt;h3&gt;Contents&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/route/#examples&#34;&gt;Examples&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/route/#applying-a-mapping-resource&#34;&gt;Applying a Mapping Resource&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/route/#resources&#34;&gt;Resources&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/route/#services&#34;&gt;Services&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/route/#extending-mappings&#34;&gt;Extending Mappings&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/route/#best-practices&#34;&gt;Best Practices&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://emissary-ingress.dev/docs/4.1/howtos/route/#img-classos-logo-srcimageslogopng-whats-next&#34;&gt;What&amp;rsquo;s next?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The core Emissary resource used to manage cluster ingress is the &lt;code&gt;Mapping&lt;/code&gt; resource.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;A &lt;code&gt;Mapping&lt;/code&gt; resource routes a URL path (or prefix) to a service (either a Kubernetes service or other web service).&lt;/strong&gt;&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&amp;nbsp;&#xA;  &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;../../topics/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;../../topics/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;examples&#34;&gt;Examples&lt;/h2&gt;&#xA;&lt;p&gt;This &lt;code&gt;Mapping&lt;/code&gt; would route requests to &lt;code&gt;https://&amp;lt;hostname&amp;gt;/webapp/&lt;/code&gt; to the &lt;code&gt;webapp-svc&lt;/code&gt; Service. &lt;strong&gt;This is not a&#xA;complete example on its own; see below.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring with Prometheus and Grafana</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/prometheus/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/prometheus/</guid>
      <description>&lt;p&gt;Prometheus is an open-source monitoring and alerting system.  When used&#xA;along with Grafana, you can create a dynamic dashboard for monitoring&#xA;ingress into our Kubernetes cluster.&lt;/p&gt;&#xA;&lt;h2 id=&#34;deployment&#34;&gt;Deployment&lt;/h2&gt;&#xA;&lt;p&gt;This guide will focus on deploying Prometheus and Grafana alongside&#xA;Emissary in Kubernetes using the &lt;a href=&#34;https://github.com/coreos/prometheus-operator&#34;&gt;Prometheus&#xA;Operator&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Both Prometheus and Grafana can be deployed as standalone&#xA;applications outside of Kubernetes.  This process is well-documented&#xA;within the website and docs within their respective projects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Protecting Access to the Diagnostics Interface</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/protecting-diag-access/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/protecting-diag-access/</guid>
      <description>&lt;p&gt;Out of the box, Emissary enables &lt;code&gt;Mapping&lt;/code&gt;s to provide access to the diagnostics&#xA;interfaces that can help you debug your installation. In a production environment, though,&#xA;public access to these endpoints is not an ideal situation.  To solve this, we will be&#xA;using the Ambassador &lt;code&gt;Module&lt;/code&gt; to remove the default mappings, after which we&amp;rsquo;ll create a&#xA;new, host-based &lt;code&gt;mapping&lt;/code&gt; to expose the diagnostics interface more securely.  The&#xA;Ambassador &lt;code&gt;Module&lt;/code&gt; applies system-wide configuration settings for Emissary to follow.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rate Limiting Tutorial</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/rate-limiting-tutorial/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/rate-limiting-tutorial/</guid>
      <description>&lt;p&gt;Emissary can validate incoming requests before routing them to a backing service. In this tutorial, we&amp;rsquo;ll configure Emissary to use a simple third party rate limit service. (If you don&amp;rsquo;t want to implement your own rate limiting service, Ambassador Edge Stack integrates a &lt;a href=&#34;https://emissary-ingress.dev/docs/edge-stack/latest/topics/using/rate-limits/rate-limits/&#34;&gt;powerful, flexible rate limiting service&lt;/a&gt;.)&lt;/p&gt;&#xA;&lt;h2 id=&#34;before-you-get-started&#34;&gt;Before you get started&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial assumes you have already followed the Emissary &lt;a href=&#34;../../topics/install/&#34;&gt;Installation&lt;/a&gt; and &lt;a href=&#34;../../tutorials/quickstart-demo&#34;&gt;Quickstart Tutorial&lt;/a&gt; guides. If you haven&amp;rsquo;t done that already, you should do so now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TLS Termination and Enabling HTTPS</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/tls-termination/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/tls-termination/</guid>
      <description>&lt;p&gt;TLS encryption is one of the basic requirements of having a secure system.&#xA;Ambassador Edge Stack &lt;a href=&#34;../../topics/running/host-crd#tls-settings&#34;&gt;automatically enables TLS termination/HTTPs&#xA;&lt;/a&gt;, making TLS encryption&#xA;easy and centralizing TLS termination for all of your services in Kubernetes.&lt;/p&gt;&#xA;&lt;p&gt;While this automatic certificate management in Ambassador Edge Stack helps&#xA;simply TLS configuration in your cluster, the Open-Source Emissary&#xA;still requires you provide your own certificate to enable TLS.&lt;/p&gt;&#xA;&lt;p&gt;The following will walk you through the process of enabling TLS with a&#xA;self-signed certificate created with the &lt;code&gt;openssl&lt;/code&gt; utility.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using cert-manager</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/cert-manager/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/cert-manager/</guid>
      <description>&lt;p&gt;Ambassador Edge Stack has simple and easy built-in support for automatically &lt;a href=&#34;../../topics/running/host-crd&#34;&gt;using ACME&lt;/a&gt; with the&#xA;&lt;code&gt;http-01&lt;/code&gt; challenge to create and renew TLS certificates. However, this support is not available&#xA;in Emissary, and it is limited to the ACME &lt;code&gt;http-01&lt;/code&gt; challenge type. If you&amp;rsquo;re running&#xA;Emissary, or if you require more flexible certificate management (such as using ACME&amp;rsquo;s&#xA;&lt;code&gt;dns-01&lt;/code&gt; challenge, or using a non-ACME certificate source), external certificate management&#xA;tools are also supported.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebSockets</title>
      <link>https://emissary-ingress.dev/docs/4.1/howtos/websockets/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://emissary-ingress.dev/docs/4.1/howtos/websockets/</guid>
      <description>&lt;p&gt;Emissary makes it easy to access your services from outside your&#xA;application, and this includes services that use WebSockets.  Only a&#xA;small amount of additional configuration is required, which is as&#xA;simple as telling the Mapping to allow &amp;ldquo;upgrading&amp;rdquo; from the HTTP protocol to&#xA;the &amp;ldquo;websocket&amp;rdquo; protocol:&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;allow_upgrade&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;websocket&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;example-websocket-service&#34;&gt;Example WebSocket service&lt;/h2&gt;&#xA;&lt;p&gt;The example configuration below demonstrates the addition of the &lt;code&gt;allow_upgrade:&lt;/code&gt; attribute to support websockets. The use of &lt;code&gt;use_websocket&lt;/code&gt; is now deprecated.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
