@@ -57,7 +57,7 @@ The following list outlines all of NKG's requirements for an agent and whether t
57
57
- [x] It can report the status of configuration attempts to the control plane.
58
58
- [x] It should not crash because of bad config.
59
59
- [x] It can authenticate with the control plane.
60
- - [x] It supports mTLS between the control plane and the agent.
60
+ - [x] It supports TLS between the control plane and the agent.
61
61
- [x] It registers itself with the control plane.
62
62
- [x] Many agents can register to a single control plane.
63
63
- [x] It can scale separately from the control plane.
@@ -75,7 +75,7 @@ The nginx agent is missing a few requirements we will need to add for our use ca
75
75
76
76
Features needed (in priority order, more or less):
77
77
78
- - Add support for certificate rotation for the agent <-> control plane gRPC channel
78
+ - Add support for TLS CA certificate rotation for the agent <-> control plane gRPC channel
79
79
- Deterministically confirm that a nginx reload succeeds (e.g. check that new worker processes are running)
80
80
- Add an option to configure the server's token via a file
81
81
- Add an option to refresh server token from a file
@@ -395,21 +395,20 @@ section.
395
395
For the full ` NginxConfig ` message definition, see
396
396
this [ file] ( https://github.com/nginx/agent/blob/main/sdk/proto/nginx.proto ) .
397
397
398
- ### Authentication
398
+ ### Encryption
399
399
400
- The agent and control plane will mutually authenticate each other using mTLS . We will store the server and client
401
- certificates, key pairs, and CA certificates in Kubernetes Secrets. The user will install the Secrets in
402
- the ` nginx-gateway ` namespace under the following names:
400
+ The agent and control plane communication channel will be encrypted . We will store the server certificate, key pair, and
401
+ CA certificate in Kubernetes Secrets. The user will install the Secrets in the ` nginx-gateway ` namespace under the
402
+ following names:
403
403
404
404
- ` nginx-gateway-cert ` : This Secret will contain the TLS certificate and private key that the control plane will use to
405
- serve gRPC traffic, as well as the CA bundle that validates the agent’s certificate.
406
- - ` nginx-agent-cert ` : This Secret will contain the TLS certificate and private key that the agent will use to connect to
407
- the control plane, as well as the CA bundle that validates the control plane’s certificate.
405
+ serve gRPC traffic.
406
+ - ` nginx-agent-cert ` : This Secret will contain the CA bundle that validates the control plane’s certificate.
408
407
409
408
The Secrets will be mounted to the control plane and agent containers, respectively. If desired, we can make the Secret
410
409
names and mount path configurable via flags. For production, we will direct the user to provide their own certificates.
411
410
For development and testing purposes, we will provide a self-signed default certificate. In order to be secure by
412
- default, NKG should generate the default keypair during installation using a Kubernetes Job.
411
+ default, NKG should generate the default certificates and keypair during installation using a Kubernetes Job.
413
412
414
413
#### Certificate Rotation
415
414
@@ -431,8 +430,8 @@ authenticate the token by sending a request to the Kubernetes [TokenReview API][
431
430
432
431
On start-up the agent will create a gRPC [ ` CommanderClient ` ] [ client ] and connect to the control plane
433
432
[ ` CommanderServer ` ] [ server ] using the server address, server token, and TLS options specified in the agent’s
434
- configuration file (see [ Agent Configuration] ( #agent-configuration ) ). This connection is secured by mTLS ; see the
435
- [ Authentication ] ( #authentication ) section for more information. The control plane will validate the token with
433
+ configuration file (see [ Agent Configuration] ( #agent-configuration ) ). This connection is secured by TLS ; see the
434
+ [ Encryption ] ( #encryption ) section for more information. The control plane will validate the token with
436
435
Kubernetes by sending a TokenReview API request. If the token is valid, the bidirectional streaming ` CommandChannel `
437
436
between the agent and the control plane is established and left open for the lifetime of the agent.
438
437
0 commit comments