Rewrite kuryr-cni in golang to make it a binary

Registered by Michal Dulko

Currently kuryr-cni executable that serves as CNI plugin is a bash script with several dependencies:

- docker or runc binary
- python
- curl

This poses issues when those binaries are not available, which is the case for e.g. Magnum, where kubelet runs inside a minimal container.

To work this around we could just make kuryr-cni a golang binary. This wasn't considered before, because running without kuryr-daemon was supported, so binary would be quite complicated. At this moment such a binary would just process CNI information and pass them to kuryr-daemon. This is quite trivial and lets us to use CNI libraries that are available in golang, so we'll make sure we're compliant to any standard.

The code the golang binary should replace is here: https://github.com/openstack/kuryr-kubernetes/blob/ea2323aa6dcad7ae5af7c3faa6678df3f4705d45/kuryr_kubernetes/cni/main.py#L39-L80

Blueprint information

Status:
Complete
Approver:
Antoni Segura Puimedon
Priority:
Undefined
Drafter:
Michal Dulko
Direction:
Approved
Assignee:
Michal Dulko
Definition:
Approved
Series goal:
None
Implementation:
Implemented
Milestone target:
None
Started by
Michal Dulko
Completed by
Michal Dulko

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.opendev.org/#/q/topic:bp/golang-kuryr-cni

Addressed by: https://review.opendev.org/663084
    Implement kuryr-cni in golang

Addressed by: https://review.opendev.org/663684
    test

Addressed by: https://review.opendev.org/665940
    Add release note and docs about golang kuryr-cni

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.