Compare commits

...

31 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
Flynn 5d1dea8ba8
Merge pull request #5795 from emissary-ingress/ci/5794
[CI Run] ambex: Remove usage of md5
2025-03-21 20:22:50 -04:00
Alice Wasko 7f3c6a8868 fix linting errors
Signed-off-by: Alice Wasko <aliceproxy@pm.me>
2025-03-21 16:36:55 -04:00
Flynn 214320b2e4 Update release notes
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-03-21 16:36:55 -04:00
Flynn 433ac459a0 Remove usage of md5
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-03-21 16:36:55 -04:00
Flynn 79170dbc4a
Merge pull request #5827 from emissary-ingress/flynn/python-deps
Update Python dependencies
2025-03-21 16:34:17 -04:00
Flynn 2f95c68bf1 Update dependency licenses. Ugh.
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-03-06 09:17:00 -05:00
Flynn da250b7cc7 Update Python dependencies
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-03-05 22:08:49 -05:00
Flynn 08d78948ac Use py-version to choose the Python version for our venv
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-03-05 22:08:45 -05:00
Flynn d14c84c690
Merge pull request #5823 from emissary-ingress/flynn/isker-5821
Pass client certificate and SNI to auth service -- thanks, @isker!
2025-02-14 09:54:43 -05:00
Flynn 2ae71716cc Automatic formatter stuff
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-02-13 18:36:41 -05:00
Flynn 6c161bd268 Move CHANGELOG tweak into docs/releaseNotes.yml
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-02-13 18:36:24 -05:00
Ian Kerins 9b6894249f Pass client certificate and SNI to auth service
This enables the auth service to do things like mTLS.

