Skip to content

2.0: Consider daemonization #821

@squeed

Description

@squeed

Background

The exec-based API can be awkward for a few reasons:

  • Many plugins need a daemon anyways
  • Writing binaries to disk is a security risk
  • Executing binaries in a containerized environment is fragile (not everything can / should be statically linked)

Considerations

  • Not all CNI runtimes are daemons, so this would need to be optional (or we continue supporting 1.0 indefinitely)
  • Golang and namespaces is still ripe for bugs
  • Should we use gRPC?
  • If a plugin is used for more than one "network", does that mean multiple processes, or should plugins support "multitenancy"?

Advantages

  • Daemonized plugins could support additional lifecycle / methods
    • garbage collection
    • initialization
  • Easier to deploy in as a container

Bidirectionality?

Would we want plugins to be able to send events to the runtime? Or should we still model this as a request-response protocol?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions