Compare commits

..

12 Commits

Author SHA1 Message Date
Phil Peble 9081324e6b
Merge pull request #5306 from yanjunding/patch-1
Typo
2025-08-25 14:42:13 -05:00
Phil Peble cc19ca0746
Merge pull request #5864 from emissary-ingress/release-3.10-fix-CHANGELOG
Update CHANGELOG with correct metadata for 3.10 release
2025-08-14 16:01:01 -05:00
Phil Peble db5d38e826
Update CHANGELOG with correct metadata for 3.10 release
Signed-off-by: Phil Peble <ppeble@activecampaign.com>
2025-08-14 15:56:44 -05:00
Flynn a8e8f4aacd
Merge pull request #5849 from emissary-ingress/release-3-10-quickstart
Point quickstart link in README to emissary-ingress.dev
2025-07-29 13:30:12 -04:00
Phil Peble e6fa8e56e3
Point quickstart link in README to emissary-ingress.dev
Signed-off-by: Phil Peble <ppeble@activecampaign.com>
2025-07-29 12:17:48 -05:00
Flynn 4f12337556
Merge pull request #5839 from emissary-ingress/flynn/update-docs
Update README and QUICKSTART for 3.10.0
2025-05-07 15:50:26 -04:00
Flynn dd98ecd66a Minor tweaks
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-05-07 10:15:53 -04:00
Flynn c815e182b2 Update README and SUPPORT.md
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-05-07 10:15:47 -04:00
Flynn 96a49735a8 TRY-3.10 -> QUICKSTART
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-05-07 10:15:41 -04:00
Flynn d25610acbe
Merge pull request #5831 from emissary-ingress/flynn/update-try-3.10
Update the TRY-3.10 document for 3.10.0-rc.3.
2025-03-26 12:28:37 -04:00
Flynn 0f94681cfb Update the TRY-3.10 document for 3.10.0-rc.3.
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-03-25 22:19:49 -04:00
Adrian Ding 7f56afa587
Typo 2023-09-19 07:26:27 +12:00
6 changed files with 123 additions and 116 deletions

View File

@ -85,8 +85,8 @@ it will be removed; but as it won't be user-visible this isn't considered a brea
## RELEASE NOTES
## [3.10.0-dev] TBD
[3.10.0-dev]: https://github.com/emissary-ingress/emissary/compare/v3.9.0...v3.10.0-dev
## [3.10.0] July 29, 2025
[3.10.0]: https://github.com/emissary-ingress/emissary/compare/v3.9.0...v3.10.0
### Emissary-ingress and Ambassador Edge Stack

View File

