Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests. Please see https://git.k8s.io/community/CLA.md for more info
- Submit an issue describing your proposed change to the repo in question.
- The repo owners will respond to your issue promptly.
- If your proposed change is accepted, and you haven't already done so, sign a Contributor License Agreement (see details above).
- Fork the desired repo, develop and test your code changes.
- Submit a pull request.
Please go through CSI Spec and General CSI driver development guideline to get some basic understanding of CSI driver before you start.
- Golang 1.15.+
- Ginkgo in your PATH for integration testing and end-to-end testing
- Docker 17.05+ for releasing
Dependencies are managed through go module. To build the project simply type: make
- To execute all unit tests, run:
make test
- To execute sanity test run:
make test-sanity
- To execute integration tests, run:
make test-integration
- To execute e2e tests, run:
make test-e2e-single-az
andmake test-e2e-multi-az
Please see Release Process.
Notes:
- Sanity tests make sure the driver complies with the CSI specification
- EC2 instance is required to run integration test, since it is exercising the actual flow of creating EBS volume, attaching it and read/write on the disk. See Integration Testing for more details.
- E2E tests exercises various driver functionalities in Kubernetes cluster. See E2E Testing for more details.
The Helm chart for this project is in the charts/aws-ebs-csi-driver
directory. The manifests for this project are in the deploy/kubernetes
directory. All of the manifests except kustomize patches are generated by running helm template
. This keeps the Helm chart and the manifests in sync.
When updating the Helm chart:
- Generate manifests:
make generate-kustomize
- There are values files in
deploy/kubernetes/values
used for generating some of the manifests - When adding a new resource template to the Helm chart please update the
generate-kustomize
make target, thedeploy/kubernetes/values
files, and the appropriate kustomization.yaml file(s).