|
| 1 | +# Frequently Asked Questions |
| 2 | + |
| 3 | +## General |
| 4 | + |
| 5 | +### Why $productName$? |
| 6 | + |
| 7 | +Kubernetes shifts application architecture for microservices, as well as the |
| 8 | +development workflow for a full-cycle development. $productName$ is designed for |
| 9 | +the Kubernetes world with: |
| 10 | + |
| 11 | +* Sophisticated traffic management capabilities (thanks to its use of [Envoy Proxy](https://www.envoyproxy.io)), such as load balancing, circuit breakers, rate limits, and automatic retries. |
| 12 | +* API management capabilities such as a developer portal and OpenID Connect integration for Single Sign-On. |
| 13 | +* A declarative, self-service management model built on Kubernetes Custom Resource Definitions, enabling GitOps-style continuous delivery workflows. |
| 14 | + |
| 15 | +We've written about [the history of $productName$](https://blog.getambassador.io/building-ambassador-an-open-source-api-gateway-on-kubernetes-and-envoy-ed01ed520844), [Why $productName$ In Depth](../why-ambassador), [Features and Benefits](../features-and-benefits) and about the [evolution of API Gateways](../../topics/concepts/microservices-api-gateways/). |
| 16 | + |
| 17 | +### What's the difference between the $OSSproductName$ and the $AESproductName$? |
| 18 | + |
| 19 | +The $OSSproductName$ was the name of the original open-source project. As the project evolved, we realized that the functionality we were building had extended far beyond an API Gateway. In particular, the $AESproductName$ is intended to provide all the functionality you need at the edge -- hence, an "edge stack." This includes an API Gateway, ingress controller, load balancer, developer portal, and more. |
| 20 | + |
| 21 | +### How is $AESproductName$ licensed? |
| 22 | + |
| 23 | +The core $OSSproductName$ is open source under the Apache Software License 2.0. The GitHub repository for the core is [https://github.com/datawire/ambassador](https://github.com/datawire/ambassador). Some additional features of the $AESproductName$ (e.g., Single Sign-On) are not open source and available under a proprietary license. |
| 24 | + |
| 25 | +### Can I use the add-on features for $AESproductName$ for free? |
| 26 | + |
| 27 | +Yes! The core functionality of the $AESproductName$ is free and has no limits whatsoever. If you wish to use one of our additional, proprietary features such as Single Sign-On, you can get a free community license for up to 5 requests per second. Please contact [sales](/contact-us/) if you need more than 5 RPS. |
| 28 | + |
| 29 | +For more details on core unlimited features and premium features, see the [editions page](/editions). |
| 30 | + |
| 31 | +### How does $productName$ use Envoy Proxy? |
| 32 | + |
| 33 | +$productName$ uses [Envoy Proxy](https://www.envoyproxy.io) as its core proxy. Envoy is an open-source, high-performance proxy originally written by Lyft. Envoy is now part of the Cloud Native Computing Foundation. |
| 34 | + |
| 35 | +### Is $productName$ production ready? |
| 36 | + |
| 37 | +Yes. Thousands of organizations, large and small, run $productName$ in production. |
| 38 | +Public users include Chick-Fil-A, ADP, Microsoft, NVidia, and AppDirect, among others. |
| 39 | + |
| 40 | +### What is the performance of $productName$? |
| 41 | + |
| 42 | +There are many dimensions to performance. We published a benchmark of [$productName$ performance on Kubernetes](/resources/envoyproxy-performance-on-k8s/). Our internal performance regressions cover many other scenarios; we expect to publish more data in the future. |
| 43 | + |
| 44 | +### What's the difference between a service mesh (such as Istio) and $productName$? |
| 45 | + |
| 46 | +Service meshes focus on routing internal traffic from service to service |
| 47 | +("east-west"). $productName$ focuses on traffic into your cluster ("north-south"). |
| 48 | +While both a service mesh and $productName$ can route L7 traffic, the reality is that |
| 49 | +these use cases are quite different. Many users will integrate $productName$ with a |
| 50 | +service mesh. Production customers of $productName$ have integrated with Consul, |
| 51 | +Istio, and Linkerd2. |
| 52 | + |
| 53 | +## Common Configurations |
| 54 | + |
| 55 | +### How do I disable the 404 landing page? |
| 56 | + |
| 57 | +Established users will want to better control 404 behavior both for usability and |
| 58 | +security. You can leverage the Mapping resource to implement this functionality to |
| 59 | +your cluster. $productName$ users can use a 'catch-all' mapping using the '/' |
| 60 | +prefix in a mapping configuration. The simplest mapping, described below, returns only 404 text. |
| 61 | +To use a custom 404 landing page, simply insert your service and remove the rewrite value. |
| 62 | + |
| 63 | +```yaml |
| 64 | +apiVersion: getambassador.io/v2 |
| 65 | +kind: Mapping |
| 66 | +metadata: |
| 67 | + name: "404-fallback" |
| 68 | +spec: |
| 69 | + prefix: "/" |
| 70 | + rewrite: "/404/" # This must not map to any existing prefix! |
| 71 | + service: localhost:8500 |
| 72 | +``` |
| 73 | +
|
| 74 | +For more information on the Mapping resource, see [Advanced Mapping Configuration](../../topics/using/mappings). |
| 75 | +
|
| 76 | +### How do I disable the default Admin mappings? |
| 77 | +
|
| 78 | +In a production environment, public access to the console and admin endpoints is not an |
| 79 | +ideal situation. To solve this, we will be using an Ambassador Module to remove the default |
| 80 | +mappings and create a new, host-based mapping to expose the Admin endpoint more securely. The |
| 81 | +Ambassador module applies system-wide configuration settings for $productName$ to follow. |
| 82 | +
|
| 83 | +```yaml |
| 84 | +apiVersion: getambassador.io/v2 |
| 85 | +kind: Module |
| 86 | +metadata: |
| 87 | + name: ambassador |
| 88 | +spec: |
| 89 | + config: |
| 90 | + diagnostics: |
| 91 | + enabled: false |
| 92 | +``` |
| 93 | +
|
| 94 | +After applying this module, the admin endpoint is no longer accessible from the outside world. |
| 95 | +We cannot, however, exclude actual administrators from this endpoint, so to create a more managed |
| 96 | +endpoint for them to use, create a mapping to expose the endpoint. |
| 97 | +
|
| 98 | +```yaml |
| 99 | +apiVersion: getambassador.io/v2 |
| 100 | +kind: Mapping |
| 101 | +metadata: |
| 102 | + name: admin-mapping |
| 103 | +spec: |
| 104 | + host: admin.example.com |
| 105 | + prefix: /edge_stack/ |
| 106 | + rewrite: /edge_stack_ui/edge_stack/ |
| 107 | + service: localhost:8500 |
| 108 | +``` |
| 109 | +
|
| 110 | +Now, administrators can connect to the admin console via hostname. Additional [Mapping](../../topics/using/intro-mappings) and |
| 111 | +[Filter](/docs/edge-stack/latest/topics/using/filters/) settings can be appropriately configured to better control access to admin services. To |
| 112 | +learn more about Ambassador Module configurations, see [Ambassador Module](../../topics/running/ambassador) |
| 113 | +
|
| 114 | +## Troubleshooting |
| 115 | +
|
| 116 | +### How do I get help for $productName$? |
| 117 | +
|
| 118 | +We have an online [Slack community](http://a8r.io/slack) with thousands of |
| 119 | +users. We try to help out as often as possible, although we can't promise a |
| 120 | +particular response time. If you need a guaranteed SLA, we also have commercial |
| 121 | +contracts. [Contact sales](/contact-us/) for more information. |
| 122 | +
|
| 123 | +### What do I do when I get the error `no healthy upstream`? |
| 124 | + |
| 125 | +This error means that $productName$ could not connect to your backend service. |
| 126 | +Start by verifying that your backend service is actually available and |
| 127 | +responding by sending an HTTP response directly to the pod. Then, verify that |
| 128 | +$productName$ is routing by deploying a test service and seeing if the mapping |
| 129 | +works. Then, verify that your load balancer is properly routing requests to |
| 130 | +$productName$. In general, verifying each network hop between your client and |
| 131 | +backend service is critical to finding the source of the problem. |
0 commit comments