@ -1,16 +1,12 @@
## Support for deploying and using Ambassador
## Support for deploying and using Emissary
Welcome to Ambassador! We use GitHub for tracking bugs and feature requests. If you need support, the following resources are available. Thanks for understanding.
Welcome to Emissary! The Emissary community is the best current resource for
Emissary support, with the best options being:
### Documentation
- Checking out the [documentation] at https://emissary-ingress.dev/
- Joining the `#emissary-ingress` channel in the [CNCF Slack]
- [Opening an issue][GitHub] in [GitHub]
* [User Documentation](https://www.getambassador.io/docs)
* [Troubleshooting Guide](https://www.getambassador.io/reference/debugging)
### Real-time Chat
* [Slack](https://d6e.co/slack): The `#ambassador` channel is a good place to start.
### Commercial Support
* Commercial Support is available as part of [Ambassador Pro](https://www.getambassador.io/pro/).
[CNCF Slack]: https://communityinviter.com/apps/cloud-native/cncf)
[documentation]: https://emissary-ingress.dev/
[GitHub]: https://github.com/emissary-ingress/emissary/issues

View File

@ -172,7 +172,7 @@ Provides two main functions:
- Generate IR and envoy configs (load_ir function)
- Take each Resource generated in ResourceFetcher and add it to the Config object as strongly typed objects
- Store Config Object in `/ambassador/snapshots/aconf-tmp.json`
- Check Deltas for Mappings cach and determine if we needs to be reset
- Check Deltas for Mappings cache and determine if we needs to be reset
- Create IR with a Config, Cache, and invalidated items
- IR is generated which basically just converts our stuff to strongly typed generic "envoy" items (handling filters, clusters, listeners, removing duplicates, etc...)
- IR is updated in-memory for diagd process

View File

@ -1,38 +1,48 @@
# Emissary-ingress 3.10.0
# Emissary-ingress 3.10 Quickstart
Emissary 3.10 encompasses:
**We recommend using Helm** to install Emissary.
- all the changes made in this repo by Ambassador Labs after Emissary 3.9.1;
- updates to Go dependencies;
- updates to the included Envoy Proxy; and
- community updates (with huge thanks to [Ajay Choudhary] and [Luke Shumaker]!)
### Installing if you're starting fresh
**Note well** that there is also an Ambassador Edge Stack 3.10.0, but
**Emissary 3.10 and Edge Stack 3.10 are not equivalent**. Their codebases have
diverged and will continue to do so.
**If you are already running Emissary and just want to upgrade, DO NOT FOLLOW
THESE DIRECTIONS.** Instead, check out "Upgrading from an earlier Emissary"
below.
[Ajay Choudhary]: https://github.com/ajaychoudhary-hotstar
[Luke Shumaker]: https://github.com/lukeshu
If you're starting from scratch and you don't need to worry about older CRD
versions, install using `--set enableLegacyVersions=false` to avoid install
the old versions of the CRDs and the conversion webhook:
## Trying 3.10
```bash
helm install emissary-crds \
--namespace emissary --create-namespace \
oci://ghcr.io/emissary-ingress/emissary-crds-chart --version=3.10.0 \
--set enableLegacyVersions=false \
--wait
```
The most current Emissary 3.10 is Emissary 3.10.0-rc.1. This is a **release
candidate**: it passes CI and is believed to be stable, but there will be at
least one more RC to update Python dependencies and pull in further community
changes, and we'd like more people to try it out before we call it a final
release.
This will install only v3alpha1 CRDs and skip the conversion webhook entirely.
It will create the `emissary` namespace for you, but there won't be anything
in it at this point.
By far the easiest way to try things is with Helm -- and note that Emissary
3.10 includes a Helm chart for CRDs.
Next up, install Emissary itself, with `--set waitForApiext.enabled=false` to
tell Emissary not to wait for the conversion webhook to be ready:
### Installing if you're already running an earlier Emissary
```bash
helm install emissary \
--namespace emissary \
oci://ghcr.io/emissary-ingress/emissary-ingress --version=3.10.0 \
--set waitForApiext.enabled=false \
--wait
```
### Upgrading from an earlier Emissary
First, install the CRDs and the conversion webhook:
```bash
helm install emissary-crds \
--namespace emissary-system --create-namespace \
oci://docker.io/dwflynn/emissary-crds-chart --version=3.10.0-rc.1 \
oci://ghcr.io/emissary-ingress/emissary-crds-chart --version=3.10.0 \
--wait
```
@ -42,39 +52,16 @@ conversion webhook into the `emissary-system` namespace. Once that's done, you'l
```bash
helm install emissary \
--namespace emissary --create-namespace \
oci://docker.io/dwflynn/emissary-ingress --version=3.10.0-rc.1 \
--wait
```
### Installing if you're starting fresh
If you're starting from scratch and you don't need to worry about older CRD
versions, you can do things differently:
```bash
helm install emissary-crds \
--namespace emissary --create-namespace \
oci://docker.io/dwflynn/emissary-crds-chart --version=3.10.0-rc.1 \
--set enableLegacyVersions=false \
--wait
```
This will install only v3alpha1 CRDs and skip the conversion webhook entirely.
It will create the `emissary` namespace for you, but there won't be anything
in it until you install Emissary itself:
```bash
helm install emissary \
--namespace emissary \
oci://docker.io/dwflynn/emissary-ingress --version=3.10.0-rc.1 \
--set waitForApiext.enabled=false \
oci://ghcr.io/emissary-ingress/emissary-ingress --version=3.10.0 \
--wait
```
### Using Emissary
In either case above, you should have a running Emissary behind the Service
named `emissary-emissary-ingress` in the `emissary` namespace. How exactly you connect to that Service will vary with your cluster provider, but you can start with
named `emissary-emissary-ingress` in the `emissary` namespace. How exactly you
connect to that Service will vary with your cluster provider, but you can
start with
```bash
kubectl get svc -n emissary emissary-emissary-ingress
@ -99,7 +86,7 @@ check. First, install Faces itself using Helm:
```bash
helm install faces \
--namespace faces --create-namespace \
oci://ghcr.io/buoyantio/faces-chart --version 2.0.0-rc.1 \
oci://ghcr.io/buoyantio/faces-chart --version 2.0.0-rc.4 \
--wait
```

122
README.md
View File

@ -23,64 +23,88 @@ Emissary-ingress
---
## Want to try an Emissary 3.10.0 RC?
## QUICKSTART
We have a release candidate for Emissary 3.10.0 available for testing. If you're interested in giving it a shot, wonderful! Check out [trying 3.10].
Looking to get started as quickly as possible? Check out [the
QUICKSTART](https://emissary-ingress.dev/docs/3.10/quick-start/)!
[trying 3.10]: https://github.com/emissary-ingress/emissary/tree/master/TRY-3.10.md
### Latest Release
The latest production version of Emissary is **3.10.0**.
**Note well** that there is also an Ambassador Edge Stack 3.10.0, but
**Emissary 3.10 and Edge Stack 3.10 are not equivalent**. Their codebases have
diverged and will continue to do so.
---
[Emissary-Ingress](https://www.getambassador.io/docs/open-source) is an open-source Kubernetes-native API Gateway +
Layer 7 load balancer + Kubernetes Ingress built on [Envoy Proxy](https://www.envoyproxy.io).
Emissary-ingress is a CNCF incubation project (and was formerly known as Ambassador API Gateway).
Emissary-ingress
================
Emissary-ingress enables its users to:
* Manage ingress traffic with [load balancing], support for multiple protocols ([gRPC and HTTP/2], [TCP], and [web sockets]), and Kubernetes integration
* Manage changes to routing with an easy to use declarative policy engine and [self-service configuration], via Kubernetes [CRDs] or annotations
* Secure microservices with [authentication], [rate limiting], and [TLS]
* Ensure high availability with [sticky sessions], [rate limiting], and [circuit breaking]
* Leverage observability with integrations with [Grafana], [Prometheus], and [Datadog], and comprehensive [metrics] support
* Enable progressive delivery with [canary releases]
* Connect service meshes including [Consul], [Linkerd], and [Istio]
[Emissary-ingress](https://www.getambassador.io/docs/open-source) is an
open-source, developer-centric, Kubernetes-native API gateway built on [Envoy
Proxy]. Emissary-ingress is a CNCF incubating project (and was formerly known
as Ambassador API Gateway).
### Design Goals
The first problem faced by any organization trying to develop cloud-native
applications is the _ingress problem_: allowing users outside the cluster to
access the application running inside the cluster. Emissary is built around
the idea that the application developers should be able to solve the ingress
problem themselves, without needing to become Kubernetes experts and without
needing dedicated operations staff: a self-service, developer-centric workflow
is necessary to develop at scale.
Emissary is open-source, developer-centric, role-oriented, opinionated, and
Kubernatives-native.
- open-source: Emissary is licensed under the Apache 2 license, permitting use
or modification by anyone.
- developer-centric: Emissary is designed taking the application developer
into account first.
- role-oriented: Emissary's configuration deliberately tries to separate
elements to allow separation of concerns between developers and operations.
- opinionated: Emissary deliberately tries to make easy things easy, even if
that comes of the cost of not allowing some uncommon features.
### Features
Emissary supports all the table-stakes features needed for a modern API
gateway:
* Per-request [load balancing]
* Support for routing [gRPC], [HTTP/2], [TCP], and [web sockets]
* Declarative configuration via Kubernetes [custom resources]
* Fine-grained [authentication] and [authorization]
* Advanced routing features like [canary releases], [A/B testing], [dynamic routing], and [sticky sessions]
* Resilience features like [retries], [rate limiting], and [circuit breaking]
* Observability features including comprehensive [metrics] support using the [Prometheus] stack
* Easy service mesh integration with [Linkerd], [Istio], [Consul], etc.
* [Knative serverless integration]
See the full list of [features](https://www.getambassador.io/docs/emissary) here.
Branches
========
### Branches
(If you are looking at this list on a branch other than `master`, it
may be out of date.)
- [`master`](https://github.com/emissary-ingress/emissary/tree/master) - branch for Emissary-ingress dev work ( :heavy_check_mark: upcoming release)
- [`release/v3.9`](https://github.com/emissary-ingress/emissary/tree/release/v3.9) - branch for Emissary-ingress 3.9.z work
- [`release/v2.5`](https://github.com/emissary-ingress/emissary/tree/release/v2.5) - branch for Emissary-ingress 2.5.z work ( :heavy_check_mark: maintenance)
- [`main`](https://github.com/emissary-ingress/emissary/tree/main): Emissary 4 development work
Architecture
============
**No further development is planned on any branches listed below.**
Emissary is configured via Kubernetes CRDs, or via annotations on Kubernetes `Service`s. Internally,
it uses the [Envoy Proxy] to actually handle routing data; externally, it relies on Kubernetes for
scaling and resiliency. For more on Emissary's architecture and motivation, read [this blog post](https://blog.getambassador.io/building-ambassador-an-open-source-api-gateway-on-kubernetes-and-envoy-ed01ed520844).
- [`master`](https://github.com/emissary-ingress/emissary/tree/master) - **Frozen** at Emissary 3.10.0
- [`release/v3.10`](https://github.com/emissary-ingress/emissary/tree/release/v3.10) - Emissary-ingress 3.10.0 release branch
- [`release/v3.9`](https://github.com/emissary-ingress/emissary/tree/release/v3.9)
- Emissary-ingress 3.9.1 release branch
- [`release/v2.5`](https://github.com/emissary-ingress/emissary/tree/release/v2.5) - Emissary-ingress 2.5.1 release branch
Getting Started
===============
**Note well** that there is also an Ambassador Edge Stack 3.10.0, but
**Emissary 3.10 and Edge Stack 3.10 are not equivalent**. Their codebases have
diverged and will continue to do so.
You can get Emissary up and running in just three steps. Follow the instructions here: https://www.getambassador.io/docs/emissary/latest/tutorials/getting-started/
If you are looking for a Kubernetes ingress controller, Emissary provides a superset of the functionality of a typical ingress controller. (It does the traditional routing, and layers on a raft of configuration options.) This blog post covers [Kubernetes ingress](https://blog.getambassador.io/kubernetes-ingress-nodeport-load-balancers-and-ingress-controllers-6e29f1c44f2d).
For other common questions, view this [FAQ page](https://www.getambassador.io/docs/emissary/latest/about/faq/).
You can also use Helm to install Emissary. For more information, see the instructions in the [Helm installation documentation](https://www.getambassador.io/docs/emissary/latest/topics/install/helm/)
Check out the full [Emissary
documentation](https://www.getambassador.io/docs/emissary/) at
www.getambassador.io/docs/open-source.
Community
=========
#### Community
Emissary-ingress is a CNCF Incubating project and welcomes any and all
contributors.
@ -95,21 +119,21 @@ the way the community is run, including:
regular trouble-shooting meetings and contributor meetings
- how to get [`SUPPORT.md`](Community/SUPPORT.md).
The best way to join the community is to join the [CNCF Slack](https://communityinviter.com/apps/cloud-native/cncf)
#emissary-ingress channel.
Check out the [`DevDocumentation/`](DevDocumentation/) directory for
information on the technicals of Emissary, most notably the
[`CONTRIBUTING.md`](DevDocumentation/CONTRIBUTING.md) contributor's guide.
The best way to join the community is to join the `#emissary-ingress` channel
in the [CNCF Slack]. This is also the best place for technical information
about Emissary's architecture or development.
If you're interested in contributing, here are some ways:
* Write a blog post for [our blog](https://blog.getambassador.io)
* Investigate an [open issue](https://github.com/emissary-ingress/emissary/issues)
* Add [more tests](https://github.com/emissary-ingress/emissary/tree/master/ambassador/tests)
The Ambassador Edge Stack is a superset of Emissary-ingress that provides additional functionality including OAuth/OpenID Connect, advanced rate limiting, Swagger/OpenAPI support, integrated ACME support for automatic TLS certificate management, and a cloud-based UI. For more information, visit https://www.getambassador.io/editions/.
* Add [more tests](https://github.com/emissary-ingress/emissary/tree/main/ambassador/tests)
<!-- Please keep this list sorted. -->
[CNCF Slack]: https://communityinviter.com/apps/cloud-native/cncf
[Envoy Proxy]: https://www.envoyproxy.io
<!-- Legacy: clean up these links! -->
[authentication]: https://www.getambassador.io/docs/emissary/latest/topics/running/services/auth-service/
[canary releases]: https://www.getambassador.io/docs/emissary/latest/topics/using/canary/
[circuit breaking]: https://www.getambassador.io/docs/emissary/latest/topics/using/circuit-breakers/

View File

@ -32,9 +32,9 @@
changelog: https://github.com/emissary-ingress/emissary/blob/$branch$/CHANGELOG.md
items:
- version: 3.10.0-dev
- version: 3.10.0
prevVersion: 3.9.0
date: "TBD"
date: "2025-07-29"
notes:
- title: Upgrade to Envoy 1.30.2
type: feature