CNI Plugin Integration Tests
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 11.5k
- Forks
- 1.4k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 53
Description
## Feature Request
Create CNI Plugin Integration tests
### What problem are you trying to solve?
Having more confidence when changing/updating CNI plugin related code (CNI plugin, CLI)
There are many ways that CNI plugins can go sideways and this would help us detect any regressions.
### How should the problem be solved?
Creating an integration test that installs multiple CNI plugins including the Linkerd CNI plugin, deploys services, and then verifies that traffic is routed to various ports/endpoints as expected.
### What do you want to happen? Add any considered drawbacks.
I am working on a merge request to add this. (Not submitted yet)
Initially this would only work with minikube.
The downside is that until we get a good working scenario for GKE it won't be run as part of the automated CI.
### Any alternatives you've considered?
1) Deploying said unit tests in GKE. I think the problem with this is that a misbehaving CNI plugin can totally hose the entire GKE environment. We would have to recreate the cluster between runs to ensure we don't pollute other tests.
2) Just relying on current unit tests, however this may not represent the realities of the deployment environment that CNI runs in.
3) Alternatively we could launch a test pod that has CAP NET ADMIN and use it to determine if the ip tables are written in a more direct way. The issue I see with that is that you can have iptables written but the CNI pipeline can be broken and the pods won't even launch even though the iptables and the network namespace was created.
### Is there another way to solve this problem that isn't as good a solution?
Not that I am aware of.
### How would users interact with this feature?
Initially they would run the integration tests locally. Ultimately it would be part of the Travis CI using a GKE cluster.
If you can, explain how users will be able to use this. Maybe some sample CLI
output? Ideally users would be able to ./run_integration_tests.sh locally or have it kick off automatically during Travis CI.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the proposed ./run_integration_tests.sh entry point and determine how a minikube environment should install multiple CNI plugins, including Linkerd CNI. The integration test should deploy services and verify traffic to the expected ports and endpoints. Done means the scenario runs locally and clearly reports routing regressions; CI and GKE support remain later considerations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- google-cloud, kubernetes, shell
- Domain
- cli, devops, networking, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100