Skip to content

Commit c2d0f5e

Browse files
committed
docs: improve mTLS documentation structure and visibility
Reorganize Certificate secret reference section to prioritize mutual TLS authentication discovery and reduce user friction. The previous structure buried mTLS information within generic certificate documentation, causing users to miss this important security feature. Move provider compatibility validation before configuration examples to prevent wasted effort with unsupported providers. Create dedicated sections for mTLS and CA-only authentication with complete examples and clear explanations of field requirements. Signed-off-by: cappyzawa <[email protected]>
1 parent 4cc3f62 commit c2d0f5e

File tree

1 file changed

+54
-6
lines changed

1 file changed

+54
-6
lines changed

docs/spec/v1beta3/providers.md

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,10 +1195,17 @@ secure communication. The secret must be of type `kubernetes.io/tls` or `Opaque`
11951195

11961196
#### Supported configurations
11971197

1198+
- **Mutual TLS (mTLS)**: Client certificate authentication (provide `tls.crt` + `tls.key`, optionally with `ca.crt`)
11981199
- **CA-only**: Server authentication (provide `ca.crt` only)
1199-
- **mTLS**: Client certificate authentication (provide `tls.crt` + `tls.key`, optionally with `ca.crt`)
12001200

1201-
#### Providers supporting client certificate authentication
1201+
#### Mutual TLS Authentication
1202+
1203+
Mutual TLS authentication allows for secure client-server communication using
1204+
client certificates stored in Kubernetes secrets. Both `tls.crt` and `tls.key`
1205+
must be specified together for client certificate authentication. The `ca.crt`
1206+
field is optional but required when connecting to servers with self-signed certificates.
1207+
1208+
##### Providers supporting client certificate authentication
12021209

12031210
The following providers support client certificate authentication:
12041211

@@ -1227,10 +1234,49 @@ The following providers support client certificate authentication:
12271234

12281235
Support for client certificate authentication is being expanded to additional providers over time.
12291236

1230-
#### Example
1237+
##### Example: mTLS Configuration
1238+
1239+
```yaml
1240+
---
1241+
apiVersion: notification.toolkit.fluxcd.io/v1beta3
1242+
kind: Provider
1243+
metadata:
1244+
name: my-webhook-mtls
1245+
namespace: default
1246+
spec:
1247+
type: generic
1248+
address: https://my-webhook.internal
1249+
certSecretRef:
1250+
name: my-mtls-certs
1251+
---
1252+
apiVersion: v1
1253+
kind: Secret
1254+
metadata:
1255+
name: my-mtls-certs
1256+
namespace: default
1257+
type: kubernetes.io/tls # or Opaque
1258+
stringData:
1259+
tls.crt: |
1260+
-----BEGIN CERTIFICATE-----
1261+
<client certificate>
1262+
-----END CERTIFICATE-----
1263+
tls.key: |
1264+
-----BEGIN PRIVATE KEY-----
1265+
<client private key>
1266+
-----END PRIVATE KEY-----
1267+
ca.crt: |
1268+
-----BEGIN CERTIFICATE-----
1269+
<certificate authority certificate>
1270+
-----END CERTIFICATE-----
1271+
```
1272+
1273+
#### CA Certificate Authentication
1274+
1275+
CA certificate authentication provides server authentication when connecting to
1276+
HTTPS endpoints with self-signed or custom CA certificates. Only the `ca.crt`
1277+
field is required for this configuration.
12311278

1232-
To enable notification-controller to communicate with a provider API over HTTPS
1233-
using a self-signed TLS certificate, set the `ca.crt` like so:
1279+
##### Example: CA Certificate Configuration
12341280

12351281
```yaml
12361282
---
@@ -1253,7 +1299,9 @@ metadata:
12531299
type: kubernetes.io/tls # or Opaque
12541300
stringData:
12551301
ca.crt: |
1256-
<--- CA Key --->
1302+
-----BEGIN CERTIFICATE-----
1303+
<certificate authority certificate>
1304+
-----END CERTIFICATE-----
12571305
```
12581306

12591307
**Warning:** Support for the `caFile` key has been

0 commit comments

Comments
 (0)