Signed-off-by: Ian Kerins <git@isk.haus>
2025-02-13 18:29:47 -05:00
Flynn cffdd53f8e
Merge pull request #5825 from emissary-ingress/flynn/readme-fix
🤦‍♂️ right, TRY-3.10.md is on master at the moment.
2025-02-13 10:22:52 -05:00
Flynn ccdc52db1d 🤦‍♂️ right, TRY-3.10.md is on master at the moment.
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-02-12 23:18:00 -05:00
Flynn 600dcaf4b8
Merge pull request #5822 from emissary-ingress/flynn/try-3.10
"Try 3.10" instructions for the release/v3.10 branch
2025-02-12 17:05:05 -05:00
Flynn def2e22bc2 Disable the broken chart test for the moment (I've torn the charts apart at the moment).
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-02-12 15:31:26 -05:00
Flynn 1c5819bce5 Tweak language around ALabs contributions
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-02-12 14:54:22 -05:00
Flynn 0e1a1d1d9d D'oh, include links for Ajay and Luke
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-02-12 14:53:49 -05:00
Flynn c8f597d7ce "Try 3.10" instructions for the release/v3.10 branch
Signed-off-by: Flynn <emissary@flynn.kodachi.com>
2025-02-12 14:47:34 -05:00
Adrian Ding 7f56afa587
Typo 2023-09-19 07:26:27 +12:00
17 changed files with 505 additions and 279 deletions

View File

@ -299,27 +299,30 @@ jobs:
DOCKER_BUILD_USERNAME: ${{ secrets.GH_DOCKER_BUILD_USERNAME }} DOCKER_BUILD_USERNAME: ${{ secrets.GH_DOCKER_BUILD_USERNAME }}
DOCKER_BUILD_PASSWORD: ${{ secrets.GH_DOCKER_BUILD_TOKEN }} DOCKER_BUILD_PASSWORD: ${{ secrets.GH_DOCKER_BUILD_TOKEN }}
steps: steps:
- uses: docker/login-action@v2 - name: Warn about skip
with:
registry: ${{ (!startsWith(secrets.DEV_REGISTRY, 'docker.io/')) && secrets.DEV_REGISTRY || null }}
username: ${{ secrets.GH_DOCKER_BUILD_USERNAME }}
password: ${{ secrets.GH_DOCKER_BUILD_TOKEN }}
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Install Deps
uses: ./.github/actions/setup-deps
- name: make test-chart
run: | run: |
make ci/setup-k3d echo "SKIPPING CHART TEST; check the charts manually"
export DEV_KUBECONFIG=~/.kube/config # - uses: docker/login-action@v2
# with:
# registry: ${{ (!startsWith(secrets.DEV_REGISTRY, 'docker.io/')) && secrets.DEV_REGISTRY || null }}
# username: ${{ secrets.GH_DOCKER_BUILD_USERNAME }}
# password: ${{ secrets.GH_DOCKER_BUILD_TOKEN }}
# - uses: actions/checkout@v3
# with:
# fetch-depth: 0
# ref: ${{ github.event.pull_request.head.sha }}
# - name: Install Deps
# uses: ./.github/actions/setup-deps
# - name: make test-chart
# run: |
# make ci/setup-k3d
# export DEV_KUBECONFIG=~/.kube/config
make test-chart # make test-chart
- uses: ./.github/actions/after-job # - uses: ./.github/actions/after-job
with: # with:
jobname: check-chart # jobname: check-chart
if: always() # if: always()
build: ####################################################################### build: #######################################################################
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04

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 ## RELEASE NOTES
## [3.10.0-dev] TBD ## [3.10.0] July 29, 2025
[3.10.0-dev]: https://github.com/emissary-ingress/emissary/compare/v3.9.0...v3.10.0-dev [3.10.0]: https://github.com/emissary-ingress/emissary/compare/v3.9.0...v3.10.0
### Emissary-ingress and Ambassador Edge Stack ### Emissary-ingress and Ambassador Edge Stack
@ -110,7 +110,17 @@ it will be removed; but as it won't be user-visible this isn't considered a brea
- Feature: Emissary-ingress now supports resolving Endpoints from EndpointSlices in addition to the - Feature: Emissary-ingress now supports resolving Endpoints from EndpointSlices in addition to the
existing support for Endpoints, supporting Services with more than 1000 endpoints. existing support for Endpoints, supporting Services with more than 1000 endpoints.
- Feature: Emissary-ingress now passes the client TLS certificate and SNI, if any, to the external
auth service. These are available in the `source.certificate` and `tls_session.sni` fields, as
described in the <a
href="https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/auth/v3/attribute_context.proto">
Envoy extauth documentation</a>.
- Change: The `ambex` component of Emissary-ingress now uses `xxhash64` instead of `md5`, since
`md5` can cause problems in crypto-restricted environments (e.g. FIPS) ([Remove usage of md5])
[Incorrect Cache Key for Mapping]: https://github.com/emissary-ingress/emissary/issues/5714 [Incorrect Cache Key for Mapping]: https://github.com/emissary-ingress/emissary/issues/5714
[Remove usage of md5]: https://github.com/emissary-ingress/emissary/pull/5794
## [3.9.0] November 13, 2023 ## [3.9.0] November 13, 2023
[3.9.0]: https://github.com/emissary-ingress/emissary/compare/v3.8.0...v3.9.0 [3.9.0]: https://github.com/emissary-ingress/emissary/compare/v3.8.0...v3.9.0

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) [CNCF Slack]: https://communityinviter.com/apps/cloud-native/cncf)
* [Troubleshooting Guide](https://www.getambassador.io/reference/debugging) [documentation]: https://emissary-ingress.dev/
[GitHub]: https://github.com/emissary-ingress/emissary/issues
### 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/).

View File

@ -189,31 +189,31 @@ libraries:
Name Version License(s) Name Version License(s)
---- ------- ---------- ---- ------- ----------
Cython 0.29.37 Apache License 2.0 Cython 0.29.37 Apache License 2.0
Flask 3.0.3 3-clause BSD license Flask 3.1.0 3-clause BSD license
Jinja2 3.1.4 3-clause BSD license Jinja2 3.1.6 3-clause BSD license
MarkupSafe 2.1.5 3-clause BSD license MarkupSafe 3.0.2 2-clause BSD license
PyYAML 6.0.1 MIT license PyYAML 6.0.1 MIT license
Werkzeug 3.0.3 3-clause BSD license Werkzeug 3.1.3 3-clause BSD license
blinker 1.8.2 MIT license blinker 1.9.0 MIT license
build 1.2.2.post1 MIT license build 1.2.2.post1 MIT license
certifi 2024.2.2 Mozilla Public License 2.0 certifi 2025.1.31 Mozilla Public License 2.0
charset-normalizer 3.3.2 MIT license charset-normalizer 3.4.1 MIT license
click 8.1.7 3-clause BSD license click 8.1.8 3-clause BSD license
durationpy 0.6 MIT license durationpy 0.9 MIT license
expiringdict 1.2.2 Apache License 2.0 expiringdict 1.2.2 Apache License 2.0
gunicorn 22.0.0 MIT license gunicorn 23.0.0 MIT license
idna 3.7 3-clause BSD license idna 3.10 3-clause BSD license
itsdangerous 2.2.0 3-clause BSD license itsdangerous 2.2.0 3-clause BSD license
jsonpatch 1.33 3-clause BSD license jsonpatch 1.33 3-clause BSD license
jsonpointer 2.4 3-clause BSD license jsonpointer 3.0.0 3-clause BSD license
orjson 3.10.3 Apache License 2.0, MIT license orjson 3.10.15 Apache License 2.0, MIT license
packaging 23.1 2-clause BSD license, Apache License 2.0 packaging 23.1 2-clause BSD license, Apache License 2.0
pip-tools 7.3.0 3-clause BSD license pip-tools 7.3.0 3-clause BSD license
prometheus_client 0.20.0 Apache License 2.0 prometheus_client 0.21.1 Apache License 2.0
pyparsing 3.0.9 MIT license pyparsing 3.0.9 MIT license
pyproject_hooks 1.2.0 MIT license pyproject_hooks 1.2.0 MIT license
python-json-logger 2.0.7 2-clause BSD license python-json-logger 3.2.1 2-clause BSD license
requests 2.31.0 Apache License 2.0 requests 2.32.3 Apache License 2.0
semantic-version 2.10.0 2-clause BSD license semantic-version 2.10.0 2-clause BSD license
typing_extensions 4.11.0 Python Software Foundation license typing_extensions 4.12.2 Python Software Foundation license
urllib3 2.2.1 MIT license urllib3 2.3.0 MIT license

View File

@ -172,7 +172,7 @@ Provides two main functions:
- Generate IR and envoy configs (load_ir function) - 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 - 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` - 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 - 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 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 - IR is updated in-memory for diagd process

176
QUICKSTART.md Normal file
View File

@ -0,0 +1,176 @@
# Emissary-ingress 3.10 Quickstart
**We recommend using Helm** to install Emissary.
### Installing if you're starting fresh
**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.
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:
```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
```
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.
Next up, install Emissary itself, with `--set waitForApiext.enabled=false` to
tell Emissary not to wait for the conversion webhook to be ready:
```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://ghcr.io/emissary-ingress/emissary-crds-chart --version=3.10.0 \
--wait
```
This will install all the versions of the CRDs (v1, v2, and v3alpha1) and the
conversion webhook into the `emissary-system` namespace. Once that's done, you'll install Emissary itself:
```bash
helm install emissary \
--namespace emissary --create-namespace \
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
```bash
kubectl get svc -n emissary emissary-emissary-ingress
```
and that should get you started. Or, of course, you can use something like
```bash
kubectl port-forward -n emissary svc/emissary-emissary-ingress 8080:80
```
(after you configure a Listener!) and then talk to localhost:8080 with any
kind of cluster.
## Using Faces for a sanity check
[Faces Demo]: https://github.com/buoyantio/faces-demo
If you like, you can continue by using the [Faces Demo] as a quick sanity
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.4 \
--wait
```
Next, you'll need to configure Emissary to route to Faces. First, we'll do the
basic configuration to tell Emissary to listen for HTTP traffic:
```bash
kubectl apply -f - <<EOF
---
apiVersion: getambassador.io/v3alpha1
kind: Listener
metadata:
name: ambassador-https-listener
spec:
port: 8443
protocol: HTTPS
securityModel: XFP
hostBinding:
namespace:
from: ALL
---
apiVersion: getambassador.io/v3alpha1
kind: Listener
metadata:
name: ambassador-http-listener
spec:
port: 8080
protocol: HTTP
securityModel: XFP
hostBinding:
namespace:
from: ALL
---
apiVersion: getambassador.io/v3alpha1
kind: Host
metadata:
name: wildcard-host
spec:
hostname: "*"
requestPolicy:
insecure:
action: Route
EOF
```
(This actually supports both HTTPS and HTTP, but since we haven't set up TLS
certificates, we'll just stick with HTTP.)
Next, we need two Mappings:
| Prefix | Routes to Service | in Namespace |
| --------- | ----------------- | ------------ |
| `/faces/` | `faces-gui` | `faces` |
| `/face/` | `face` | `faces` |
```bash
kubectl apply -f - <<EOF
---
apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
name: gui-mapping
namespace: faces
spec:
hostname: "*"
prefix: /faces/
service: faces-gui.faces
rewrite: /
timeout_ms: 0
---
apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
name: face-mapping
namespace: faces
spec:
hostname: "*"
prefix: /face/
service: face.faces
timeout_ms: 0
EOF
```
Once that's done, then you'll be able to access the Faces Demo at `/faces/`,
on whatever IP address or hostname your cluster provides for the
`emissary-emissary-ingress` Service. Or you can port-forward as above and
access it at `http://localhost:8080/faces/`.

126
README.md
View File

@ -21,56 +21,90 @@ Emissary-ingress
<!-- Links are (mostly) at the end of this document, for legibility. --> <!-- Links are (mostly) at the end of this document, for legibility. -->
[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 enables its users to: ## QUICKSTART
* 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 Looking to get started as quickly as possible? Check out [the
* Secure microservices with [authentication], [rate limiting], and [TLS] QUICKSTART](https://emissary-ingress.dev/docs/3.10/quick-start/)!
* Ensure high availability with [sticky sessions], [rate limiting], and [circuit breaking]
* Leverage observability with integrations with [Grafana], [Prometheus], and [Datadog], and comprehensive [metrics] support ### Latest Release
* Enable progressive delivery with [canary releases]
* Connect service meshes including [Consul], [Linkerd], and [Istio] 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
================
[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] * [Knative serverless integration]
See the full list of [features](https://www.getambassador.io/docs/emissary) here. 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 (If you are looking at this list on a branch other than `master`, it
may be out of date.) 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) - [`main`](https://github.com/emissary-ingress/emissary/tree/main): Emissary 4 development work
- [`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)
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, - [`master`](https://github.com/emissary-ingress/emissary/tree/master) - **Frozen** at Emissary 3.10.0
it uses the [Envoy Proxy] to actually handle routing data; externally, it relies on Kubernetes for - [`release/v3.10`](https://github.com/emissary-ingress/emissary/tree/release/v3.10) - Emissary-ingress 3.10.0 release branch
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). - [`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/ #### Community
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
=========
Emissary-ingress is a CNCF Incubating project and welcomes any and all Emissary-ingress is a CNCF Incubating project and welcomes any and all
contributors. contributors.
@ -85,21 +119,21 @@ the way the community is run, including:
regular trouble-shooting meetings and contributor meetings regular trouble-shooting meetings and contributor meetings
- how to get [`SUPPORT.md`](Community/SUPPORT.md). - 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) The best way to join the community is to join the `#emissary-ingress` channel
#emissary-ingress channel. in the [CNCF Slack]. This is also the best place for technical information
about Emissary's architecture or development.
Check out the [`DevDocumentation/`](DevDocumentation/) directory for
information on the technicals of Emissary, most notably the
[`CONTRIBUTING.md`](DevDocumentation/CONTRIBUTING.md) contributor's guide.
If you're interested in contributing, here are some ways: If you're interested in contributing, here are some ways:
* Write a blog post for [our blog](https://blog.getambassador.io) * Write a blog post for [our blog](https://blog.getambassador.io)
* Investigate an [open issue](https://github.com/emissary-ingress/emissary/issues) * Investigate an [open issue](https://github.com/emissary-ingress/emissary/issues)
* Add [more tests](https://github.com/emissary-ingress/emissary/tree/master/ambassador/tests) * Add [more tests](https://github.com/emissary-ingress/emissary/tree/main/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/.
<!-- Please keep this list sorted. --> <!-- 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/ [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/ [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/ [circuit breaking]: https://www.getambassador.io/docs/emissary/latest/topics/using/circuit-breakers/

View File

@ -255,9 +255,9 @@ pytest-kat-envoy3-tests-%: build-aux/pytest-kat.txt $(tools/py-split-tests)
$(MAKE) pytest-run-tests PYTEST_ARGS="$$PYTEST_ARGS -k '$$($(tools/py-split-tests) $(subst -of-, ,$*) <build-aux/pytest-kat.txt)' python/tests/kat" $(MAKE) pytest-run-tests PYTEST_ARGS="$$PYTEST_ARGS -k '$$($(tools/py-split-tests) $(subst -of-, ,$*) <build-aux/pytest-kat.txt)' python/tests/kat"
pytest-kat-envoy3-%: python-integration-test-environment pytest-kat-envoy3-tests-% pytest-kat-envoy3-%: python-integration-test-environment pytest-kat-envoy3-tests-%
$(OSS_HOME)/venv: python/requirements.txt python/requirements-dev.txt $(OSS_HOME)/venv: $(OSS_HOME)/build-aux/py-version.txt python/requirements.txt python/requirements-dev.txt
rm -rf $@ rm -rf $@
python3 -m venv $@ python$$(sed -e 's/\~//' <$(OSS_HOME)/build-aux/py-version.txt) -m venv $@
$@/bin/pip3 install -r python/requirements.txt $@/bin/pip3 install -r python/requirements.txt
$@/bin/pip3 install -r python/requirements-dev.txt $@/bin/pip3 install -r python/requirements-dev.txt
$@/bin/pip3 install -e $(OSS_HOME)/python $@/bin/pip3 install -e $(OSS_HOME)/python

View File

@ -14,8 +14,10 @@ vendor: FORCE
go mod vendor go mod vendor
clean: vendor.rm-r clean: vendor.rm-r
# The egrep below is because the MarkupSafe has a broken, unreadable,
# multiline license value.
$(OSS_HOME)/build-aux/pip-show.txt: docker/base-pip.docker.tag.local $(OSS_HOME)/build-aux/pip-show.txt: docker/base-pip.docker.tag.local
docker run --rm "$$(cat docker/base-pip.docker)" sh -c 'pip freeze --exclude-editable | cut -d= -f1 | xargs pip show' > $@ docker run --rm "$$(cat docker/base-pip.docker)" sh -c "pip freeze --exclude-editable | cut -d= -f1 | xargs pip show | egrep '^([A-Za-z-]+: |---)'" > $@
clean: build-aux/pip-show.txt.rm clean: build-aux/pip-show.txt.rm
$(OSS_HOME)/build-aux/go-version.txt: $(_go-version/deps) $(OSS_HOME)/build-aux/go-version.txt: $(_go-version/deps)

View File

@ -32,9 +32,9 @@
changelog: https://github.com/emissary-ingress/emissary/blob/$branch$/CHANGELOG.md changelog: https://github.com/emissary-ingress/emissary/blob/$branch$/CHANGELOG.md
items: items:
- version: 3.10.0-dev - version: 3.10.0
prevVersion: 3.9.0 prevVersion: 3.9.0
date: 'TBD' date: "2025-07-29"
notes: notes:
- title: Upgrade to Envoy 1.30.2 - title: Upgrade to Envoy 1.30.2
type: feature type: feature
@ -75,9 +75,29 @@ items:
in addition to the existing support for Endpoints, supporting Services in addition to the existing support for Endpoints, supporting Services
with more than 1000 endpoints. with more than 1000 endpoints.
- title: Pass client TLS information to external auth
type: feature
body: >-
$productName$ now passes the client TLS certificate and SNI, if any,
to the external auth service. These are available in the
`source.certificate` and `tls_session.sni` fields, as described in
the <a
href="https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/auth/v3/attribute_context.proto">
Envoy extauth documentation</a>.
- title: Update `ambex` to use `xxhash64` instead of `md5`
type: change
body: >-
The `ambex` component of $productName$ now uses `xxhash64` instead
of `md5`, since `md5` can cause problems in crypto-restricted
environments (e.g. FIPS)
github:
- title: "Remove usage of md5"
link: https://github.com/emissary-ingress/emissary/pull/5794
- version: 3.9.0 - version: 3.9.0
prevVersion: 3.8.0 prevVersion: 3.8.0
date: '2023-11-13' date: "2023-11-13"
notes: notes:
- title: Upgrade to Envoy 1.27.2 - title: Upgrade to Envoy 1.27.2
type: feature type: feature
@ -127,7 +147,7 @@ items:
- version: 3.8.0 - version: 3.8.0
prevVersion: 3.7.2 prevVersion: 3.7.2
date: '2023-08-29' date: "2023-08-29"
notes: notes:
- title: Account for matchLabels when associating mappings with the same prefix to different Hosts - title: Account for matchLabels when associating mappings with the same prefix to different Hosts
type: bugfix type: bugfix
@ -161,7 +181,7 @@ items:
- version: 3.7.2 - version: 3.7.2
prevVersion: 3.7.1 prevVersion: 3.7.1
date: '2023-07-25' date: "2023-07-25"
notes: notes:
- title: Upgrade to Envoy 1.26.4 - title: Upgrade to Envoy 1.26.4
type: security type: security
@ -171,7 +191,7 @@ items:
- version: 3.7.1 - version: 3.7.1
prevVersion: 3.7.0 prevVersion: 3.7.0
date: '2023-07-13' date: "2023-07-13"
notes: notes:
- title: Upgrade to Envoy 1.26.3 - title: Upgrade to Envoy 1.26.3
type: security type: security
@ -180,7 +200,7 @@ items:
- version: 3.7.0 - version: 3.7.0
prevVersion: 3.6.0 prevVersion: 3.6.0
date: '2023-06-20' date: "2023-06-20"
notes: notes:
- title: Upgrade to Golang 1.20.4 - title: Upgrade to Golang 1.20.4
type: security type: security
@ -204,7 +224,7 @@ items:
- version: 3.6.0 - version: 3.6.0
prevVersion: 3.5.0 prevVersion: 3.5.0
date: '2023-04-17' date: "2023-04-17"
notes: notes:
- title: Upgrade to Envoy 1.25.4 - title: Upgrade to Envoy 1.25.4
type: feature type: feature
@ -214,7 +234,7 @@ items:
- version: 3.5.0 - version: 3.5.0
prevVersion: 3.4.0 prevVersion: 3.4.0
date: '2023-02-15' date: "2023-02-15"
notes: notes:
- title: Update to golang 1.20.1 - title: Update to golang 1.20.1
type: security type: security
@ -250,8 +270,8 @@ items:
generated with an sni match including the port. This has been fixed and the correct envoy configuration is generated with an sni match including the port. This has been fixed and the correct envoy configuration is
being generated. being generated.
github: github:
- title: "fix: hostname port issue" - title: "fix: hostname port issue"
link: https://github.com/emissary-ingress/emissary/pull/4816 link: https://github.com/emissary-ingress/emissary/pull/4816
- title: Add support for resolving port names in Ingress resource - title: Add support for resolving port names in Ingress resource
type: change type: change
@ -262,8 +282,8 @@ items:
to the original behavior. to the original behavior.
(Thanks to <a href="https://github.com/antonu17">Anton Ustyuzhanin</a>!). (Thanks to <a href="https://github.com/antonu17">Anton Ustyuzhanin</a>!).
github: github:
- title: "#4809" - title: "#4809"
link: https://github.com/emissary-ingress/emissary/pull/4809 link: https://github.com/emissary-ingress/emissary/pull/4809
- title: Add starupProbe to emissary-apiext server - title: Add starupProbe to emissary-apiext server
type: change type: change
@ -275,10 +295,9 @@ items:
configure the webhooks before running liveness and readiness probes. This is to ensure configure the webhooks before running liveness and readiness probes. This is to ensure
slow startup doesn't cause K8s to needlessly restart the pod. slow startup doesn't cause K8s to needlessly restart the pod.
- version: 3.4.0 - version: 3.4.0
prevVersion: 3.3.0 prevVersion: 3.3.0
date: '2023-01-03' date: "2023-01-03"
notes: notes:
- title: Re-add support for getambassador.io/v1 - title: Re-add support for getambassador.io/v1
type: feature type: feature
@ -342,7 +361,7 @@ items:
- version: 3.3.0 - version: 3.3.0
prevVersion: 3.2.0 prevVersion: 3.2.0
date: '2022-11-02' date: "2022-11-02"
notes: notes:
- title: Update Golang to 1.19.2 - title: Update Golang to 1.19.2
type: security type: security
@ -365,8 +384,8 @@ items:
restores the previous behavior by disabling the ext_authz call on the restores the previous behavior by disabling the ext_authz call on the
https redirect routes. https redirect routes.
github: github:
- title: "#4620" - title: "#4620"
link: https://github.com/emissary-ingress/emissary/issues/4620 link: https://github.com/emissary-ingress/emissary/issues/4620
- title: Fix regression in host_redirects with AuthService - title: Fix regression in host_redirects with AuthService
type: bugfix type: bugfix
@ -383,8 +402,8 @@ items:
restores the previous behavior by disabling the ext_authz call on the restores the previous behavior by disabling the ext_authz call on the
host_redirect routes. host_redirect routes.
github: github:
- title: "#4640" - title: "#4640"
link: https://github.com/emissary-ingress/emissary/issues/4640 link: https://github.com/emissary-ingress/emissary/issues/4640
- title: Fixed finding ingress resource tls secrets - title: Fixed finding ingress resource tls secrets
type: bugfix type: bugfix
@ -396,7 +415,7 @@ items:
- version: 3.2.0 - version: 3.2.0
prevVersion: 3.1.0 prevVersion: 3.1.0
date: '2022-09-26' date: "2022-09-26"
notes: notes:
- title: Envoy upgraded to 1.23 - title: Envoy upgraded to 1.23
type: change type: change
@ -435,8 +454,8 @@ items:
Distinct services with names that are the same in the first forty characters Distinct services with names that are the same in the first forty characters
will no longer be incorrectly mapped to the same cluster. will no longer be incorrectly mapped to the same cluster.
github: github:
- title: "#4354" - title: "#4354"
link: https://github.com/emissary-ingress/emissary/issues/4354 link: https://github.com/emissary-ingress/emissary/issues/4354
- title: Add failure_mode_deny option to the RateLimitService - title: Add failure_mode_deny option to the RateLimitService
type: feature type: feature
body: >- body: >-
@ -475,8 +494,8 @@ items:
literal values, environment variables, or request headers. literal values, environment variables, or request headers.
(Thanks to <a href="https://github.com/psalaberria002">Paul</a>!) (Thanks to <a href="https://github.com/psalaberria002">Paul</a>!)
github: github:
- title: "#4181" - title: "#4181"
link: https://github.com/emissary-ingress/emissary/pull/4181 link: https://github.com/emissary-ingress/emissary/pull/4181
- title: TCPMappings use correct SNI configuration - title: TCPMappings use correct SNI configuration
type: bugfix type: bugfix
body: >- body: >-
@ -505,7 +524,7 @@ items:
Updated Golang to 1.19.1 to address the CVEs: CVE-2022-27664, CVE-2022-32190. Updated Golang to 1.19.1 to address the CVEs: CVE-2022-27664, CVE-2022-32190.
- version: 3.1.0 - version: 3.1.0
date: '2022-08-01' date: "2022-08-01"
notes: notes:
- title: Add support for OpenAPI 2 contracts - title: Add support for OpenAPI 2 contracts
type: feature type: feature
@ -558,7 +577,7 @@ items:
- version: 3.0.0 - version: 3.0.0
prevVersion: 2.3.1 prevVersion: 2.3.1
date: '2022-06-27' date: "2022-06-27"
notes: notes:
- title: Envoy upgraded to 1.22 - title: Envoy upgraded to 1.22
type: change type: change
@ -652,7 +671,7 @@ items:
between downstream clients and $productName$. between downstream clients and $productName$.
- version: 2.5.0 - version: 2.5.0
date: 'TBD' date: "TBD"
prevVersion: 2.4.0 prevVersion: 2.4.0
notes: notes:
- title: Fixed <code>mappingSelector</code> associating <code>Hosts</code> with <code>Mappings</code> - title: Fixed <code>mappingSelector</code> associating <code>Hosts</code> with <code>Mappings</code>
@ -669,7 +688,7 @@ items:
(Thanks to <a href="https://github.com/f-herceg">Filip Herceg</a> and <a href="https://github.com/dynajoe">Joe Andaverde</a>!). (Thanks to <a href="https://github.com/f-herceg">Filip Herceg</a> and <a href="https://github.com/dynajoe">Joe Andaverde</a>!).
- version: 2.4.0 - version: 2.4.0
date: '2022-09-19' date: "2022-09-19"
prevVersion: 2.3.2 prevVersion: 2.3.2
notes: notes:
- title: Add support for Host resources using secrets from different namespaces - title: Add support for Host resources using secrets from different namespaces
@ -726,7 +745,7 @@ items:
<code>Listener</code> terminates TLS. <code>Listener</code> terminates TLS.
- version: 1.14.5 - version: 1.14.5
date: 'TBD' date: "TBD"
notes: notes:
- title: When using gzip, upstreams will no longer receive encoded data - title: When using gzip, upstreams will no longer receive encoded data
type: bugfix type: bugfix
@ -735,12 +754,12 @@ items:
data. This bug was introduced in 1.14.0. The fix restores the default behavior of data. This bug was introduced in 1.14.0. The fix restores the default behavior of
not sending compressed data to upstream services. not sending compressed data to upstream services.
github: github:
- title: 3818 - title: 3818
link: https://github.com/emissary-ingress/emissary/issues/3818 link: https://github.com/emissary-ingress/emissary/issues/3818
docs: https://github.com/emissary-ingress/emissary/issues/3818 docs: https://github.com/emissary-ingress/emissary/issues/3818
- version: 2.3.2 - version: 2.3.2
date: '2022-08-01' date: "2022-08-01"
prevVersion: 2.3.1 prevVersion: 2.3.1
notes: notes:
- title: Fix regression in the agent for the metrics transfer. - title: Fix regression in the agent for the metrics transfer.
@ -769,7 +788,7 @@ items:
Updated ncurses to 1.1.1q-r0 to address CVE-2022-29458 Updated ncurses to 1.1.1q-r0 to address CVE-2022-29458
- version: 1.14.4 - version: 1.14.4
date: '2022-06-13' date: "2022-06-13"
notes: notes:
- title: Envoy security updates - title: Envoy security updates
type: security type: security
@ -782,7 +801,7 @@ items:
docs: https://groups.google.com/g/envoy-announce/c/8nP3Kn4jV7k docs: https://groups.google.com/g/envoy-announce/c/8nP3Kn4jV7k
- version: 2.3.1 - version: 2.3.1
date: '2022-06-09' date: "2022-06-09"
notes: notes:
- title: fix regression in tracing service config - title: fix regression in tracing service config
type: bugfix type: bugfix
@ -791,8 +810,8 @@ items:
for the other drivers (lightstep, etc...). This caused $productName$ to crash on startup. This issue has been resolved for the other drivers (lightstep, etc...). This caused $productName$ to crash on startup. This issue has been resolved
to ensure that the defaults are only applied when driver is <code>zipkin</code> to ensure that the defaults are only applied when driver is <code>zipkin</code>
github: github:
- title: "#4267" - title: "#4267"
link: https://github.com/emissary-ingress/emissary/issues/4267 link: https://github.com/emissary-ingress/emissary/issues/4267
- title: Envoy security updates - title: Envoy security updates
type: security type: security
body: >- body: >-
@ -803,7 +822,7 @@ items:
redirects</a>, and does not use Envoy's built-in OAuth2 filter. redirects</a>, and does not use Envoy's built-in OAuth2 filter.
docs: https://groups.google.com/g/envoy-announce/c/8nP3Kn4jV7k docs: https://groups.google.com/g/envoy-announce/c/8nP3Kn4jV7k
- version: 2.3.0 - version: 2.3.0
date: '2022-06-06' date: "2022-06-06"
notes: notes:
- title: Remove unused packages - title: Remove unused packages
type: security type: security
@ -816,16 +835,16 @@ items:
<code>TracingService</code> config when using lightstep as the driver. <code>TracingService</code> config when using lightstep as the driver.
(Thanks to <a href="https://github.com/psalaberria002">Paul</a>!) (Thanks to <a href="https://github.com/psalaberria002">Paul</a>!)
github: github:
- title: "#4179" - title: "#4179"
link: https://github.com/emissary-ingress/emissary/pull/4179 link: https://github.com/emissary-ingress/emissary/pull/4179
- title: Added support for TLS certificate revocation list - title: Added support for TLS certificate revocation list
type: feature type: feature
body: >- body: >-
It is now possible to set `crl_secret` in `Host` and `TLSContext` resources It is now possible to set `crl_secret` in `Host` and `TLSContext` resources
to check peer certificates against a certificate revocation list. to check peer certificates against a certificate revocation list.
github: github:
- title: "#1743" - title: "#1743"
link: https://github.com/emissary-ingress/emissary/issues/1743 link: https://github.com/emissary-ingress/emissary/issues/1743
- title: Added support for the LogService v3 transport protocol - title: Added support for the LogService v3 transport protocol
type: feature type: feature
body: >- body: >-
@ -863,7 +882,7 @@ items:
to configure Envoy. to configure Envoy.
- version: 2.2.2 - version: 2.2.2
date: '2022-02-25' date: "2022-02-25"
prevVersion: 2.2.1 prevVersion: 2.2.1
notes: notes:
- title: TLS Secret validation is now opt-in - title: TLS Secret validation is now opt-in
@ -878,8 +897,8 @@ items:
body: >- body: >-
Kubernetes Secrets that should contain an EC (Elliptic Curve) TLS Private Key are now properly validated. Kubernetes Secrets that should contain an EC (Elliptic Curve) TLS Private Key are now properly validated.
github: github:
- title: 4134 - title: 4134
link: https://github.com/emissary-ingress/emissary/issues/4134 link: https://github.com/emissary-ingress/emissary/issues/4134
docs: https://github.com/emissary-ingress/emissary/issues/4134 docs: https://github.com/emissary-ingress/emissary/issues/4134
- title: Decrease metric sync frequency - title: Decrease metric sync frequency
@ -887,11 +906,11 @@ items:
body: >- body: >-
The new delay between two metrics syncs is now 30s. The new delay between two metrics syncs is now 30s.
github: github:
- title: "#4122" - title: "#4122"
link: https://github.com/emissary-ingress/emissary/pull/4122 link: https://github.com/emissary-ingress/emissary/pull/4122
- version: 1.14.3 - version: 1.14.3
date: '2022-02-25' date: "2022-02-25"
notes: notes:
- title: Envoy security updates - title: Envoy security updates
type: security type: security
@ -901,7 +920,7 @@ items:
docs: https://groups.google.com/g/envoy-announce/c/bIUgEDKHl4g docs: https://groups.google.com/g/envoy-announce/c/bIUgEDKHl4g
- version: 2.2.1 - version: 2.2.1
date: '2022-02-22' date: "2022-02-22"
notes: notes:
- title: Envoy V2 API deprecation - title: Envoy V2 API deprecation
type: change type: change
@ -917,7 +936,7 @@ items:
docs: ../../../argo/latest/howtos/manage-rollouts-using-cloud docs: ../../../argo/latest/howtos/manage-rollouts-using-cloud
- version: 2.2.0 - version: 2.2.0
date: '2022-02-10' date: "2022-02-10"
notes: notes:
- title: Envoy V2 API deprecation - title: Envoy V2 API deprecation
type: change type: change
@ -950,8 +969,8 @@ items:
instance was not actually left doing debugging logging, for example. instance was not actually left doing debugging logging, for example.
(Thanks to <a href="https://github.com/jfrabaute">Fabrice</a>!) (Thanks to <a href="https://github.com/jfrabaute">Fabrice</a>!)
github: github:
- title: "#3906" - title: "#3906"
link: https://github.com/emissary-ingress/emissary/issues/3906 link: https://github.com/emissary-ingress/emissary/issues/3906
docs: topics/running/statistics/8877-metrics/ docs: topics/running/statistics/8877-metrics/
- title: Envoy configuration % escaping - title: Envoy configuration % escaping
@ -962,10 +981,10 @@ items:
custom user content can now contain '%' symbols escaped as '%%'. custom user content can now contain '%' symbols escaped as '%%'.
docs: topics/running/custom-error-responses docs: topics/running/custom-error-responses
github: github:
- title: "DW Envoy: 74" - title: "DW Envoy: 74"
link: https://github.com/datawire/envoy/pull/74 link: https://github.com/datawire/envoy/pull/74
- title: "Upstream Envoy: 19383" - title: "Upstream Envoy: 19383"
link: https://github.com/envoyproxy/envoy/pull/19383 link: https://github.com/envoyproxy/envoy/pull/19383
image: ./v2.2.0-percent-escape.png image: ./v2.2.0-percent-escape.png
- title: Stream metrics from Envoy to Ambassador Cloud - title: Stream metrics from Envoy to Ambassador Cloud
@ -973,8 +992,8 @@ items:
body: >- body: >-
Support for streaming Envoy metrics about the clusters to Ambassador Cloud. Support for streaming Envoy metrics about the clusters to Ambassador Cloud.
github: github:
- title: "#4053" - title: "#4053"
link: https://github.com/emissary-ingress/emissary/pull/4053 link: https://github.com/emissary-ingress/emissary/pull/4053
docs: https://github.com/emissary-ingress/emissary/pull/4053 docs: https://github.com/emissary-ingress/emissary/pull/4053
- title: Support received commands to pause, continue and abort a Rollout via Agent directives - title: Support received commands to pause, continue and abort a Rollout via Agent directives
@ -985,8 +1004,8 @@ items:
is sent to Ambassador Cloud including the command ID, whether it ran successfully, and is sent to Ambassador Cloud including the command ID, whether it ran successfully, and
an error message in case there was any. an error message in case there was any.
github: github:
- title: "#4040" - title: "#4040"
link: https://github.com/emissary-ingress/emissary/pull/4040 link: https://github.com/emissary-ingress/emissary/pull/4040
docs: https://github.com/emissary-ingress/emissary/pull/4040 docs: https://github.com/emissary-ingress/emissary/pull/4040
- title: Validate certificates in TLS Secrets - title: Validate certificates in TLS Secrets
@ -996,8 +1015,8 @@ items:
accepted for configuration. A Secret that contains an invalid TLS certificate will be logged accepted for configuration. A Secret that contains an invalid TLS certificate will be logged
as an invalid resource. as an invalid resource.
github: github:
- title: "#3821" - title: "#3821"
link: https://github.com/emissary-ingress/emissary/issues/3821 link: https://github.com/emissary-ingress/emissary/issues/3821
docs: ../topics/running/tls docs: ../topics/running/tls
image: ./v2.2.0-tls-cert-validation.png image: ./v2.2.0-tls-cert-validation.png
@ -1011,7 +1030,7 @@ items:
- version: 2.1.2 - version: 2.1.2
prevVersion: 2.1.0 prevVersion: 2.1.0
date: '2022-01-25' date: "2022-01-25"
notes: notes:
- title: Envoy V2 API deprecation - title: Envoy V2 API deprecation
type: change type: change
@ -1068,8 +1087,8 @@ items:
Any <code>Mapping</code> that uses the <code>host_redirect</code> field is now properly discovered and used. Thanks Any <code>Mapping</code> that uses the <code>host_redirect</code> field is now properly discovered and used. Thanks
to <a href="https://github.com/gferon">Gabriel Féron</a> for contributing this bugfix! to <a href="https://github.com/gferon">Gabriel Féron</a> for contributing this bugfix!
github: github:
- title: "#3709" - title: "#3709"
link: https://github.com/emissary-ingress/emissary/issues/3709 link: https://github.com/emissary-ingress/emissary/issues/3709
docs: https://github.com/emissary-ingress/emissary/issues/3709 docs: https://github.com/emissary-ingress/emissary/issues/3709
- title: Correctly handle DNS wildcards when associating Hosts and Mappings - title: Correctly handle DNS wildcards when associating Hosts and Mappings
@ -1119,7 +1138,7 @@ items:
some situations a validation error would not be reported. some situations a validation error would not be reported.
- version: 2.1.1 - version: 2.1.1
date: 'N/A' date: "N/A"
notes: notes:
- title: Never issued - title: Never issued
type: change type: change
@ -1129,7 +1148,7 @@ items:
Emissary-ingress 2.1.0.</i> Emissary-ingress 2.1.0.</i>
- version: 2.1.0 - version: 2.1.0
date: '2021-12-16' date: "2021-12-16"
notes: notes:
- title: Not recommended; upgrade to 2.1.2 instead - title: Not recommended; upgrade to 2.1.2 instead
type: change type: change
@ -1161,8 +1180,8 @@ items:
<code>Mapping</code>s together). This has been corrected, so that all such <code>Mapping</code>s together). This has been corrected, so that all such
updates correctly take effect. updates correctly take effect.
github: github:
- title: "#3945" - title: "#3945"
link: https://github.com/emissary-ingress/emissary/issues/3945 link: https://github.com/emissary-ingress/emissary/issues/3945
docs: https://github.com/emissary-ingress/emissary/issues/3945 docs: https://github.com/emissary-ingress/emissary/issues/3945
image: ./v2.1.0-canary.png image: ./v2.1.0-canary.png
@ -1181,8 +1200,8 @@ items:
data. This bug was introduced in 1.14.0. The fix restores the default behavior of data. This bug was introduced in 1.14.0. The fix restores the default behavior of
not sending compressed data to upstream services. not sending compressed data to upstream services.
github: github:
- title: "#3818" - title: "#3818"
link: https://github.com/emissary-ingress/emissary/issues/3818 link: https://github.com/emissary-ingress/emissary/issues/3818
docs: https://github.com/emissary-ingress/emissary/issues/3818 docs: https://github.com/emissary-ingress/emissary/issues/3818
image: ./v2.1.0-gzip-enabled.png image: ./v2.1.0-gzip-enabled.png
@ -1206,7 +1225,7 @@ items:
have now been removed, resolving CVE-2020-29651. have now been removed, resolving CVE-2020-29651.
- version: 2.0.5 - version: 2.0.5
date: '2021-11-08' date: "2021-11-08"
notes: notes:
- title: AuthService circuit breakers - title: AuthService circuit breakers
type: feature type: feature
@ -1234,13 +1253,13 @@ items:
<code>mappingSelector</code>; a future version of $productName$ will remove the <code>mappingSelector</code>; a future version of $productName$ will remove the
<code>selector</code> element. <code>selector</code> element.
github: github:
- title: "#3902" - title: "#3902"
link: https://github.com/emissary-ingress/emissary/issues/3902 link: https://github.com/emissary-ingress/emissary/issues/3902
docs: https://github.com/emissary-ingress/emissary/issues/3902 docs: https://github.com/emissary-ingress/emissary/issues/3902
image: ./v2.0.5-mappingselector.png image: ./v2.0.5-mappingselector.png
- version: 2.0.4 - version: 2.0.4
date: '2021-10-19' date: "2021-10-19"
notes: notes:
- title: General availability! - title: General availability!
type: feature type: feature
@ -1314,8 +1333,8 @@ items:
The release now shows its actual released version number, rather than The release now shows its actual released version number, rather than
the internal development version number. the internal development version number.
github: github:
- title: "#3854" - title: "#3854"
link: https://github.com/emissary-ingress/emissary/issues/3854 link: https://github.com/emissary-ingress/emissary/issues/3854
docs: https://github.com/emissary-ingress/emissary/issues/3854 docs: https://github.com/emissary-ingress/emissary/issues/3854
image: ./v2.0.4-version.png image: ./v2.0.4-version.png
@ -1325,8 +1344,8 @@ items:
Large configurations no longer cause $productName$ to be unable Large configurations no longer cause $productName$ to be unable
to communicate with Ambassador Cloud. to communicate with Ambassador Cloud.
github: github:
- title: "#3593" - title: "#3593"
link: https://github.com/emissary-ingress/emissary/issues/3593 link: https://github.com/emissary-ingress/emissary/issues/3593
docs: https://github.com/emissary-ingress/emissary/issues/3593 docs: https://github.com/emissary-ingress/emissary/issues/3593
- title: Listeners correctly support l7Depth - title: Listeners correctly support l7Depth
@ -1338,7 +1357,7 @@ items:
image: ./v2.0.4-l7depth.png image: ./v2.0.4-l7depth.png
- version: 2.0.3-ea - version: 2.0.3-ea
date: '2021-09-16' date: "2021-09-16"
notes: notes:
- title: Developer Preview! - title: Developer Preview!
body: We're pleased to introduce $productName$ 2.0.3 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think. body: We're pleased to introduce $productName$ 2.0.3 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think.
@ -1351,10 +1370,10 @@ items:
type: feature type: feature
docs: topics/running/running/ docs: topics/running/running/
github: github:
- title: "#3686" - title: "#3686"
link: https://github.com/emissary-ingress/emissary/issues/3686 link: https://github.com/emissary-ingress/emissary/issues/3686
- title: "#3666" - title: "#3666"
link: https://github.com/emissary-ingress/emissary/issues/3666 link: https://github.com/emissary-ingress/emissary/issues/3666
- title: AmbassadorMapping supports setting the DNS type - title: AmbassadorMapping supports setting the DNS type
body: You can now set <code>dns_type</code> in the <code>AmbassadorMapping</code> to configure how Envoy will use the DNS for the service. body: You can now set <code>dns_type</code> in the <code>AmbassadorMapping</code> to configure how Envoy will use the DNS for the service.
@ -1366,11 +1385,11 @@ items:
type: bugfix type: bugfix
docs: https://github.com/emissary-ingress/emissary/issues/3707 docs: https://github.com/emissary-ingress/emissary/issues/3707
github: github:
- title: "#3707" - title: "#3707"
link: https://github.com/emissary-ingress/emissary/issues/3707 link: https://github.com/emissary-ingress/emissary/issues/3707
- version: 2.0.2-ea - version: 2.0.2-ea
date: '2021-08-24' date: "2021-08-24"
notes: notes:
- title: Developer Preview! - title: Developer Preview!
body: We're pleased to introduce $productName$ 2.0.2 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think. body: We're pleased to introduce $productName$ 2.0.2 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think.
@ -1394,7 +1413,7 @@ items:
docs: topics/running/running/ docs: topics/running/running/
- version: 2.0.1-ea - version: 2.0.1-ea
date: '2021-08-12' date: "2021-08-12"
notes: notes:
- title: Developer Preview! - title: Developer Preview!
body: We're pleased to introduce $productName$ 2.0.1 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think. body: We're pleased to introduce $productName$ 2.0.1 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think.
@ -1433,7 +1452,7 @@ items:
docs: topics/concepts/rate-limiting-at-the-edge/ docs: topics/concepts/rate-limiting-at-the-edge/
- version: 2.0.0-ea - version: 2.0.0-ea
date: '2021-06-24' date: "2021-06-24"
notes: notes:
- title: Developer Preview! - title: Developer Preview!
body: We're pleased to introduce $productName$ 2.0.0 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think. body: We're pleased to introduce $productName$ 2.0.0 as a <b>developer preview</b>. The 2.X family introduces a number of changes to allow $productName$ to more gracefully handle larger installations, reduce global configuration to better handle multitenant or multiorganizational installations, reduce memory footprint, and improve performance. We welcome feedback!! Join us on <a href="https://a8r.io/slack">Slack</a> and let us know what you think.
@ -1476,8 +1495,8 @@ items:
body: Each <code>AmbassadorHost</code> can specify its <code>requestPolicy.insecure.action</code> independently of any other <code>AmbassadorHost</code>, allowing for HTTP routing as flexible as HTTPS routing. body: Each <code>AmbassadorHost</code> can specify its <code>requestPolicy.insecure.action</code> independently of any other <code>AmbassadorHost</code>, allowing for HTTP routing as flexible as HTTPS routing.
docs: topics/running/host-crd/#secure-and-insecure-requests docs: topics/running/host-crd/#secure-and-insecure-requests
github: github:
- title: "#2888" - title: "#2888"
link: https://github.com/datawire/ambassador/issues/2888 link: https://github.com/datawire/ambassador/issues/2888
image: ./edge-stack-2.0.0-insecure_action_hosts.png image: ./edge-stack-2.0.0-insecure_action_hosts.png
type: bugfix type: bugfix
@ -1541,7 +1560,7 @@ items:
type: change type: change
- version: 1.14.2 - version: 1.14.2
date: '2021-09-29' date: "2021-09-29"
notes: notes:
- title: Mappings support controlling DNS refresh with DNS TTL - title: Mappings support controlling DNS refresh with DNS TTL
type: feature type: feature
@ -1566,7 +1585,7 @@ items:
docs: topics/running/ambassador/#modify-default-buffer-size docs: topics/running/ambassador/#modify-default-buffer-size
- version: 1.14.1 - version: 1.14.1
date: '2021-08-24' date: "2021-08-24"
notes: notes:
- title: Envoy security updates - title: Envoy security updates
type: change type: change
@ -1576,7 +1595,7 @@ items:
docs: https://groups.google.com/g/envoy-announce/c/5xBpsEZZDfE docs: https://groups.google.com/g/envoy-announce/c/5xBpsEZZDfE
- version: 1.14.0 - version: 1.14.0
date: '2021-08-19' date: "2021-08-19"
notes: notes:
- title: Envoy upgraded to 1.17.3! - title: Envoy upgraded to 1.17.3!
type: change type: change
@ -1603,7 +1622,7 @@ items:
docs: https://github.com/emissary-ingress/emissary/pull/3650 docs: https://github.com/emissary-ingress/emissary/pull/3650
- version: 1.13.10 - version: 1.13.10
date: '2021-07-28' date: "2021-07-28"
notes: notes:
- title: Fix for CORS origins configuration on the Mapping resource - title: Fix for CORS origins configuration on the Mapping resource
type: bugfix type: bugfix
@ -1654,7 +1673,7 @@ items:
image: ../images/edge-stack-1.13.10-consul-cert-log.png image: ../images/edge-stack-1.13.10-consul-cert-log.png
- version: 1.13.9 - version: 1.13.9
date: '2021-06-30' date: "2021-06-30"
notes: notes:
- title: Fix for TCPMappings - title: Fix for TCPMappings
body: >- body: >-
@ -1664,7 +1683,7 @@ items:
docs: topics/using/tcpmappings/ docs: topics/using/tcpmappings/
- version: 1.13.8 - version: 1.13.8
date: '2021-06-08' date: "2021-06-08"
notes: notes:
- title: Fix Ambassador Cloud Service Details - title: Fix Ambassador Cloud Service Details
body: >- body: >-
@ -1683,7 +1702,7 @@ items:
docs: https://www.getambassador.io/docs/argo docs: https://www.getambassador.io/docs/argo
- version: 1.13.7 - version: 1.13.7
date: '2021-06-03' date: "2021-06-03"
notes: notes:
- title: JSON logging support - title: JSON logging support
body: >- body: >-
@ -1710,7 +1729,7 @@ items:
type: change type: change
- version: 1.13.6 - version: 1.13.6
date: '2021-05-24' date: "2021-05-24"
notes: notes:
- title: Quieter logs in legacy mode - title: Quieter logs in legacy mode
type: bugfix type: bugfix
@ -1719,7 +1738,7 @@ items:
when using <code>AMBASSADOR_LEGACY_MODE=true</code>. when using <code>AMBASSADOR_LEGACY_MODE=true</code>.
- version: 1.13.5 - version: 1.13.5
date: '2021-05-13' date: "2021-05-13"
notes: notes:
- title: Correctly support proper_case and preserve_external_request_id - title: Correctly support proper_case and preserve_external_request_id
type: bugfix type: bugfix
@ -1738,7 +1757,7 @@ items:
docs: topics/running/ingress-controller docs: topics/running/ingress-controller
- version: 1.13.4 - version: 1.13.4
date: '2021-05-11' date: "2021-05-11"
notes: notes:
- title: Envoy 1.15.5 - title: Envoy 1.15.5
body: >- body: >-
@ -1747,5 +1766,4 @@ items:
image: ../images/edge-stack-1.13.4.png image: ../images/edge-stack-1.13.4.png
docs: topics/running/ambassador/#rejecting-client-requests-with-escaped-slashes docs: topics/running/ambassador/#rejecting-client-requests-with-escaped-slashes
type: security type: security
# Don't go any further back than 1.13.4. # Don't go any further back than 1.13.4.

2
go.mod
View File

@ -106,6 +106,7 @@ require (
github.com/Masterminds/sprig v2.22.0+incompatible github.com/Masterminds/sprig v2.22.0+incompatible
github.com/cenkalti/backoff/v4 v4.3.0 github.com/cenkalti/backoff/v4 v4.3.0
github.com/census-instrumentation/opencensus-proto v0.4.1 github.com/census-instrumentation/opencensus-proto v0.4.1
github.com/cespare/xxhash/v2 v2.3.0
github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42
github.com/datawire/dlib v1.3.1 github.com/datawire/dlib v1.3.1
github.com/datawire/dtest v0.0.0-20210928162311-722b199c4c2f github.com/datawire/dtest v0.0.0-20210928162311-722b199c4c2f
@ -170,7 +171,6 @@ require (
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chai2010/gettext-go v1.0.3 // indirect github.com/chai2010/gettext-go v1.0.3 // indirect
github.com/cloudflare/circl v1.6.0 // indirect github.com/cloudflare/circl v1.6.0 // indirect
github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // indirect

View File

@ -3,12 +3,12 @@ package ambex
import ( import (
// standard library // standard library
"context" "context"
"crypto/md5"
"encoding/hex"
"encoding/json" "encoding/json"
"fmt" "fmt"
"strconv"
// third-party libraries // third-party libraries
"github.com/cespare/xxhash/v2"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/anypb"
@ -146,9 +146,12 @@ func V3ListenerToRdsListener(lnr *v3listener.Listener) (*v3listener.Listener, []
// associated with a given listener. // associated with a given listener.
filterChainMatch, _ := json.Marshal(fc.GetFilterChainMatch()) filterChainMatch, _ := json.Marshal(fc.GetFilterChainMatch())
// Use MD5 because it's decently fast and cryptographic security isn't needed. // Use xxhash64 because it's decently fast and cryptographic security isn't needed.
matchHash := md5.Sum(filterChainMatch) h := xxhash.New()
matchKey := hex.EncodeToString(matchHash[:]) if _, err := h.Write(filterChainMatch); err != nil {
return nil, nil, fmt.Errorf("xxhash write error: %w", err)
}
matchKey := strconv.FormatUint(h.Sum64(), 16)
rc.Name = fmt.Sprintf("%s-routeconfig-%s-%d", l.Name, matchKey, matchKeyIndex[matchKey]) rc.Name = fmt.Sprintf("%s-routeconfig-%s-%d", l.Name, matchKey, matchKeyIndex[matchKey])

View File

@ -78,7 +78,7 @@ func TestV3ListenerToRdsListener(t *testing.T) {
for i, rc := range routes { for i, rc := range routes {
// Confirm that the route name was transformed to the hashed version // Confirm that the route name was transformed to the hashed version
assert.Equal(t, fmt.Sprintf("emissary-ingress-listener-8080-routeconfig-8c82e45fa3f94ab4e879543e0a1a30ac-%d", i), rc.GetName()) assert.Equal(t, fmt.Sprintf("emissary-ingress-listener-8080-routeconfig-29865f40cbcf32dc-%d", i), rc.GetName())
// Make sure the virtual hosts are unmodified // Make sure the virtual hosts are unmodified
virtualHosts := rc.GetVirtualHosts() virtualHosts := rc.GetVirtualHosts()

View File

@ -316,6 +316,8 @@ end
if auth_info["name"] == "envoy.filters.http.ext_authz": if auth_info["name"] == "envoy.filters.http.ext_authz":
auth_info["typed_config"]["clear_route_cache"] = True auth_info["typed_config"]["clear_route_cache"] = True
auth_info["typed_config"]["include_peer_certificate"] = True
auth_info["typed_config"]["include_tls_session"] = True
if body_info: if body_info:
auth_info["typed_config"]["with_request_body"] = body_info auth_info["typed_config"]["with_request_body"] = body_info

View File

@ -4,6 +4,7 @@ httpretty
mypy mypy
packaging packaging
pexpect pexpect
pip-tools
pyOpenSSL pyOpenSSL
pytest==6.2.5 pytest==6.2.5
pytest-cov pytest-cov

View File

@ -4,59 +4,59 @@
# #
# pip-compile --allow-unsafe # pip-compile --allow-unsafe
# #
blinker==1.8.2 blinker==1.9.0
# via flask # via flask
certifi==2024.2.2 certifi==2025.1.31
# via requests # via requests
charset-normalizer==3.3.2 charset-normalizer==3.4.1
# via requests # via requests
click==8.1.7 click==8.1.8
# via # via
# -r requirements.in # -r requirements.in
# flask # flask
durationpy==0.6 durationpy==0.9
# via -r requirements.in # via -r requirements.in
expiringdict==1.2.2 expiringdict==1.2.2
# via -r requirements.in # via -r requirements.in
flask==3.0.3 flask==3.1.0
# via -r requirements.in # via -r requirements.in
gunicorn==22.0.0 gunicorn==23.0.0
# via -r requirements.in # via -r requirements.in
idna==3.7 idna==3.10
# via requests # via requests
itsdangerous==2.2.0 itsdangerous==2.2.0
# via flask # via flask
jinja2==3.1.4 jinja2==3.1.6
# via flask # via flask
jsonpatch==1.33 jsonpatch==1.33
# via -r requirements.in # via -r requirements.in
jsonpointer==2.4 jsonpointer==3.0.0
# via jsonpatch # via jsonpatch
markupsafe==2.1.5 markupsafe==3.0.2
# via # via
# jinja2 # jinja2
# werkzeug # werkzeug
orjson==3.10.3 orjson==3.10.15
# via -r requirements.in # via -r requirements.in
packaging==24.0 packaging==24.2
# via gunicorn # via gunicorn
prometheus-client==0.20.0 prometheus-client==0.21.1
# via -r requirements.in # via -r requirements.in
python-json-logger==2.0.7 python-json-logger==3.2.1
# via -r requirements.in # via -r requirements.in
pyyaml==6.0.1 pyyaml==6.0.2
# via -r requirements.in # via -r requirements.in
requests==2.31.0 requests==2.32.3
# via -r requirements.in # via -r requirements.in
semantic-version==2.10.0 semantic-version==2.10.0
# via -r requirements.in # via -r requirements.in
typing-extensions==4.11.0 typing-extensions==4.12.2
# via -r requirements.in # via -r requirements.in
urllib3==2.2.1 urllib3==2.3.0
# via requests # via requests
werkzeug==3.0.3 werkzeug==3.1.3
# via flask # via flask
# The following packages are considered to be unsafe in a requirements file: # The following packages are considered to be unsafe in a requirements file:
setuptools==69.5.1 setuptools==75.8.2
# via -r requirements.in # via -r requirements.in

View File

@ -33,56 +33,37 @@ func parseLicenses(name, version, license string) map[License]struct{} {
// of the BSD license is it?). We pin the exact versions so // of the BSD license is it?). We pin the exact versions so
// that a human has to go make sure that the license didn't // that a human has to go make sure that the license didn't
// change when upgrading. // change when upgrading.
{"blinker", "1.8.2", ""}: {MIT}, {"blinker", "1.9.0", ""}: {MIT},
{"build", "1.2.2.post1", ""}: {MIT}, {"build", "1.2.2.post1", ""}: {MIT},
{"CacheControl", "0.12.6", "UNKNOWN"}: {Apache2}, {"CacheControl", "0.12.6", "UNKNOWN"}: {Apache2},
{"CacheControl", "0.12.10", "UNKNOWN"}: {Apache2}, {"Flask", "3.1.0", ""}: {BSD3},
{"Click", "7.0", "BSD"}: {BSD3}, {"GitPython", "3.1.44", "UNKNOWN"}: {BSD3},
{"Flask", "3.0.3", ""}: {BSD3}, {"Jinja2", "3.1.6", ""}: {BSD3},
{"GitPython", "3.1.11", "UNKNOWN"}: {BSD3}, {"MarkupSafe", "3.0.2", "Copyright 2010 Pallets"}: {BSD2},
{"Jinja2", "3.1.4", ""}: {BSD3}, {"click", "8.1.8", ""}: {BSD3},
{"colorama", "0.4.3", "BSD"}: {BSD3}, {"decorator", "5.2.1", "new BSD License"}: {BSD2},
{"colorama", "0.4.4", "BSD"}: {BSD3}, {"gitdb", "4.0.12", "BSD License"}: {BSD3},
{"decorator", "4.4.2", "new BSD License"}: {BSD2}, {"gunicorn", "23.0.0", "None"}: {MIT},
{"gitdb", "4.0.5", "BSD License"}: {BSD3}, {"idna", "3.10", ""}: {BSD3},
{"idna", "3.7", ""}: {BSD3}, {"itsdangerous", "2.2.0", ""}: {BSD3},
{"importlib-metadata", "5.1.0", "None"}: {Apache2}, {"jsonpatch", "1.33", "Modified BSD License"}: {BSD3},
{"importlib-resources", "5.4.0", "UNKNOWN"}: {Apache2}, {"jsonpointer", "3.0.0", "Modified BSD License"}: {BSD3},
{"itsdangerous", "2.2.0", ""}: {BSD3}, {"pip-tools", "7.3.0", "BSD"}: {BSD3},
{"jsonpatch", "1.33", "Modified BSD License"}: {BSD3}, {"ptyprocess", "0.7.0", "UNKNOWN"}: {ISC},
{"jsonpointer", "2.4", "Modified BSD License"}: {BSD3}, {"pycparser", "2.22", "BSD"}: {BSD3},
{"jsonschema", "3.2.0", "UNKNOWN"}: {MIT}, {"pyparsing", "3.0.9", ""}: {MIT},
{"lockfile", "0.12.2", "UNKNOWN"}: {MIT}, {"pyproject_hooks", "1.2.0", ""}: {MIT},
{"oauthlib", "3.1.0", "BSD"}: {BSD3}, {"python-json-logger", "3.2.1", "BSD-2-Clause License"}: {BSD2},
{"oauthlib", "3.2.2", "BSD"}: {BSD3}, {"semantic-version", "2.10.0", "BSD"}: {BSD2},
{"pep517", "0.13.0", ""}: {MIT}, {"smmap", "5.0.2", "BSD"}: {BSD3},
{"pip-tools", "7.3.0", "BSD"}: {BSD3}, {"typing_extensions", "4.12.2", ""}: {PSF},
{"ptyprocess", "0.6.0", "UNKNOWN"}: {ISC}, {"urllib3", "2.3.0", ""}: {MIT},
{"pyasn1", "0.5.0", "BSD"}: {BSD2}, {"Werkzeug", "3.1.3", ""}: {BSD3},
{"pyasn1-modules", "0.3.0", "BSD"}: {BSD2},
{"pycparser", "2.20", "BSD"}: {BSD3},
{"pyparsing", "3.0.9", ""}: {MIT},
{"pyproject_hooks", "1.2.0", ""}: {MIT},
{"python-dateutil", "2.8.1", "Dual License"}: {BSD3, Apache2},
{"python-dateutil", "2.8.2", "Dual License"}: {BSD3, Apache2},
{"python-json-logger", "2.0.7", "BSD"}: {BSD2},
{"semantic-version", "2.10.0", "BSD"}: {BSD2},
{"smmap", "3.0.4", "BSD"}: {BSD3},
{"tomli", "2.0.1", ""}: {MIT},
{"typing_extensions", "4.11.0", ""}: {PSF},
{"urllib3", "2.2.1", ""}: {MIT},
{"webencodings", "0.5.1", "BSD"}: {BSD3},
{"websocket-client", "0.57.0", "BSD"}: {BSD3},
{"websocket-client", "1.2.3", "Apache-2.0"}: {Apache2},
{"Werkzeug", "3.0.3", ""}: {BSD3},
{"zipp", "3.11.0", "None"}: {MIT},
{"gunicorn", "22.0.0", "None"}: {MIT},
// These are packages with non-trivial strings to parse, and // These are packages with non-trivial strings to parse, and
// it's easier to just hard-code it. // it's easier to just hard-code it.
{"orjson", "3.10.3", "Apache-2.0 OR MIT"}: {Apache2, MIT}, {"orjson", "3.10.15", "Apache-2.0 OR MIT"}: {Apache2, MIT},
{"packaging", "23.1", ""}: {BSD2, Apache2}, {"packaging", "23.1", ""}: {BSD2, Apache2},
{"packaging", "24.0", ""}: {BSD2, Apache2},
}[tuple{name, version, license}] }[tuple{name, version, license}]
if ok { if ok {
ret := make(map[License]struct{}, len(override)) ret := make(map[License]struct{}, len(override))