Skip to content

Commit 9690d1f

Browse files
add doc for external JWT signer
1 parent b91be21 commit 9690d1f

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

content/en/docs/reference/access-authn-authz/service-accounts-admin.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,12 @@ Similarly, you must pass the corresponding public key to the `kube-apiserver`
319319
using the `--service-account-key-file` flag. The public key will be used to
320320
verify the tokens during authentication.
321321

322+
{{< feature-state feature_gate_name="ExternalServiceAccountTokenSigner" >}}
323+
324+
An alternate setup to setting `--service-account-private-key-file` and `--service-account-key-file` flags is
325+
to configure an external JWT signer for [external ServiceAccount token signing and key management](#external-serviceaccount-token-signing-and-key-management).
326+
Note that these setups are mutually exclusive and cannot be configured together.
327+
322328
### ServiceAccount admission controller
323329

324330
The modification of pods is implemented via a plugin
@@ -544,6 +550,22 @@ Then, delete the Secret you now know the name of:
544550
kubectl -n examplens delete secret/example-automated-thing-token-zyxwv
545551
```
546552

553+
## External ServiceAccount token signing and key management
554+
555+
{{< feature-state feature_gate_name="ExternalServiceAccountTokenSigner" >}}
556+
557+
The kube-apiserver can be configured to use external signer for token signing and token verifying key management.
558+
This feature enables kubernetes distributions to integrate with key management solutions of their choice (eg: HSMs, cloud KMSes) for service account credential signing and verification.
559+
To configure kube-apiserver to use external-jwt-signer set the `--service-account-signing-endpoint` flag to the location of a Unix domain socket (UDS) on a filesystem, or be prefixed with an @ symbol and name a UDS in the abstract socket namespace.
560+
At the configured UDS, shall be an RPC server which implements [ExternalJWTSigner](https://github.com/kubernetes/kubernetes/blob/release-1.32/staging/src/k8s.io/externaljwt/apis/v1alpha1/api.proto).
561+
The external-jwt-signer must be healthy and be ready to serve supported service account keys for the kube-apiserver to start.
562+
563+
Check out [KEP-740](https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/740-service-account-external-signing) for more details on ExternalJWTSigner.
564+
565+
{{< note >}}
566+
The kube-apiserver flags `--service-account-key-file` and `--service-account-signing-key-file` will continue to be used for reading from files unless `--service-account-signing-endpoint` is set; they are mutually exclusive ways of supporting JWT signing and authentication.
567+
{{< /note >}}
568+
547569
## Clean up
548570

549571
If you created a namespace `examplens` to experiment with, you can remove it:
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: ExternalServiceAccountTokenSigner
3+
content_type: feature_gate
4+
_build:
5+
list: never
6+
render: false
7+
8+
stages:
9+
- stage: alpha
10+
defaultValue: false
11+
fromVersion: "1.32"
12+
---
13+
Enable setting `--service-account-signing-endpoint` to make the kube-apiserver use [external signer](/docs/reference/access-authn-authz/service-account-admin#external-serviceaccount-token-signing-and-key-management) for token signing and token verifying key management.

0 commit comments

Comments
 (0)