generated from kubernetes/kubernetes-template-project
-
Notifications
You must be signed in to change notification settings - Fork 582
Add new BackendTLSPolicy configuration options to documentation #3563
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
08volt
wants to merge
1
commit into
kubernetes-sigs:main
Choose a base branch
from
08volt:doc-combine
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+45
−2
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,6 +28,17 @@ to prevent the complications involved with sharing trust across namespace bounda | |
|
||
All Gateway API Routes that point to a referenced Service should respect a configured BackendTLSPolicy. | ||
|
||
## Gateway Backend TLS Configuration | ||
08volt marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
??? example "Experimental Channel since v1.1.0" | ||
|
||
These fields were added to Gateway in `v1.1.0` | ||
The Gateway specification now includes a new backendTLS field that allows configuration of TLS settings when the Gateway connects to backends. This provides a default configuration for all backend Services. It is important to note that if a BackendTLSPolicy is attached to a specific Service, it will override the backendTLS configuration on the Gateway. | ||
This functionality enables the specification of client certificates that the Gateway should use when establishing TLS connections with backends. | ||
The backendTLS configuration consists of a single field: | ||
|
||
- [ClientCertificateRef][clientCertificateRef] - References an object containing a Client Certificate and its associated private key | ||
Comment on lines
+35
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Note that this information is changing in #3960, so this should be updated with that design, and this PR should probably merge after that one does. |
||
|
||
## Spec | ||
|
||
The specification of a [BackendTLSPolicy][backendtlspolicy] consists of: | ||
|
@@ -36,19 +47,21 @@ The specification of a [BackendTLSPolicy][backendtlspolicy] consists of: | |
- [Validation][validation] - Defines the configuration for TLS, including hostname, CACertificateRefs, and | ||
WellKnownCACertificates. | ||
- [Hostname][hostname] - Defines the Server Name Indication (SNI) that the Gateway uses to connect to the backend. | ||
- [SubjectAltNames][subjectAltNames] - Specifies one or more Subject Alternative Names that the backend certificate must match. When specified, the certificate must have at least one matching SAN. This field enables separation between SNI (hostname) and certificate identity validation. A maximum of 5 SANs are allowed. | ||
- [CACertificateRefs][caCertificateRefs] - Defines one or more references to objects that contain PEM-encoded TLS certificates, | ||
which are used to establish a TLS handshake between the Gateway and backend Pod. Either CACertificateRefs or | ||
WellKnownCACertificates may be specified, but not both. | ||
- [WellKnownCACertificates][wellKnownCACertificates] - Specifies whether system CA certificates may be used in the TLS | ||
handshake between the Gateway and backend Pod. Either CACertificateRefs or WellKnownCACertificates may be specified, but not both. | ||
- [Options][options] - A map of key/value pairs enabling extended TLS configuration for implementations that choose to provide support. Check your implementation's documentation for details. | ||
|
||
The following chart outlines the object definitions and relationship: | ||
```mermaid | ||
flowchart LR | ||
backendTLSPolicy[["<b>backendTLSPolicy</b> <hr><align=left>BackendTLSPolicySpec: spec<br>PolicyStatus: status</align>"]] | ||
spec[["<b>spec</b><hr>PolicyTargetReferenceWithSectionName: targetRefs <br> BackendTLSPolicyValidation: tls"]] | ||
status[["<b>status</b><hr>[ ]PolicyAncestorStatus: ancestors"]] | ||
validation[["<b>tls</b><hr>LocalObjectReference: caCertificateRefs<br>wellKnownCACertificatesType: wellKnownCACertificates/<br>PreciseHostname: hostname"]] | ||
validation[["<b>tls</b><hr>LocalObjectReference: caCertificateRefs<br>wellKnownCACertificatesType: wellKnownCACertificates<br>PreciseHostname: hostname<br>[]SubjectAltName: subjectAltNames"]] | ||
ancestorStatus[["<b>ancestors</b><hr>AncestorRef: parentReference<br>GatewayController: controllerName<br>[]Condition: conditions"]] | ||
targetRefs[[<b>targetRefs</b><hr>]] | ||
service["<b>service</>"] | ||
|
@@ -111,6 +124,34 @@ Also note: | |
|
||
- Wildcard hostnames are not allowed. | ||
|
||
#### Subject Alternative Names | ||
08volt marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
??? example "Experimental Channel since v1.2.0" | ||
|
||
This field was added to BackendTLSPolicy in `v1.2.0` | ||
The subjectAltNames field enables basic mutual TLS configuration between Gateways and backends, as well as the optional use of SPIFFE. When subjectAltNames is specified, the certificate served by the backend must have at least one Subject Alternative Name matching one of the specified values. This is particularly useful for SPIFFE implementations where URI-based SANs may not be valid SNIs. | ||
Subject Alternative Names may contain one of either a Hostname or URI field, and must contain a Type specifying whether Hostname or URI is chosen. | ||
|
||
!!! info "Restrictions" | ||
|
||
- IP addresses and wildcard hostnames are not allowed. (see the description for Hostname above for more details). | ||
- Hostname: DNS name format | ||
- URI: URI format (e.g., SPIFFE ID) | ||
|
||
#### TLS Options | ||
08volt marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
??? example "Experimental Channel since v1.2.0" | ||
|
||
This field was added to BackendTLSPolicy in `v1.2.0` | ||
The options field allows specification of implementation-specific TLS configurations. This can include: | ||
|
||
- Vendor-specific mutual TLS automation configuration | ||
- Minimum supported TLS version restrictions | ||
- Supported cipher suite configurations | ||
|
||
Check your implementation documentation for details. | ||
|
||
### | ||
#### Certificates | ||
|
||
The BackendTLSPolicyValidation must contain a certificate reference of some kind, and contains two ways to configure the | ||
|
@@ -145,4 +186,6 @@ uses `PolicyAncestorStatus` to allow you to know which parentReference set that | |
[wellKnownCACertificates]: ../reference/spec.md#gateway.networking.k8s.io/v1alpha3.BackendTLSPolicyValidation.WellKnownCACertificates | ||
[hostname]: ../reference/spec.md#gateway.networking.k8s.io/v1.PreciseHostname | ||
[rfc-3986]: https://tools.ietf.org/html/rfc3986 | ||
[targetRefs]: ../reference/spec.md#gateway.networking.k8s.io/v1alpha2.PolicyTargetReference | ||
[targetRefs]: ../references/spec/#gateway.networking.k8s.io/v1alpha2.PolicyTargetReference | ||
[subjectAltNames]: ../references/spec/#gateway.networking.k8s.io/v1alpha3.BackendTLSPolicyValidation | ||
[options]: ../references/spec/#gateway.networking.k8s.io/v1alpha3.GatewayTLSConfig |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.