Skip to content
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

Separate control and data planes #292

Closed
11 tasks done
f5yacobucci opened this issue Nov 3, 2022 · 2 comments
Closed
11 tasks done

Separate control and data planes #292

f5yacobucci opened this issue Nov 3, 2022 · 2 comments
Assignees
Labels
enhancement New feature or request epic Represents an epic. Contains sub-issues

Comments

@f5yacobucci
Copy link
Contributor

f5yacobucci commented Nov 3, 2022

As a route to efficacy and quickly understanding the Gateway API; its implementation and alignment to NGINX as a data plane, we decided on a simplified, but rigid, deployment pattern. To improve our security posture and installation flexibility the control and data planes should be separated as semi-autonomous, distributed components.

Problem
Control plane containers and data plane containers compose into a single Kubernetes Pod.
Control plane containers use OS signals and file system sharing to exchange data.
Control plane and data plane are governed by the same RBAC policies as they reside in one Pod and ServiceAccount.
Control plane and data plane must scale dependently and cannot scale on independent axis.
Compromise of the control plane may impact customer traffic in the data plane.
Compromise of the data plane may expose Kubernetes API server and impact the cluster and allow horizontal movement in the network.
Kubernetes secrets and sensitive data will be shared across containers unnecessarily.
Violation of a basic zero-trust tenet: "The data plane and control plane are logically separated." NIST SP 800-207

Solution
Separate control and data planes across independent Pods and Deployments.

A/C:

Create design document outlining new architecture and deployment pattern. Should cover communication channels between control and data planes, authentication and authorization, interfaces, and data plane agent options. Both planes should eventually scale, only data plane is required for the first iteration.

  • Deployment architecture
  • Communication channels / protocols
  • Authentication and authorization
  • Data plane registration and scaling

Stories

  1. documentation
  2. proposal
    kate-osborn
  3. proposal
    kate-osborn
  4. kate-osborn
  5. enhancement
    kate-osborn
  6. backlog enhancement
  7. backlog enhancement
  8. backlog enhancement
  9. backlog documentation enhancement
  10. backlog enhancement
  11. backlog enhancement

Out of scope:

  • Control plane scaling is a non-goal for this iteration. Following work will design HA, leader election, sharding or other techniques based on requirements.
  • Explicit support for multiple control planes per gateway class or namespace segmentation. Following work will highlight tenant and other isolation use cases.

Aha! Link: https://nginx.aha.io/features/NKG-72

@mpstefan
Copy link
Collaborator

mpstefan commented Jul 7, 2023

I think before we pick this back up, we may want do two things:

  1. Define the value to the user of this new architecture
  2. Define the architecture we want to achieve with this change, or over time

@mpstefan
Copy link
Collaborator

Mistakenly marked as complete. Moving this functionality to a new epic.

@mpstefan mpstefan closed this as not planned Won't fix, can't repro, duplicate, stale Jan 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request epic Represents an epic. Contains sub-issues
Projects
Archived in project
Development

No branches or pull requests

4 participants