-
Notifications
You must be signed in to change notification settings - Fork 99
Expand file tree
/
Copy pathreleaseNotes.yml
More file actions
1959 lines (1698 loc) · 112 KB
/
releaseNotes.yml
File metadata and controls
1959 lines (1698 loc) · 112 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# -*- fill-column: 100 -*-
# This file should be placed in the folder for the version of the
# product that's meant to be documented. A `/release-notes` page will
# be automatically generated and populated at build time.
#
# Note that an entry needs to be added to the `doc-links.yml` file in
# order to surface the release notes in the table of contents.
#
# The YAML in this file should contain:
#
# changelog: An (optional) URL to the CHANGELOG for the product.
# items: An array of releases with the following attributes:
# - version: The (optional) version number of the release, if applicable.
# - date: The date of the release in the format YYYY-MM-DD.
# - notes: An array of noteworthy changes included in the release, each having the following attributes:
# - type: The type of change, one of `bugfix`, `feature`, `security` or `change`.
# - title: A short title of the noteworthy change.
# - body: >-
# Two or three sentences describing the change and why it
# is noteworthy. This is HTML, not plain text or
# markdown. It is handy to use YAML's ">-" feature to
# allow line-wrapping.
# - image: >-
# The URL of an image that visually represents the
# noteworthy change. This path is relative to the
# `release-notes` directory; if this file is
# `FOO/releaseNotes.yml`, then the image paths are
# relative to `FOO/release-notes/`.
# - docs: The path to the documentation page where additional information can be found.
# - href: A path from the root to a resource on the getambassador website, takes precedence over a docs link.
changelog: https://github.com/datawire/edge-stack/blob/$branch$/CHANGELOG.md
items:
- version: 3.8.2
date: '2023-10-11'
notes:
- title: Upgrade Envoy
type: security
body: >-
This release includes security patches to the current Envoy proxy version to address CVE 2023-44487 and includes a fix to determine if a client is making too many requests with premature resets. The connection is disconnected if more than 50 percent of resets are considered premature. Another fix is also included which exposes a runtime setting to control the limit on the number of HTTP requests processed from a single connection in a single I/O cycle to mitigate CPU starvation.
docs: topics/running/running/
- title: Upgrade Golang to 1.20.10
type: security
body: >-
Upgrading to the latest release of Golang as part of our general dependency upgrade process. This update resolves CVE-2023-39323 and CVE-2023-39325.
docs: https://go.dev/doc/devel/release#go1.20.minor
- version: 3.8.1
date: '2023-09-18'
notes:
- title: Upgrade Golang to 1.20.8
type: security
body: >-
Upgrading to the latest release of Golang as part of our general dependency upgrade process. This includes security fixes for CVE-2023-39318, CVE-2023-39319.
docs: https://go.dev/doc/devel/release#go1.20.minor
- version: 3.8.0
date: '2023-08-29'
notes:
- title: Ambassador Edge Stack will fail to run if a valid license is not present
type: change
body: >-
$productName$ will now require a valid non-expired license to run the product. If a valid license is not present or your clusters are not connected to and showing licensed in Ambassador Cloud, then $productName$ will refuse to startup. If you already have an enterprise license then you do not need to do anything so long as it is properly applied and not expired. Please view the <a href="/docs/edge-stack/latest/topics/using/licenses">license documentation</a> page for more information on your license.
If you do not have an enterprise license for $productName$ then you can visit <a href="https://www.getambassador.io/docs/edge-stack/latest/tutorials/getting-started">the quickstart guide</a> to get setup with a free community license by signing into Ambassador Cloud and connecting your installation.
docs: tutorials/getting-started/
- title: Account for matchLabels when associating mappings with the same prefix to different Hosts
type: bugfix
body: >-
As of v2.2.2, if two mappings were associated with different Hosts through host
<code>mappingSelector</code> labels but share the same prefix, the labels were not taken into
account which would cause one Mapping to be correctly routed but the other not.
This change fixes this issue so that Mappings sharing the same prefix but associated
with different Hosts will be correctly routed.
docs: https://github.com/emissary-ingress/emissary/issues/4170
- title: Duplication of values when using multiple Headers/QueryParameters in Mappings
type: bugfix
body: >-
In previous versions, if multiple Headers/QueryParameters were used in a <code>v3alpha1</code> mapping,
these values would duplicate and cause all the Headers/QueryParameters to have the same value.
This is no longer the case and the expected values for unique Headers/QueryParameters will apply.
This issue was only present in <code>v3alpha1</code> Mappings. For users who may have this issue, please
be sure to re-apply any <code>v3alpha1</code> Mappings in order to update the stored <code>v2</code> Mapping and resolve the
issue.
docs: topics/using/headers/headers
- title: Ambassador Agent no longer collects Envoy metrics
type: change
body: >-
When the Ambassador agent is being used, it will no longer attempt to collect and report Envoy metrics.
In previous versions, $productName$ would always create an Envoy stats sink for the agent as long as the AMBASSADOR_GRPC_METRICS_SINK
environment variable was provided. This environment variable was hardcoded on the release manifests and has now been removed
and an Envoy stats sink for the agent is no longer created.
docs: topics/running/environment#ambassador_grpc_metrics_sink
- version: 3.7.2
date: '2023-07-25'
notes:
- title: Upgrade to Envoy 1.26.4
type: security
body: >-
This upgrades $productName$ to be built on Envoy v1.26.4 which includes a fixes for CVE-2023-35942, CVE-2023-35943, CVE-2023-35944.
docs: https://www.envoyproxy.io/docs/envoy/v1.26.1/version_history/v1.26/v1.26
- title: Shipped Helm chart v8.7.2
type: change
body: >-
- Update default image to $productName$ v3.7.2. <br/>
docs: https://github.com/datawire/edge-stack/blob/rel/v3.7.2/charts/edge-stack/CHANGELOG.md
- version: 3.7.1
date: '2023-07-13'
notes:
- title: Upgrade to Envoy 1.26.3
type: security
body: >-
This upgrades $productName$ to be built on Envoy v1.26.3 which includes a fix for <a href="https://github.com/envoyproxy/envoy/security/advisories/GHSA-jfxv-29pc-x22r">CVE-2023-35945</a>.
docs: https://www.envoyproxy.io/docs/envoy/v1.26.1/version_history/v1.26/v1.26
- version: 3.7.0
date: '2023-06-20'
notes:
- title: Configurable Web Application Firewalls
type: feature
body: >-
$productName$ now provides configurable Web Application Firewalls (WAFs) that can be used to add additional security to your services by blocking dangerous requests. They can be configured globally or route by route. We have also published a ready to use set of rules to get you started and protected against the OWASP Top 10
vulnerabilities and adheres to PCI 6.6 requirements.
The published rule set will be updated and maintained regularly.
docs: howtos/web-application-firewalls/
- title: Upgrade to Envoy 1.26.1
type: feature
body: >-
This upgrades $productName$ to be built on Envoy v1.26.1 which provides security, performance and feature enhancements. You can read more about them here: <a href="https://www.envoyproxy.io/docs/envoy/v1.26.1/version_history/v1.26/v1.26">Envoy Proxy 1.26.1 Release Notes</a>
docs: https://www.envoyproxy.io/docs/envoy/v1.26.1/version_history/v1.26/v1.26
- title: ExternalFilter - Add support for configuring TLS Settings
type: feature
body: >-
The <code>ExternalFilter</code> now supports configuring a CA certificate and/or client certificate via the new <code>tlsConfig</code> attribute. This allows $productName$ to communicate with the configured AuthService using custom TLS certificates signed by a different CA. It also allows the ExternalFilter to originate mTLS and have $productName$ present mTLS client certificates to the AuthService. Custom TLS certificates are provided as Kubernetes Secrets.
docs: topics/using/filters/external/#configuring-tls-settings
- version: 3.6.0
date: '2023-04-17'
notes:
- title: Deprecation of insteadOfRedirect.filters argument in FilterPolicy
type: change
body: >-
The <code> insteadOfRedirect.filters </code> field within the OAuth2 path-specific arguments has been deprecated and it will be fully removed in a future version of $productName$. Similiar behavior can
be accomplished using <code>onDeny=continue</code> and chaining a
fallback Filter to run.
docs: topics/using/filters/oauth2#oauth2-path-specific-arguments
- title: Upgrade to Envoy 1.25.4
type: feature
body: >-
This upgrades $productName$ to be built on Envoy v1.25.4 which provides security, performance and feature enhancements. You can read more about them here: <a href="https://www.envoyproxy.io/docs/envoy/v1.25.4/version_history/v1.25/v1.25">Envoy Proxy 1.25.4 Release Notes</a>
docs: https://www.envoyproxy.io/docs/envoy/v1.25.4/version_history/v1.25/v1.25
- title: Shipped Helm chart v8.6.0
type: change
body: >-
- Update default image to $productName$ v3.6.0. <br/>
- Add support for setting <code>nodeSelector</code>, <code>tolerations</code> and <code>affinity</code> on the Ambassador Agent. Thanks to <a href="https://github.com/ppanyukov">Philip Panyukov</a>. <br/>
- Use autoscaling API version based on Kubernetes version. Thanks to <a href="https://github.com/eevdev">Elvind Valderhaug</a>. <br/>
- Upgrade <code>KubernetesEndpointResolver</code> & <code>ConsulResolver</code> apiVersions to <code>getambassador.io/v3alpha1</code>
docs: https://github.com/emissary-ingress/emissary/blob/master/charts/emissary-ingress/CHANGELOG.md
- version: 3.5.2
date: '2023-04-05'
notes:
- title: Upgrade to Envoy 1.24.5
type: security
body: >-
This upgrades $productName$ to be built on Envoy v1.24.5. This update includes various security patches including CVE-2023-27487, CVE-2023-27491, CVE-2023-27492, CVE-2023-27493, CVE-2023-27488, and CVE-2023-27496. It also contains the dependency update for c-ares which was patched on top.<br/><br/>
One notable item is that upstream header names and values are now validated according to RFC 7230, section 3.2. Users utilizing external filters should check whether their external service is forwarding headers containing forbidden characters
- title: Upgrade to Golang 1.20.3
type: security
body: >-
Upgrading to the latest release of Golang as part of our general dependency upgrade process. This includes security fixes for CVE-2023-24537, CVE-2023-24538, CVE-2023-24534, CVE-2023-24536.
- version: 3.5.1
date: '2023-02-24'
notes:
- title: Fix regression with ExternalFilter parsing port incorrectly
type: bugfix
body: >-
A regression with parsing the <code>authService</code> field of the ExternalFilter has been fixed. This would cause the ExternalFilter to fail without sending a request to the service causing a 403 response.
- title: Shipped Helm chart v8.5.1
type: bugfix
body: >-
Fix regression where the <code>Module</code> resource fails validation when setting the <code>ambassador_id</code> after upgrading to <code>getambassador.io/v3alpha1</code>.<br/><br/>
Thanks to <a href="https://github.com/pie-r">Pier</a>.
docs: https://github.com/datawire/edge-stack
- version: 3.5.0
date: '2023-02-15'
notes:
- title: Upgraded to golang 1.20.1
type: security
body: >-
Upgraded to the latest release of Golang as part of our general dependency upgrade process. This includes
security fixes for CVE-2022-41725, CVE-2022-41723.
- title: TracingService support for native OpenTelemetry driver
type: feature
body: >-
In Envoy 1.24, experimental support for a native OpenTelemetry tracing driver was introduced that allows exporting spans in the otlp format. Many observability platforms accept that format and is the recommended replacement for the LightStep driver. $productName$ now supports setting the <code>TracingService.spec.driver=opentelemetry</code> to export traces in the otlp format.<br/><br/>
Thanks to <a href="https://github.com/psalaberria002">Paul</a> for helping us get this tested and over the finish line!
- title: Switch to a non-blocking readiness check
type: feature
body: >-
The <code>/ready</code> endpoint used by $productName$ was using the Envoy admin port (8001 by default).This generates a problem during config reloads with large configs as the admin thread is blocking so the /ready endpoint can be very slow to answer (in the order of several seconds, even more).<br/><br/>
$productName$ will now use a specific envoy listener that can answer /ready calls from an Envoy worker thread so the endpoint is always fast and it does not suffer from single threaded admin thread slowness on config reloads and other slow endpoints handled by the admin thread.<br/><br/>
Configure the listener port using <code>AMBASSADOR_READY_PORT</code> and enable access log using <code>AMBASSADOR_READY_LOG</code> environment variables.
docs: https://www.getambassador.io/docs/edge-stack/latest/topics/running/environment/
- title: Fix envoy config generated when including port in Host.hostname
type: bugfix
body: >-
When wanting to expose traffic to clients on ports other than 80/443, users will set a port in the Host.hostname (eg.<code>Host.hostname=example.com:8500</code>). The config generated allowed matching on the :authority header. This worked in v1.Y series due to the way $productName$ was generating Envoy configuration under a single wild-card virtual_host and matching on :authority.<br/><br/>
In v2.Y/v3.Y+, the way $productName$ generates Envoy configuration changed to address memory pressure and improve route lookup speed in Envoy. However, when including a port in the hostname, an incorrect configuration was generated with an sni match including the port. This caused incoming request to never match causing a 404 Not Found.This has been fixed and the correct envoy configuration is
being generated which restores existing behavior.
- title: Fix GRPC TLS support with ExternalFilter
type: bugfix
body: >-
Configuring an <code>ExternalFilter</code> to communicate using gRPC with TLS would fail due to $productName$ trying to connect via cleartext. This has been fixed so that setting <code>ExternalFilter.spec.tls=true</code> $productName$ will talk to the external filter using TLS. <br/><br/>
If using self-signed certs see <a href="https://www.getambassador.io/docs/edge-stack/latest/topics/using/filters#installing-self-signed-certificates">installing self-signed certificates</a> on how to include it into the $productName$ deployment.
- title: Add support for resolving port names in Ingress resource
type: change
body: >-
Previously, specifying backend ports by name in Ingress was not supported and would result in defaulting to port 80. This allows $productName$ to now resolve port names for backend services. If the port number cannot be resolved by the name (e.g named port in the Service doesn't exist) then it will continue to default back
to port 80. <br/><br/>
Thanks to <a href="https://github.com/antonu17">Anton Ustyuzhanin</a>!.
github:
- title: '#4809'
link: https://github.com/emissary-ingress/emissary/pull/4809
- title: Upgraded to Python 3.10
type: change
body: >-
Upgraded to Python 3.10 as part of continued investment in keeping dependencies updated.
- title: Upgraded base image to alpine-3.17
type: change
body: >-
Upgraded base image to alpine-3.17 as part of continued investment in keeping dependencies updated.
- title: Shipped Helm chart v8.5.0
type: change
body: >-
- Update default image to $productName$ v3.5.0.<br/>
- Add support for configuring <code>startupProbes</code> on the $productName$ deployment.<br/>
- Allow setting pod and container security settings on the Ambassador Agent.<br/>
- Added new securityContext fields to the Redis and Agent helm charts, allowing users to further manage privilege and access control settings which can be used for tools such as PodSecurityPolicy.<br/>
- Added deprecation notice in the values.yaml file for <code>podSecurityPolicy</code> value because support has been removed in Kubernetes 1.25.
docs: https://github.com/datawire/edge-stack
- version: 3.4.1
date: '2023-02-07'
notes:
- title: Upgrade to Envoy 1.24.2
type: security
body: >-
This upgrades $productName$ to be built on Envoy v1.24.2. This update addresses the folowing notable items:<br/><br/>
- Updates boringssl to address High CVE-2023-0286<br/>
- Updates c-ares dependency to address issue with cname wildcard dns resolution for upstream clusters<br/><br/>
Users that are using $productName$ with Certificate Revocation List and allow external users to provide input should upgrade to ensure they are not vulnerable to CVE-2023-0286.
- version: 3.4.0
date: '2023-01-03'
notes:
- title: Upgrade to Envoy 1.24.1
type: feature
body: >-
This upgrades $productName$ to be built on Envoy v1.24.1. Two notable changes were introduced:<br/><br/>
First, the team at LightStep and the Envoy Maintainers have decided to no longer support the native <b>LightStep</b> tracing driver in favor of using the Open Telemetry driver. The code for the native Enovy LightStep driver has been removed from the Envoy code base. This means $productName$ will no longer support LightStep in the <code>TracingService</code>. The recommended upgrade path is to leverage a supported Tracing driver such as <code>Zipkin</code> and use the <a href="https://opentelemetry.io/docs/collector/">Open Telemetry Collector</a> to collect and forward Observabity data to LightStep. A guide for this can be found here: <a href="howtos/tracing-lightstep/">Distributed Tracing with Open Telemetry and LightStep</a>.<br/><br/>
Second, a bug was fixed in Envoy 1.24 that changes how the upstream clusters distributed tracing <code>span</code> is named. Prior to Envoy 1.24 it would always set the span name to the <code>cluster.name</code>. The expected behavior from Envoy was that if provided an <code>alt_stat_name</code> then use it else fallback to <code>cluster.name</code>.
docs: https://www.envoyproxy.io/docs/envoy/latest/version_history/v1.24/v1.24
- title: Re-add support for getambassador.io/v1
type: feature
body: >-
Support for the <code>getambassador.io/v1</code> apiVersion has been re-introduced, in order to facilitate smoother migrations from $productName$ 1.y. Previously, in order to make migrations possible, an "unserved" <code>v1</code> version was declared to Kubernetes, but was unsupported by $productName$. That unserved <code>v1</code> could
cause an excess of errors to be logged by the Kubernetes Nodes (regardless of whether the installation was migrated from 1.y or was a fresh 2.y install).
It is still recommeded that `v3alpha1` be used but fully supporting <code>v1</code> again should resolve these errors.
docs: https://github.com/emissary-ingress/emissary/pull/4055
- title: Add support for active health checking configuration.
type: feature
body: >-
It is now possible to configure active healhchecking for upstreams within a <code>Mapping</code>. If the upstream fails its configured health check then Envoy will mark the upstream as unhealthy and no longer send traffic to that upstream. Single pods within a group may can be marked as unhealthy. The healthy pods will continue to receive
traffic normally while the unhealthy pods will not receive any traffic until they recover by passing the health check.
docs: howtos/active-health-checking/
- title: Add environment variables to the healthcheck server.
type: feature
body: >-
The healthcheck server's bind address, bind port and IP family can now be configured using environment variables:<br/><br/>
<code>AMBASSADOR_HEALTHCHECK_BIND_ADDRESS</code>: The address to bind the healthcheck server to.<br/><br/>
<code>AMBASSADOR_HEALTHCHECK_BIND_PORT</code>: The port to bind the healthcheck server to.<br/><br/>
<code>AMBASSADOR_HEALTHCHECK_IP_FAMILY</code>: The IP family to use for the healthcheck server.<br/><br/>
This allows the healthcheck server to be configured to use IPv6-only k8s environments. (Thanks to <a href="https://github.com/TimonOmsk">Dmitry Golushko</a>!).
- title: Added metrics for External Filters to the /metrics endpoint
type: feature
body: >-
$productName$ now tracks metrics for External Filters which includes responses approved/denied, the response codes returned as well as configuration and connection errors.
docs: topics/using/filters/external/#metrics
- title: Allow setting the OAuth2 client's session max idle time
type: feature
body: >-
When using the OAuth2 Filter, $productName$ creates a new session when submitting requests to the upstream backend server and sets a cookie containing the sessionID. This session has a limited lifetime before it expires or is extended, prompting the user to log back in.
This session idle length can now be controlled under a new field in the OAuth2 Filter, <code>clientSessionMaxIdle</code>, which controls how long the session will be active without activity before it is expired.
docs: topics/using/filters/oauth2
- title: Updated redis client to improve performance with Redis
type: change
body: >-
We have updated the client library used to communicate with Redis. The new client provides support for better connection handling and sharing and improved overall performance. As part of our update to
the new driver we reduced chattiness with Redis by taking advantage
of Pipelinig and Scripting features of Redis.
This means the <code>AES_REDIS_EXPERIMENTAL_DRIVER_ENABLED</code> flag is now a no-op and can be safely removed.
- title: Adopt stand alone Ambassador Agent
type: change
body: >-
Previously, the Agent used for communicating with Ambassador Cloud was bundled into $productName$. This tied it to the same release schedule as $productName$ and made it difficult to iterate on its feature set. It has now been extracted into its own repository and has its own release process and schedule.
docs: https://github.com/datawire/ambassador-agent
- title: Fix Filters not properly caching large jwks responses
type: bugfix
body: >-
In some cases, a <code>Filter</code> would fail to properly cache the response from the jwks endpoint due to the response being too large to cache. This would hurt performance and cause $productName$ to be rate-limited by the iDP. This has been fixed to accomodate iDP's that are configured to support multiple key sets thus returning a response that is larger than the typical default response from most iDP's.
- version: 3.3.1
date: '2022-12-08'
notes:
- title: Update Golang to 1.19.4
type: security
body: >-
Updated Golang to latest 1.19.4 patch release which contained two CVEs: CVE-2022-41720, CVE-2022-41717.
CVE-2022-41720 only affects Windows and $productName$ only ships on Linux. CVE-2022-41717 affects HTTP/2 servers that are exposed to external clients. By default, $productName$ exposes the endpoints for DevPortal, Authentication Service, and RateLimitService via Envoy. Envoy enforces a limit on request header size which mitigates the vulnerability.
- version: 3.3.0
date: '2022-11-02'
notes:
- title: Update Golang to 1.19.2
type: security
body: >-
Updated Golang to 1.19.2 to address the CVEs: CVE-2022-2879, CVE-2022-2880, CVE-2022-41715.
- title: Update golang.org/x/net
type: security
body: >-
Updated golang.org/x/net to address the CVE: CVE-2022-27664.
- title: Update golang.org/x/text
type: security
body: >-
Updated golang.org/x/text to address the CVE: CVE-2022-32149.
- title: Update JWT library
type: security
body: >-
Updated our JWT library from https://github.com/dgrijalva/jwt-go to https://github.com/golang-jwt/jwt in order to address spurious complaints about CVE-2020-26160. Edge Stack has never been affected by CVE-2020-26160.
- title: Fix regression in http to https redirects with AuthService
type: bugfix
body: >-
By default $productName$ adds routes for http to https redirection. When
an AuthService is applied in v2.Y of $productName$, Envoy would skip the
ext_authz call for non-tls http request and would perform the https
redirect. In Envoy 1.20+ the behavior has changed where Envoy will
always call the ext_authz filter and must be disabled on a per route
basis.
This new behavior change introduced a regression in v3.0 of
$productName$ when it was upgraded to Envoy 1.22. The http to https
redirection no longer works when an AuthService was applied. This fix
restores the previous behavior by disabling the ext_authz call on the
https redirect routes.
github:
- title: '#4620'
link: https://github.com/emissary-ingress/emissary/issues/4620
- title: Fix regression in host_redirects with AuthService
type: bugfix
body: >-
When an AuthService is applied in v2.Y of $productName$,
Envoy would skip the ext_authz call for all redirect routes and
would perform the redirect. In Envoy 1.20+ the behavior has changed
where Envoy will always call the ext_authz filter so it must be
disabled on a per route basis.
This new behavior change introduced a regression in v3.0 of
$productName$ when it was upgraded to Envoy 1.22. The host_redirect
would call an AuthService prior to redirect if applied. This fix
restores the previous behavior by disabling the ext_authz call on the
host_redirect routes.
github:
- title: '#4640'
link: https://github.com/emissary-ingress/emissary/issues/4640
- title: Propagate trace headers to http external filter
type: change
body: >-
Previously, tracing headers were not propagated to an ExternalFilter configured with <code>proto: http</code>. Now, adding supported tracing headers (b3, etc...) to the <code>spec.allowed_request_headers</code> will propagate them to the configured service.
docs: topics/using/filters/external/#tracing-header-propagation
github:
- title: '#3078'
link: https://github.com/datawire/apro/issues/3078
- version: 3.2.0
date: '2022-09-27'
notes:
- title: Update Golang to 1.19.1
type: security
body: >-
Updated Golang to 1.19.1 to address the CVEs: CVE-2022-27664, CVE-2022-32190.
- title: Add Post Logout Redirect URI support for Oauth2 Filter
type: feature
body: >-
You may now define (on supported IDPs) a <code>postLogoutRedirectURI</code> to your <code>Oauth2</code> filter.
This will allow you to redirect to a specific URI upon logging out. However, in order to achieve this you must
define your IDP logout URL to <code>https:{{host}}/.ambassador/oauth2/post-logout-redirect</code>. Upon logout
$productName$ will redirect to the custom URI which will then redirect to the URI you have defined in <code>postLogoutRedirectURI</code>.
docs: topics/using/filters/oauth2
- title: Add support for Host resources using secrets from different namespaces
type: feature
body: >-
Previously the <code>Host</code> resource could only use secrets that are in the namespace as the
Host. The <code>tlsSecret</code> field in the Host has a new subfield <code>namespace</code> that will allow
the use of secrets from different namespaces.
docs: topics/running/tls/#bring-your-own-certificate
- title: Allow bypassing of EDS for manual endpoint insertion
type: feature
body: >-
Set <code>AMBASSADOR_EDS_BYPASS</code> to <code>true</code> to bypass EDS handling of endpoints and have endpoints be
inserted to clusters manually. This can help resolve with <code>503 UH</code> caused by certification rotation relating to
a delay between EDS + CDS. The default is <code>false</code>.
docs: topics/running/environment/#ambassador_eds_bypass
- title: Add support for config change batch window before reconfiguring Envoy
type: feature
body: >-
The <code>AMBASSADOR_RECONFIG_MAX_DELAY</code> env var can be optionally set to batch changes for the specified
non-negative window period in seconds before doing an Envoy reconfiguration. Default is "1" if not set
- title: Allow setting custom_tags for traces
type: feature
body: >-
It is now possible to set <code>custom_tags</code> in the
<code>TracingService</code>. Trace tags can be set based on
literal values, environment variables, or request headers. The existing <code>tag_headers</code> field is now deperacated. If both <code>tag_headers</code> and <code>custom_tags</code> are set then <code>tag_headers</code> will be ignored.
(Thanks to <a href="https://github.com/psalaberria002">Paul</a>!)
docs: topics/running/services/tracing-service/
- title: Add failure_mode_deny option to the RateLimitService
type: feature
body: >-
By default, when Envoy is unable to communicate with the configured
RateLimitService then it will allow traffic through. The
<code>RateLimitService</code> resource now exposes the
<a href="https://www.envoyproxy.io/docs/envoy/v1.23.0/configuration/http/http_filters/rate_limit_filter">failure_mode_deny</a>
option. Set <code>failure_mode_deny: true</code>, then Envoy will
deny traffic when it is unable to communicate to the RateLimitService
returning a 500.
- title: Change to behavior for associating Hosts with Mappings and Listeners with Hosts
type: change
body: >-
Changes to label matching will change how <code>Hosts</code> are associated with <code>Mappings</code> and how <code>Listeners</code> are associated with <code>Hosts</code>. There was a bug with label
selectors that was causing resources that configure a <code>selector</code> to be incorrectly associated with more resources than intended.
If any single label from the selector was matched then the resources would be associated.
Now it has been updated to correctly only associate these resources if <b>all</b> labels required by
their selector are present. This brings the <code>mappingSelector</code>/<code>selector</code> fields in-line with how label selectors are used
in Kubernetes. To avoid unexpected behavior after the upgrade, add all labels that <code>Hosts</code>/<code>Listeners</code> have in their
<code>mappingSelector</code>/<code>selector</code> to <code>Mappings</code>/<code>Hosts</code> you want to associate with them. You can opt-out of the new behavior
by setting the environment variable <code>DISABLE_STRICT_LABEL_SELECTORS</code> to <code>"true"</code> (default: <code>"false"</code>).
(Thanks to <a href="https://github.com/f-herceg">Filip Herceg</a> and <a href="https://github.com/dynajoe">Joe Andaverde</a>!).
docs: topics/running/environment/#disable_strict_label_selectors
- title: Envoy upgraded to 1.23.0
type: change
body: >-
The envoy version included in $productName$ has been upgraded from 1.22 to that latest release of 1.23.0. This provides $productName$ with the latest security patches, performances enhancments,and features offered by the envoy proxy.
docs: https://www.envoyproxy.io/docs/envoy/latest/version_history/v1.23/v1.23.0
- title: Properly convert FilterPolicy and ExternalFilter between CRD versions
type: bugfix
body: >-
Previously, $productName$ would incorrectly include empty fields when converting a FilterPolicy or ExternalFilter between versions. This would cause undesired state to be persisted in k8s which would lead to validation issues when trying to kubectl apply the custom resource. This fixes these issues to ensure the correct data is being persisted and roundtripped properly between CRD versions.
- title: Correctly manage cluster names when service names are very long
type: bugfix
body: >-
Distinct services with names that are the same in the first forty characters will no longer be incorrectly mapped to the same cluster.
github:
- title: '#4354'
link: https://github.com/emissary-ingress/emissary/issues/4354
- title: Properly populate alt_stats_name for Tracing, Auth and RateLimit Services
type: bugfix
body: >-
Previously, setting the <code>stats_name</code> for the <code>TracingService</code>, <code>RateLimitService</code>
or the <code>AuthService</code> would have no affect because it was not being properly passed to the Envoy cluster
config. This has been fixed and the <code>alt_stats_name</code> field in the cluster config is now set correctly.
(Thanks to <a href="https://github.com/psalaberria002">Paul</a>!).
- title: Diagnostics stats properly handles parsing envoy metrics with colons
type: bugfix
body: >-
If a <code>Host</code> or <code>TLSContext</code> contained a hostname with a <code>:</code> when using the
diagnostics endpoints <code>ambassador/v0/diagd</code> then an error would be thrown due to the parsing logic not
being able to handle the extra colon. This has been fixed and $productName$ will not throw an error when parsing
envoy metrics for the diagnostics user interface.
- title: TCPMappings use correct SNI configuration
type: bugfix
body: >-
$productName$ 2.0.0 introduced a bug where a <code>TCPMapping</code> that uses SNI,
instead of using the hostname glob in the <code>TCPMapping</code>, uses the hostname glob
in the <code>Host</code> that the TLS termination configuration comes from.
- title: TCPMappings configure TLS termination without a Host resource
type: bugfix
body: >-
$productName$ 2.0.0 introduced a bug where a <code>TCPMapping</code> that terminates TLS
must have a corresponding <code>Host</code> that it can take the TLS configuration from.
This was semi-intentional, but didn't make much sense. You can now use a
<code>TLSContext</code> without a <code>Host</code>as in $productName$ 1.y releases, or a
<code>Host</code> with or without a <code>TLSContext</code> as in prior 2.y releases.
- title: TCPMappings and HTTP Hosts can coexist on Listeners that terminate TLS
type: bugfix
body: >-
Prior releases of $productName$ had the arbitrary limitation that a
<code>TCPMapping</code> cannot be used on the same port that HTTP is served on, even if
TLS+SNI would make this possible. $productName$ now allows <code>TCPMappings</code> to be
used on the same <code>Listener</code> port as HTTP <code>Hosts</code>, as long as that
<code>Listener</code> terminates TLS.
- version: 3.1.0
date: '2022-08-01'
notes:
- title: Add new Filter to support authenticating APIKey's
type: feature
body: >-
A new <code>Filter</code> has been added to support validating APIKey's on incoming requests.The new <code>APIKeyFilter</code> when applied with a <code>FilterPolicy</code> will check to
see if the incoming requests has a valid API Key in the request header. $productName$ uses Kubernetes <code>Secret</code>'s to lookup valid keys for authorizing requests.
docs: topics/using/filters/apikeys
- title: Add support to watch for secrets with APIKey's
type: feature
body: >-
Emissary-ingress has been taught to watch for APIKey secrets when $productName$ is running and
makes them available to be used with the new <code>APIKeyFilter</code>.
- title: A new experimental Redis driver for use with the OAuth2 Filter
type: feature
body: >-
A new opt-in feature flag has been added that allows $productName$ to use a new Redis driver when storing state between requests for the OAuth2 Filter. The new driver has better connection pool handling, shares connections and supports the Redis RESP3 protocol.
Set <code>AES_REDIS_EXPERIMENTAL_DRIVER_ENABLED=true</code> to enable the experimental feature. Most of the standard Redis configuration fields (e.g.<code>REDIS_*</code>) can be used with the driver.
However, due to the drivers better connection handling the new driver no longer supports setting <code>REDIS_SURGE_LIMIT_INTERVAL</code>, <code>REDIS_SURGE_LIMIT_AFTER</code>, <code>REDIS_SURGE_POOL_SIZE</code>, <code>REDIS_SURGE_POOL_DRAIN_INTERVAL</code> and these will be ignored.
Note: Other $productName$ features such as the <code>RateLimitService</code> will continue to use the current
Redis driver and in future releases we plan to roll out the new driver for those features as well.
- title: Add support for injecting a valid synthetic RateLimitService
type: change
body: >-
If $productName$ is running then Emissary-ingress ensures that only a single RateLimitService is active. If a user doesn't provide one or provides an invalid one then a synthetic RateLimitService will be
injected. If the <code>protocol_version</code> field is not set or set to an invalid value then it will automatically get upgraded <code>protocol_version: v3</code>.
This matches the existing behavior that was introduced in $productName$ v3.0.0 for the <code>AuthService</code>. For new installs a valid <code>RateLimitService</code> will be added but this
change ensures a smooth upgrade from $productName$ to v2.3.Z to v3.Y for users who use the manifest in a GitOps scenario.
- title: Add Agent support for OpenAPI 2 contracts
type: feature
body: >-
The agent is now able to parse api contracts using swagger 2, and to convert them to OpenAPI 3, making them available for use in the dev portal.
- title: Default YAML enables the diagnostics interface from non-local clients on the admin service port
type: change
body: >-
In the standard published <code>.yaml</code> files, the <code>Module</code> resource enables serving remote client requests to the <code>:8877/ambassador/v0/diag/</code> endpoint.The associated Helm chart release also now enables it by default.
- title: Add additional pprof endpoints
type: change
body: >-
Add pprof endpoints serving additional profiles including CPU profiles (<code>/debug/pprof/profile</code>) and tracing (<code>/debug/pprof/trace</code>). Also add additional endpoints serving the command line running (<code>/debug/pprof/cmdline</code>) and program counters (<code>/debug/pprof/symbol</code>) for the sake of completeness.
- title: Correct cookies for mixed HTTP/HTTPS OAuth2 origins
type: bugfix
body: >-
When an <code>OAuth2</code> filter sets cookies for a <code>protectedOrigin</code>, it should set a cookie's "Secure" flag to true for <code>https://</code> origins and false for <code>http://</code> origins. However, for filters with multiple origins, it set the cookie's flag based on the first origin listen in the Filter, rather than the origin that the cookie is actually for.
- title: Correctly handle refresh tokens for OAuth2 filters with multiple origins
type: bugfix
body: >-
When an <code>OAuth2</code> filter with multiple <code>protectedOrigins</code> needs to adjust the cookies for an active login (which only happens when using a refresh token), it
would erroneously redirect the web browser to the last origin listed, rather than returning to the original URL. This has been fixed.
- title: Correctly handle CORS and CORs preflight request within the OAuth2 Fitler known endpoints
type: bugfix
body: >-
Previously, the <code>OAuth2</code> filter's known endpoints <code>/.ambassador/oauth2/logout</code> and <code>/.ambassador/oauth2/multicookie</code> did not understand CORS or CORS preflight request
which would cause the browser to reject the request. This has now been fixed and these endpoints will attach the appropriate CORS headers to the response.
- title: Fix regression in the agent for the metrics transfer.
type: bugfix
body: >-
A regression was introduced in 2.3.0 causing the agent to miss some of the metrics coming from emissary ingress before sending them to Ambassador cloud. This issue has been resolved to ensure that all the nodes composing the emissary ingress cluster are reporting properly.
- title: Handle long cluster names for injected acme-challenge route.
type: bugfix
body: >-
Previously, we would inject an upstream route for acme-challenge that was targeting the localhost auth service cluster. This route is injected to make Envoy configuration happy and the AuthService
that is shipped with $productName$ will handle it properly. However, if the cluster name is longer than 60 characters due to a long namespace, etc... then $productName$ will truncate it and make
sure it is unique. When this happens the name of the cluster assigned to the acme-challenge route would get out-of-sync and would introduce invalid Envoy configuration.
To avoid this $productName$ will now inject a route that returns a direct <code>404</code> response rather than pointing at an arbitrary cluster. This matches existing behavior and is a transparent
change to the user.
- title: Update Golang to 1.17.12
type: security
body: >-
Updated Golang to 1.17.12 to address the CVEs: CVE-2022-23806, CVE-2022-28327, CVE-2022-24675,
CVE-2022-24921, CVE-2022-23772.
- title: Update Curl to 7.80.0-r2
type: security
body: >-
Updated Curl to 7.80.0-r2 to address the CVEs: CVE-2022-32207, CVE-2022-27782, CVE-2022-27781,
CVE-2022-27780.
- title: Update openSSL-dev to 1.1.1q-r0
type: security
body: >-
Updated openSSL-dev to 1.1.1q-r0 to address CVE-2022-2097.
- title: Update ncurses to 1.1.1q-r0
type: security
body: >-
Updated ncurses to 1.1.1q-r0 to address CVE-2022-29458
- title: Upgrade jwt-go
type: security
body: >-
Upgrade jwt-go to latest commit to resolve CVE-2020-26160.
- version: 3.0.0
date: '2022-06-28'
notes:
- title: Upgrade to Envoy 1.22
type: change
body: >-
$productName$ has been upgraded to Envoy 1.22 which provides security, performance and feature enhancements. You can read more about them here: <a href="https://www.envoyproxy.io/docs/envoy/v1.22.0/version_history/current">Envoy Proxy 1.22.0 Release Notes</a>
This is a major jump in Envoy versions from the current of 1.17 in EdgeStack 2.X. Most of the changes are under the hood and allow $productName$ to adopt new features in the future. However, one major change that will effect users is the removal of V2 Transport Protocol support. You can find a transition guide here: <a href=""></a>
- title: Envoy V2 xDS Transport Protocol Support Removed
type: change
body: >-
Envoy removed support for V2 xDS Transport Protocol which means $productName$ now only supports the Envoy V3 xDS Transport Protocol.
User should first upgrade to $productName$ 2.3 prior to ensure that the <code>LogService</code>s and External <code>Filter</code>s are working properly by setting <code>protocol_version: "v3"</code>.
If <code>protocol_version</code> is not specified in 3.Y, the default value of <code>v2</code> will cause an error to be posted and a static response will be returned. Therefore, you must set it to <code>protocol_version: v3</code>. If upgrading from a previous version, you will want to set it to <code>v3</code> and ensure it is working before upgrading to Emissary-ingress 3.Y. The default value for <code>protocol_version</code> remains <code>v2</code> in the <code>getambassador.io/v3alpha1</code> CRD specifications to avoid making breaking changes outside of a CRD version change. Future versions of CRD's will deprecate it.
docs: topics/using/filters/external
- title: Initial HTTP/3 Downstream Support
type: feature
body: >-
With the upgrade to Envoy, $productName$ is now able to provide downstream support for HTTP/3. The initial implementation supports exposing http/3 endpoints on port `443`. Future version of $productName$ will seek to provide additional configuration to support more scenarios.
HTTP/3 uses the Quic protocol over UDP. Changes to your cloud provider provisioned Load Balancer will be required to support UDP traffic if using HTTP/3. External Load Balancers must serve traffic on port <code>443</code> because the <code>alt-svc</code> header is not configurable in the initial release of the feature.
docs: topics/running/http3
- version: 2.5.1
date: '2022-12-08'
notes:
- title: Update Golang to 1.19.4
type: security
body: >-
Updated Golang to latest 1.19.4 patch release which contained two CVEs: CVE-2022-41720, CVE-2022-41717.
CVE-2022-41720 only affects Windows and $productName$ only ships on Linux. CVE-2022-41717 affects HTTP/2 servers that are exposed to external clients. By default, $productName$ exposes the endpoints for DevPortal, Authentication Service, and RateLimitService via Envoy. Envoy enforces a limit on request header size which mitigates the vulnerability.
- version: 2.5.0
date: '2022-11-03'
notes:
- title: Propagate trace headers to http external filter
type: change
body: >-
Previously, tracing headers were not propagated to an ExternalFilter configured with
`proto: http`. Now, adding supported tracing headers (b3, etc...) to the
`spec.allowed_request_headers` will propagate them to the configured service.
github:
- title: '#3078'
link: https://github.com/datawire/apro/issues/3078
- title: Diagnostics stats properly handles parsing envoy metrics with colons
type: bugfix
body: >-
If a <code>Host</code> or <code>TLSContext</code> contained a hostname with a <code>:</code> then when using the
diagnostics endpoints <code>ambassador/v0/diagd</code> then an error would be thrown due to the parsing logic not
being able to handle the extra colon. This has been fixed and $productName$ will not throw an error when parsing
envoy metrics for the diagnostics user interface.
- title: Bump Golang to 1.19.2
type: security
body: >-
Bump Go from 1.17.12 to 1.19.2. This is to keep the Go version current.
- version: 2.4.2
date: '2022-10-10'
notes:
- title: Diagnostics stats properly handles parsing envoy metrics with colons
type: bugfix
body: >-
If a <code>Host</code> or <code>TLSContext</code> contained a hostname with a <code>:</code> then when using the diagnostics endpoints <code>ambassador/v0/diagd</code> then an error would be thrown due to the parsing logic not being able to handle the extra colon. This has been fixed and $productName$ will not throw an error when parsing envoy metrics for the diagnostics user interface.
- title: Backport fixes for handling synthetic auth services
type: bugfix
body: >-
The synthetic AuthService didn't correctly handle AmbassadorID, which was fixed in version 3.1 of $productName$.The fix has been backported to make sure the AuthService is handled correctly during upgrades.
- version: 2.4.1
date: '2022-09-27'
notes:
- title: Addressing release issue with 2.4.0
type: bugfix
body: >-
During the $productName$ 2.4.0 release process there was an issue with the Emissary binary. This has been patched and resolved.
- version: 2.4.0
date: '2022-09-19'
notes:
- title: Add support for Host resources using secrets from different namespaces
type: feature
body: >-
Previously the <code>Host</code> resource could only use secrets that are in the namespace as the
Host. The <code>tlsSecret</code> field in the Host has a new subfield <code>namespace</code> that will allow
the use of secrets from different namespaces.
docs: topics/running/tls/#bring-your-own-certificate
- title: Allow bypassing of EDS for manual endpoint insertion
type: change
body: >-
Set <code>AMBASSADOR_EDS_BYPASS</code> to <code>true</code> to bypass EDS handling of endpoints and have endpoints be
inserted to clusters manually. This can help resolve with <code>503 UH</code> caused by certification rotation relating to
a delay between EDS + CDS. The default is <code>false</code>.
docs: topics/running/environment/#ambassador_eds_bypass
- title: Properly convert FilterPolicy and ExternalFilter between CRD versions
type: bugfix
body: >-
Previously, $productName$ would incorrectly include empty fields when converting a FilterPolicy or ExternalFilter between versions. This would cause undesired state to be persisted in k8s which would lead to validation issues when trying to kubectl apply the custom resource. This fixes these issues to ensure the correct data is being persisted and roundtripped properly between CRD versions.
- title: Properly populate alt_stats_name for Tracing, Auth and RateLimit Services
type: bugfix
body: >-
Previously, setting the <code>stats_name</code> for the <code>TracingService</code>, <code>RateLimitService</code>
or the <code>AuthService</code> would have no affect because it was not being properly passed to the Envoy cluster
config. This has been fixed and the <code>alt_stats_name</code> field in the cluster config is now set correctly.
(Thanks to <a href="https://github.com/psalaberria002">Paul</a>!)
- title: Diagnostics stats properly handles parsing envoy metrics with colons
type: bugfix
body: >-
If a <code>Host</code> or <code>TLSContext</code> contained a hostname with a <code>:</code> when using the
diagnostics endpoints <code>ambassador/v0/diagd</code> then an error would be thrown due to the parsing logic not
being able to handle the extra colon. This has been fixed and $productName$ will not throw an error when parsing
envoy metrics for the diagnostics user interface.
- title: TCPMappings use correct SNI configuration
type: bugfix
body: >-
$productName$ 2.0.0 introduced a bug where a <code>TCPMapping</code> that uses SNI,
instead of using the hostname glob in the <code>TCPMapping</code>, uses the hostname glob
in the <code>Host</code> that the TLS termination configuration comes from.
- title: TCPMappings configure TLS termination without a Host resource
type: bugfix
body: >-
$productName$ 2.0.0 introduced a bug where a <code>TCPMapping</code> that terminates TLS
must have a corresponding <code>Host</code> that it can take the TLS configuration from.
This was semi-intentional, but didn't make much sense. You can now use a
<code>TLSContext</code> without a <code>Host</code>as in $productName$ 1.y releases, or a
<code>Host</code> with or without a <code>TLSContext</code> as in prior 2.y releases.
- title: TCPMappings and HTTP Hosts can coexist on Listeners that terminate TLS
type: bugfix
body: >-
Prior releases of $productName$ had the arbitrary limitation that a
<code>TCPMapping</code> cannot be used on the same port that HTTP is served on, even if
TLS+SNI would make this possible. $productName$ now allows <code>TCPMappings</code> to be
used on the same <code>Listener</code> port as HTTP <code>Hosts</code>, as long as that
<code>Listener</code> terminates TLS.
- version: 2.3.2
date: '2022-08-01'
notes:
- title: Correct cookies for mixed HTTP/HTTPS OAuth2 origins
type: bugfix
body: >-
When an <code>OAuth2</code> filter sets cookies for a <code>protectedOrigin</code>, it
should set a cookie's "Secure" flag to true for <code>https://</code> origins and false
for <code>http://</code> origins. However, for filters with multiple origins, it set the
cookie's flag based on the first origin listen in the Filter, rather than the origin that
the cookie is actually for.
- title: Correctly handle refresh tokens for OAuth2 filters with multiple origins
type: bugfix
body: >-
When an <code>OAuth2</code> filter with multiple <code>protectedOrigins</code> needs to
adjust the cookies for an active login (which only happens when using a refresh token), it
would erroneously redirect the web browser to the last origin listed, rather than
returning to the original URL. This has been fixed.
- title: Correctly handle CORS and CORs preflight request within the OAuth2 Fitler known endpoints
type: bugfix
body: >-
Previously, the <code>OAuth2</code> filter's known endpoints <code>/.ambassador/oauth2/logout</code>
and <code>/.ambassador/oauth2/multicookie</code> did not understand CORS or CORS preflight request
which would cause the browser to reject the request. This has now been fixed and these endpoints will
attach the appropriate CORS headers to the response.
- title: Fix regression in the agent for the metrics transfer.
type: bugfix
body: >-
A regression was introduced in 2.3.0 causing the agent to miss some of the metrics coming from
emissary ingress before sending them to Ambassador cloud. This issue has been resolved to ensure
that all the nodes composing the emissary ingress cluster are reporting properly.
- title: Update Golang to 1.17.12
type: security
body: >-
Updated Golang to 1.17.12 to address the CVEs: CVE-2022-23806, CVE-2022-28327, CVE-2022-24675,
CVE-2022-24921, CVE-2022-23772.
- title: Update Curl to 7.80.0-r2
type: security
body: >-
Updated Curl to 7.80.0-r2 to address the CVEs: CVE-2022-32207, CVE-2022-27782, CVE-2022-27781,
CVE-2022-27780.
- title: Update openSSL-dev to 1.1.1q-r0
type: security
body: >-
Updated openSSL-dev to 1.1.1q-r0 to address CVE-2022-2097.
- title: Update ncurses to 1.1.1q-r0
type: security
body: >-
Updated ncurses to 1.1.1q-r0 to address CVE-2022-29458
- title: Upgrade jwt-go
type: security
body: >-
Upgrade jwt-go to latest commit to resolve CVE-2020-26160.
- version: 2.3.1
date: '2022-06-10'
notes:
- title: Fix regression in tracing service config
type: bugfix
body: >-
A regression was introduced in 2.3.0 that leaked zipkin default config fields into the configuration
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>
docs: https://github.com/emissary-ingress/emissary/issues/4267
- title: Envoy security updates
type: security
body: >-
We have backported patches from the Envoy 1.19.5 security update to $productName$'s
1.17-based Envoy, addressing CVE-2022-29224 and CVE-2022-29225. $productName$ is not
affected by CVE-2022-29226, CVE-2022-29227, or CVE-2022-29228; as it <a
href="https://github.com/emissary-ingress/emissary/issues/2846">does not support internal
redirects</a>, and does not use Envoy's built-in OAuth2 filter.
docs: https://groups.google.com/g/envoy-announce/c/8nP3Kn4jV7k
- version: 2.3.0
date: '2022-06-06'
notes:
- title: Remove unused packages
type: security
body: >-
Completely remove <code>gdbm</code>, <code>pip</code>, <code>smtplib</code>, and <code>sqlite</code> packages, as they are unused.
- title: CORS now happens before auth
type: bugfix
body: >-
When CORS is specified (either in a <code>Mapping</code> or in the <code>Ambassador</code>
<code>Module</code>), CORS processing will happen before authentication. This corrects a
problem where XHR to authenticated endpoints would fail.
- title: Correctly handle caching of Mappings with the same name in different namespaces
type: bugfix
body: >-
In 2.x releases of $productName$ when there are multiple <code>Mapping</code>s that have the same
<code>metadata.name</code> across multiple namespaces, their old config would not properly be removed
from the cache when their config was updated. This resulted in an inability to update configuration
for groups of <code>Mapping</code>s that share the same name until the $productName$ pods restarted.
- title: Fix support for Zipkin API-v1 with Envoy xDS-v3
type: bugfix
body: >-
It is now possible for a <code>TracingService</code> to specify
<code>collector_endpoint_version: HTTP_JSON_V1</code> when using xDS v3 to configure Envoy
(which has been the default since $productName$ 1.14.0). The <code>HTTP_JSON_V1</code>
value configures Envoy to speak to Zipkin using Zipkin's old API-v1, while the
<code>HTTP_JSON</code> value configures Envoy to speak to Zipkin using Zipkin's new
API-v2. In previous versions of $productName$ it was only possible to use
<code>HTTP_JSON_V1</code> when explicitly setting the
<code>AMBASSADOR_ENVOY_API_VERSION=V2</code> environment variable to force use of xDS v2
to configure Envoy.
docs: topics/running/services/tracing-service/
- title: Added Support for transport protocol v3 in External Filters
type: feature
body: >-
External Filters can now make use of the v3 transport protocol. In addtion to the support for the v3 transport protocol, the default <code>AuthService</code> installed with $productName$ will now only operate with transport protocol v3. In order to support existing External Filters using v2, $productName$ will automatically translate
v2 to the new default of v3. Any External Filters will be assumed to be using transport protocol v2 and will use the automatic conversion to v3 unless the new <code>protocol_version</code> field on the External Filter is explicitly set to <code>v3</code>.
docs: topics/using/filters/external
- title: Allow setting propagation modes for Lightstep tracing
type: feature
body: >-
It is now possible to set <code>propagation_modes</code> in the
<code>TracingService</code> config when using lightstep as the driver.
(Thanks to <a href="https://github.com/psalaberria002">Paul</a>!)
docs: topics/running/services/tracing-service/
github:
- title: '#4179'
link: https://github.com/emissary-ingress/emissary/pull/4179
- title: Added Support for Certificate Revocation Lists
type: feature
body: >-
$productName$ now supports <a href="https://www.envoyproxy.io/docs/envoy/v1.17.4/api-v3/extensions/transport_sockets/tls/v3/common.proto.html?highlight=crl">Envoy's Certificate Revocation lists.</a>
This allows users to specify a list of certificates that $productName$ should reject even if the certificate itself is otherwise valid.
docs: topics/running/tls
- title: Added support for the LogService v3 transport protocol
type: feature
body: >-
Previously, a <code>LogService</code> would always have $productName$ communicate with the
external log service using the <code>envoy.service.accesslog.v2.AccessLogService</code>
API. It is now possible for the <code>LogService</code> to specify
<code>protocol_version: v3</code> to use the newer
<code>envoy.service.accesslog.v3.AccessLogService</code> API instead. This functionality
is not available if you set the <code>AMBASSADOR_ENVOY_API_VERSION=V2</code> environment
variable.
docs: topics/running/services/log-service/
- title: Improved performance processing OAuth2 Filters
type: change
body: >-
When each OAuth2 Filter that references a Kubernetes secret is loaded, $productName$ previously needed to communicate with the API server to request and validate that secret before loading the next Filter. To improve performance, $productName$ will now load and validate all secrets required by OAuth2 Filters at once prior to loading the filters.
- title: Deprecated v2 transport protocol for External Filters and AuthServices
type: change
body: >-
A future release of $productName$ will remove support for the now deprecated v2 transport protocol in both AuthServices as well as External Filters. Migrating Existing External Filters from v2 to v3
is simple and and example can be found on the External Filter page. This change only impacts gRPC External Filters. HTTP External Filters are unaffected by this change.
docs: topics/using/filters/external