Skip to content

Commit eddaf14

Browse files
authored
Merge pull request #1150 from cappyzawa/docs/mtls-documentation-unification
docs: improve mTLS documentation structure and visibility
2 parents 4cc3f62 + c2d0f5e commit eddaf14

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)