Skip to content

Commit ca79f3c

Browse files
Merge pull request #274018 from JackStromberg/patch-163
v1.0.2
2 parents 4315cf7 + 841da64 commit ca79f3c

18 files changed

+502
-75
lines changed
Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
22
title: Release notes for ALB Controller
3-
description: This article lists updates made to the Application Gateway for Containers ALB Controller
3+
description: This article lists updates made to the Application Gateway for Containers ALB Controller.
44
services: application-gateway
55
author: greglin
66
ms.service: application-gateway
77
ms.subservice: appgw-for-containers
88
ms.topic: article
9-
ms.date: 02/27/2024
9+
ms.date: 5/9/2024
1010
ms.author: greglin
1111
---
1212

@@ -27,23 +27,17 @@ Instructions for new or existing deployments of ALB Controller are found in the
2727

2828
| ALB Controller Version | Gateway API Version | Kubernetes Version | Release Notes |
2929
| ---------------------- | ------------------- | ------------------ | ------------- |
30-
| 1.0.0| v1 | v1.26, v1.27, v1.28 | URL redirect for both Gateway and Ingress API, v1beta1 -> v1 of Gateway API, quality improvements<br/>Breaking Changes: TLS Policy for Gateway API [PolicyTargetReference](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1alpha2.PolicyTargetReferenceWithSectionName)<br/>Listener is now referred to as [SectionName](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.SectionName)<br/>Fixes: Request timeout of 3 seconds, [HealthCheckPolicy interval](https://github.com/Azure/AKS/issues/4086), [pod crash for missing API fields](https://github.com/Azure/AKS/issues/4087) |
30+
| 1.0.2| v1 | v1.26, v1.27, v1.28, v1.29 | ECDSA + RSA certificate support for both Ingress and Gateway API, Ingress fixes, Server-sent events support |
3131

3232
## Release history
3333

34-
0.6.3 - Hotfix to address handling of AGC frontends during controller restart in managed scenario
35-
36-
0.6.2 - Skipped
37-
38-
November 6, 2023 - 0.6.1 - Gateway / Ingress API - Header rewrite support, Ingress API - URL rewrite support, Ingress multiple-TLS listener bug fix,
39-
two certificates maximum per host, adopting [semantic versioning (semver)](https://semver.org/), quality improvements
40-
41-
September 25, 2023 - 0.5.024542 - Custom Health Probes, Controller HA, Multi-site support for Ingress, [helm_release via Terraform fix](https://github.com/Azure/AKS/issues/3857), Path rewrite for Gateway API, status for Ingress resources, quality improvements
42-
43-
July 25, 2023 - 0.4.023971 - Ingress + Gateway coexistence improvements
44-
45-
July 24, 2023 - 0.4.023961 - Improved Ingress support
46-
47-
July 24, 2023 - 0.4.023921 - Initial release of ALB Controller
48-
49-
- Minimum supported Kubernetes version: v1.25
34+
| ALB Controller Version | Gateway API Version | Kubernetes Version | Release Notes |
35+
| ---------------------- | ------------------- | ------------------ | ------------- |
36+
| 1.0.0| v1 | v1.26, v1.27, v1.28 | General Availability! URL redirect for both Gateway and Ingress API, v1beta1 -> v1 of Gateway API, quality improvements<br/>Breaking Changes: TLS Policy for Gateway API [PolicyTargetReference](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1alpha2.PolicyTargetReferenceWithSectionName)<br/>Listener is now referred to as [SectionName](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.SectionName)<br/>Fixes: Request timeout of 3 seconds, [HealthCheckPolicy interval](https://github.com/Azure/AKS/issues/4086), [pod crash for missing API fields](https://github.com/Azure/AKS/issues/4087) |
37+
| 0.6.3 | v1beta1 | v1.25 | Hotfix to address handling of Application Gateway for Containers frontends during controller restart in managed scenario |
38+
| 0.6.2 | - | - | Skipped release |
39+
| November 6, 2023 - 0.6.1 | v1beta1 | v1.25 | Gateway / Ingress API - Header rewrite support, Ingress API - URL rewrite support, Ingress multiple-TLS listener bug fix, two certificates maximum per host, adopting [semantic versioning (semver)](https://semver.org/), quality improvements |
40+
| September 25, 2023 - 0.5.024542 | v1beta1 | v1.25 | Custom Health Probes, Controller HA, Multi-site support for Ingress, [helm_release via Terraform fix](https://github.com/Azure/AKS/issues/3857), Path rewrite for Gateway API, status for Ingress resources, quality improvements |
41+
| July 25, 2023 - 0.4.023971 | v1beta1 | v1.25 | Ingress + Gateway coexistence improvements |
42+
| July 24, 2023 - 0.4.023961 | v1beta1 | v1.25 | Improved Ingress support |
43+
| July 24, 2023 - 0.4.023921 | v1beta1 | v1.25 | Initial release of ALB Controller |

articles/application-gateway/for-containers/application-gateway-for-containers-components.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: greglin
66
ms.service: application-gateway
77
ms.subservice: appgw-for-containers
88
ms.topic: conceptual
9-
ms.date: 03/26/2024
9+
ms.date: 5/9/2024
1010
ms.author: greglin
1111
---
1212

@@ -105,11 +105,11 @@ Application Gateway for Containers inserts three extra headers to all requests b
105105

106106
## Request timeouts
107107

108-
Application Gateway for Containers enforces the following timeouts as requests are initiated and maintained between the client, AGC, and backend.
108+
Application Gateway for Containers enforces the following timeouts as requests are initiated and maintained between the client, Application Gateway for Containers, and backend.
109109

110110
| Timeout | Duration | Description |
111111
| ------- | --------- | ----------- |
112-
| Request Timeout | 60 seconds | time for which AGC waits for the backend target response. |
112+
| Request Timeout | 60 seconds | time for which Application Gateway for Containers waits for the backend target response. |
113113
| HTTP Idle Timeout | 5 minutes | idle timeout before closing an HTTP connection. |
114114
| Stream Idle Timeout | 5 minutes | idle timeout before closing an individual stream carried by an HTTP connection. |
115115
| Upstream Connect Timeout | 5 seconds | time for establishing a connection to the backend target. |

articles/application-gateway/for-containers/custom-health-probe.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: greg-lindsay
66
ms.service: application-gateway
77
ms.subservice: appgw-for-containers
88
ms.topic: conceptual
9-
ms.date: 02/27/2024
9+
ms.date: 5/9/2024
1010
ms.author: greglin
1111
---
1212

@@ -30,7 +30,6 @@ The following properties make up custom health probes:
3030
| timeout | How long in seconds the request should wait until it's marked as a failure The minimum interval must be > 0 seconds. |
3131
| healthyThreshold | Number of health probes before marking the target endpoint healthy. The minimum interval must be > 0. |
3232
| unhealthyTreshold | Number of health probes to fail before the backend target should be labeled unhealthy. The minimum interval must be > 0. |
33-
| protocol| Specifies either nonencrypted `HTTP` traffic or encrypted traffic via TLS as `HTTPS` |
3433
| (http) host | The hostname specified in the request to the backend target. |
3534
| (http) path | The specific path of the request. If a single file should be loaded, the path might be /index.html. |
3635
| (http -> match) statusCodes | Contains two properties, `start` and `end`, that define the range of valid HTTP status codes returned from the backend. |
@@ -56,6 +55,9 @@ When the default health probe is used, the following values for each health prob
5655
| (http) host | localhost |
5756
| (http) path | / |
5857

58+
>[!Note]
59+
>Health probes are initiated with the `User-Agent` value of `Microsoft-Azure-Application-LB/AGC`.
60+
5961
## Custom health probe
6062

6163
In both Gateway API and Ingress API, a custom health probe can be defined by defining a [_HealthCheckPolicyPolicy_ resource](api-specification-kubernetes.md#alb.networking.azure.io/v1.HealthCheckPolicy) and referencing a service the health probes should check against. As the service is referenced by an HTTPRoute or Ingress resource with a class reference to Application Gateway for Containers, the custom health probe is used for each reference.
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
---
2+
title: ECDSA and RSA Certificates for Azure Application Gateway for Containers
3+
description: Learn how to configure a listener with both ECDSA and RSA certificates for Azure Application Gateway for Containers.
4+
services: application gateway
5+
author: greg-lindsay
6+
ms.service: application-gateway
7+
ms.subservice: appgw-for-containers
8+
ms.topic: conceptual
9+
ms.date: 5/9/2024
10+
ms.author: greglin
11+
---
12+
13+
# ECDSA and RSA certificates for Application Gateway for Containers
14+
15+
Cryptography is vital in ensuring privacy, integrity, and security of data as it is transmitted between a client and server on a network. Two widely adopted cryptographic algorithms for asymmetric encryption are Rivest-Shamir-Adleman (RSA) and Elliptic Curve Digital Signature Algorithm (ECDSA).
16+
17+
- RSA asymmetric encryption was introduced in the 1970s and has wide device adoption today. RSA implements a simple mathematical approach to cryptography, which aids in adoption.
18+
- ECDSA is an asymmetric encryption algorithm and successor to the Digital Signature Algorithm (DSA). ECDSA implements shorter key lengths than RSA, enabling excellent performance and scalability, while still retaining strong security. ECDSA was introduced in the 1990s, so some legacy devices might not be able to negotiate the algorithm.
19+
20+
## Implementation in Application Gateway for Containers
21+
22+
To provide flexibility, Application Gateway for Containers supports both ECDSA and RSA certificates. A listener can reference either ECDSA or RSA forcing a preferred encryption algorithm, or both can be supported in parallel. Running both algorithms in parallel enables both legacy and modern clients to negotiate a secure connection via RSA, while clients that support ECDSA can take advantage of the enhanced performance and security.
23+
24+
Configuration of the certificates used with Application Gateway for Containers is defined within the Gateway or Ingress resources within Kubernetes. The public and private key is defined as a Kubernetes secret and referenced by name from the Gateway or Ingress resources. No designation is required within the secret resource to specify if the certificate is RSA or ECDSA. Application Gateway for Containers is programmed based on the certificate details provided.
25+
26+
Application Gateway for Containers provides three variations for use of RSA and ECDSA secrets:
27+
28+
- Two secrets: one secret containing an RSA certificate, the other containing an ECDSA certificate
29+
- One secret containing an RSA certificate
30+
- One secret containing an ECDSA certificate
31+
32+
[![A diagram showing the Application Gateway for Containers with three variations of certificate configurations.](./media/ecdsa-rsa-certificates/ecdsa-rsa-certificates.png)](./media/ecdsa-rsa-certificates/ecdsa-rsa-certificates.png#lightbox)
33+
34+
## Configure both ECDSA and RSA certificates on the same listener
35+
36+
1. Configure Kubernetes secrets
37+
38+
Two secret resources are created, each with its own certificate. One certificate is generated ECDSA and the other RSA.
39+
40+
```yaml
41+
apiVersion: v1
42+
kind: Secret
43+
metadata:
44+
name: rsa-tls-secret
45+
namespace: test-infra
46+
data:
47+
tls.crt: <base64encodedpublickey>
48+
tls.key: <base64encodedprivatekey>
49+
type: kubernetes.io/tls
50+
---
51+
apiVersion: v1
52+
kind: Secret
53+
metadata:
54+
name: ecdsa-tls-secret
55+
namespace: test-infra
56+
data:
57+
tls.crt: <base64encodedpublickey>
58+
tls.key: <base64encodedprivatekey>
59+
type: kubernetes.io/tls
60+
```
61+
62+
2. Reference the secrets via a listener
63+
64+
# [Gateway API](#tab/tls-policy-gateway-api)
65+
66+
Both ECDSA and RSA certificates on the same listener in Gateway API is supported by having two certificate references. A maximum of two certificates is supported: one ECDSA and one RSA.
67+
68+
```yaml
69+
apiVersion: gateway.networking.k8s.io/v1
70+
kind: Gateway
71+
metadata:
72+
annotations:
73+
alb.networking.azure.io/alb-name: alb-test
74+
alb.networking.azure.io/alb-namespace: alb-test-infra
75+
name: gateway-01
76+
namespace: test-infra
77+
spec:
78+
gatewayClassName: azure-alb-external
79+
listeners:
80+
- allowedRoutes:
81+
namespaces:
82+
from: All
83+
name: http-listener
84+
port: 80
85+
protocol: HTTP
86+
- allowedRoutes:
87+
namespaces:
88+
from: All
89+
name: https-listener
90+
port: 443
91+
protocol: HTTPS
92+
tls:
93+
mode: Terminate
94+
certificateRefs:
95+
- kind : Secret
96+
group: ""
97+
name: ecdsa-tls-secret
98+
namespace: test-infra
99+
- kind : Secret
100+
group: ""
101+
name: rsa-tls-secret
102+
namespace: test-infra
103+
```
104+
105+
# [Ingress API](#tab/tls-policy-ingress-api)
106+
107+
Both ECDSA and RSA certificates on the same host in Ingress API is supported by defining two host and secretName references. A maximum of two certificates is supported: one ECDSA and one RSA.
108+
109+
>[!Warning]
110+
>Ingress resources that reference the same frontend and define the same host must reference the same certificates. If there’s a discrepancy in the number of certificates between two Ingress resources (for example, one has a single certificate and the other has two), the configuration of the first defined Ingress resource will be implemented. The configuration of the second Ingress resource will be disregarded.
111+
112+
```yaml
113+
apiVersion: networking.k8s.io/v1
114+
kind: Ingress
115+
metadata:
116+
annotations:
117+
alb.networking.azure.io/alb-name: alb-test
118+
alb.networking.azure.io/alb-namespace: alb-test-infra
119+
name: ingress-01
120+
namespace: test-infra
121+
spec:
122+
ingressClassName: azure-alb-external
123+
tls:
124+
- hosts:
125+
- contoso.com
126+
secretName: ecdsa-tls-secret
127+
- hosts:
128+
- contoso.com
129+
secretName: rsa-tls-secret
130+
rules:
131+
- host: contoso.com
132+
http:
133+
paths:
134+
- path: /
135+
pathType: Prefix
136+
backend:
137+
service:
138+
name: backend-v1
139+
port:
140+
number: 8080
141+
```
142+
143+
---

articles/application-gateway/for-containers/how-to-header-rewrite-gateway-api.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: greg-lindsay
66
ms.service: application-gateway
77
ms.subservice: appgw-for-containers
88
ms.topic: conceptual
9-
ms.date: 02/27/2024
9+
ms.date: 5/9/2024
1010
ms.author: greglin
1111
---
1212

@@ -170,7 +170,7 @@ Once the gateway is created, create an HTTPRoute that listens for hostname conto
170170
171171
In this example, we look for the user agent used by the Bing search engine and simplify the header to SearchEngine-BingBot for easier backend parsing.
172172
173-
This example also demonstrates addition of a new header called `AGC-Header-Add` with a value of `agc-value` and removes a request header called `client-custom-header`.
173+
This example also demonstrates addition of a new header called `AGC-Header-Add` with a value of `AGC-value` and removes a request header called `client-custom-header`.
174174

175175
> [!TIP]
176176
> For this example, while we can use the HTTPHeaderMatch of "Exact" for a string match, a demonstration is used in regular expression for illistration of further capabilities.
@@ -202,7 +202,7 @@ spec:
202202
value: SearchEngine-BingBot
203203
add:
204204
- name: AGC-Header-Add
205-
value: agc-value
205+
value: AGC-value
206206
remove: ["client-custom-header"]
207207
backendRefs:
208208
- name: backend-v2
@@ -337,7 +337,7 @@ Via the response we should see:
337337
}
338338
```
339339

340-
Specifying a `client-custom-header` header with the value `moo` should be stripped from the request when AGC initiates the connection to the backend service:
340+
Specifying a `client-custom-header` header with the value `moo` should be stripped from the request when Application Gateway for Containers initiates the connection to the backend service:
341341

342342
```bash
343343
fqdnIp=$(dig +short $fqdn)

articles/application-gateway/for-containers/how-to-header-rewrite-ingress-api.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: greg-lindsay
66
ms.service: application-gateway
77
ms.subservice: appgw-for-containers
88
ms.topic: conceptual
9-
ms.date: 03/5/2024
9+
ms.date: 5/9/2024
1010
ms.author: greglin
1111
---
1212

@@ -171,7 +171,7 @@ Once the Ingress is created, next we need to define an IngressExtension with the
171171
172172
In this example, we set a static user-agent with a value of `rewritten-user-agent`.
173173

174-
This example also demonstrates addition of a new header called `AGC-Header-Add` with a value of `agc-value` and removes a request header called `client-custom-header`.
174+
This example also demonstrates addition of a new header called `AGC-Header-Add` with a value of `AGC-value` and removes a request header called `client-custom-header`.
175175

176176
> [!TIP]
177177
> For this example, while we can use the HTTPHeaderMatch of "Exact" for a string match, a demonstration is used in regular expression for illistration of further capabilities.
@@ -194,7 +194,7 @@ spec:
194194
value: "rewritten-user-agent"
195195
add:
196196
- name: "AGC-Header-Add"
197-
value: "agc-value"
197+
value: "AGC-value"
198198
remove:
199199
- "client-custom-header"
200200
EOF
@@ -294,7 +294,7 @@ Via the response we should see:
294294
}
295295
```
296296

297-
Specifying a `client-custom-header` header with the value `moo` should be stripped from the request when AGC initiates the connection to the backend service:
297+
Specifying a `client-custom-header` header with the value `moo` should be stripped from the request when Application Gateway for Containers initiates the connection to the backend service:
298298

299299
```bash
300300
fqdnIp=$(dig +short $fqdn)

articles/application-gateway/for-containers/how-to-url-redirect-gateway-api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: greg-lindsay
66
ms.service: application-gateway
77
ms.subservice: appgw-for-containers
88
ms.topic: conceptual
9-
ms.date: 02/27/2024
9+
ms.date: 5/9/2024
1010
ms.author: greglin
1111
---
1212

articles/application-gateway/for-containers/how-to-url-redirect-ingress-api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: greg-lindsay
66
ms.service: application-gateway
77
ms.subservice: appgw-for-containers
88
ms.topic: conceptual
9-
ms.date: 02/27/2024
9+
ms.date: 5/9/2024
1010
ms.author: greglin
1111
---
1212

77.4 KB
Loading
38.4 KB
Loading

0 commit comments

Comments
 (0)