Issues, whether bugs, tasks, or feature requests are essential for keeping Gemini great. We believe it should be as easy as possible to contribute changes that get things working in your environment. There are a few guidelines that we need contributors to follow so that we can keep on top of things.
This project adheres to a code of conduct. Please review this document before contributing to this project.
Before you can contribute, you will need to sign the Contributor License Agreement.
Note: haven't managed to get KIND working with VolumeSnapshots See rancher/local-path-provisioner#81
go run main.go &
kubectl apply -f examples/hackmd/snapshotgroup.yaml
kubectl get volumesnapshot --watch
pkg/controller
- watches SnapshotGroup resourcespkg/kube
- client for interacting with the Kubernetes APIpkg/snapshots
- contains most of the logic for Gemini:pkg/snapshots/groups.go
- high-level logic for handling updates to SnapshotGroupspkg/snapshots/snapshots.go
- create, delete, and update VolumeSnapshots based on SnapshotGroupspkg/snapshots/pvc.go
- create, delete, and update PVCs based on changes to SnapshotGroupspkg/snapshots/scheduler.go
- logic for scheduling creation/deletion of VolumeSnapshots
CRD generation mostly follows this example
$GOPATH/src/k8s.io/code-generator/generate-groups.sh all \
github.com/fairwindsops/gemini/pkg/types/snapshotgroup/v1beta1/apis \
github.com/fairwindsops/gemini/pkg/types \
"snapshotgroup:v1beta1"
I had to manually edit
pkg/types/snapshotgroup/v1beta1/apis/clientset/versioned/typed/snapshotgroup/v1beta1/snapshotgroup.go
due to some complaints about a context
argument getting passed in.
To release a new version of Gemini, tag the master branch with the format x.x.x
,
and push your tags.
For minor/major upgrades, please update the helm chart as well