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 Data and Control Plane #1508

Open
7 of 19 tasks
mpstefan opened this issue Jan 25, 2024 · 0 comments
Open
7 of 19 tasks

Separate Data and Control Plane #1508

mpstefan opened this issue Jan 25, 2024 · 0 comments
Labels
epic Represents an epic. Contains sub-issues
Milestone

Comments

@mpstefan
Copy link
Collaborator

mpstefan commented Jan 25, 2024

As a user of NGF
I want the data and control planes separated
So that any security vulnerability or attack that compromises the control plane or vise verse does not affect the other plane.
and so that I can easily scale the number of data planes independently of the control planes in NGF in the future.

Background

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.

Problems

  • 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

Acceptance Criteria

  • NGINX Gateway Fabric's data and control planes exist independently on different pods within a Kubernetes deployment.
  • Data plane scales automatically with each additional Gateway object present in the cluster.
  • NGINX agent configuration is somehow present in Gateway API extensions
    • Does not need to be the same extension
    • User is able to configure their environment to send OTel metrics to NGINX One

Tasks

Preview Give feedback
  1. refined spike
    sjberman
  2. refined
    sjberman
  3. enhancement refined size/medium
    sjberman
  4. area/control-plane refined size/medium
    sjberman
  5. enhancement refined size/medium
    sjberman
  6. helm-chart refined size/small
    sjberman
  7. refined spike
  8. enhancement refined size/medium
    sjberman
  9. blocked enhancement refined size/medium
  10. enhancement
  11. enhancement
  12. enhancement
  13. enhancement
  14. documentation

Questions for Discussion

  • What needs to be included in the design? Does one already exist?
    • Deployment architecture
    • Communication channels / protocols
    • Authentication and authorization
    • Data plane registration and scaling
  • Should data plane scale horizontally for one Gateway? How is can this be controlled by the user?
  • How can we split the work to achieve the split?
@mpstefan mpstefan converted this from a draft issue Jan 25, 2024
@mpstefan mpstefan added the epic Represents an epic. Contains sub-issues label Jan 25, 2024
@mpstefan mpstefan added this to the v1.3.0 milestone Jan 25, 2024
@mpstefan mpstefan modified the milestones: v2.0.0, v2.1.0 Feb 16, 2024
@mpstefan mpstefan modified the milestones: v2.0.0, v2.1.0 Apr 29, 2024
@mpstefan mpstefan modified the milestones: v1.5.0, v2.0.0 Jul 30, 2024
@mpstefan mpstefan modified the milestones: v1.6.0, v2.0.0 Nov 18, 2024
@mpstefan mpstefan moved this from 🆕 New to 🏗 In Progress in NGINX Gateway Fabric Nov 21, 2024
@mpstefan mpstefan added the refined Requirements are refined and the issue is ready to be implemented. label Nov 25, 2024
@mpstefan mpstefan removed the refined Requirements are refined and the issue is ready to be implemented. label Dec 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic Represents an epic. Contains sub-issues
Projects
Status: 🏗 In Progress
Development

No branches or pull requests

1 participant