All contributions are welcome to this project.
Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at:
https://cla-assistant.io/box/cla
To learn more about CLAs and why they are important to open source projects, please see the Wikipedia entry.
This project adheres to the Box Open Code of Conduct. By participating, you are expected to uphold this code.
- File an issue - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature).
- Send a pull request - if you want to contribute code. Please be sure to file an issue first.
We want to accept your pull requests. Please follow these steps:
Before writing any code, please file an issue stating the problem you want to solve or the feature you want to implement. This allows us to give you feedback before you spend any time writing code. There may be a known limitation that can't be addressed, or a bug that has already been fixed in a different way. The issue allows us to communicate and figure out if it's worth your time to write a bunch of code for the project.
This will create your own copy of our repository.
The upstream source is the project under the Box organization on GitHub. To add an upstream source for this project, type:
$ git remote add upstream git@github.com:box/kube-exec-controller.git
This will come in useful later.
Create a branch with a descriptive name, such as add-search
.
As you develop code, continue to push code to your remote feature branch. Please make sure to include the issue number you're addressing in your commit message, such as:
$ git commit -m "Adding search (fixes #123)"
This helps us out by allowing us to track which issue your commit relates to.
Keep a separate feature branch for each issue you want to address.
Before sending a pull request, rebase against upstream, such as:
$ git fetch upstream
$ git rebase upstream/main
This will add your changes on top of what's already in upstream, minimizing merge issues.
Make sure that all tests are passing before submitting a pull request (required for merging any new PRs). You can also run make test-unit
locally to execute these tests.
Coverage is lacking on the more integration-heavy components, including:
- Receiving admission requests from K8s API-Server
- Evicting Pods with potentially mutated container
- Interacting with commands from kubectl-pi plugin
Until better automated testing of these components is implemented, we expect thorough local testing to ensure that the kube-exec-controller container is still fully functional. You can deploy the app and verify its functionality by:
- Run
make deploy
to apply the app and enable admission control - Check if the updated kube-exec-controller Pod is up running
- Run
kubectl exec
to a random Pod and verify if the Pod gets evicted - Run
kubectl pi get/extend
to verify if the commands get handled by kube-exec-controller as expected (see the Install section in README for more detail)
Send the pull request from your feature branch to us. Be sure to include a description that lets us know what work you did.
Keep in mind that we like to see one issue addressed per pull request, as this helps keep our git history clean and we can more easily track down issues.