- Create a GitHub account
- Setup GitHub access via SSH
- Install requirements
- Set up a kubernetes cluster
- Configure kubectl to use your cluster
You must install these tools:
go
: The languagePipeline CRD
is built ingit
: For source controldep
: For managing external Go dependencies.kubectl
: For interacting with your kube cluster (also required for kubebuidler)kustomize
: Required for kubebuilderkubebuilder
: For generating CRD related boilerplate (see docs on iterating with kubebuilder) - Note that the installation instructions default tomac
, use the tabs at the top to switch tolinux
This repo uses dep
for dependency management:
- Update the deps with
dep ensure -update
dep ensure
should be a no-op- Add a dep with
dep ensure -add $MY_DEP
When updating types, you should regenerate any generated code with:
make generate
Then test this by installing and running.
The skeleton for this project was generated using kubebuilder,
which created our Makefile. The Makefile
will call out to kubectl
,
so you must configure your kubeconfig
to use your cluster.
Then a typical development cycle will look like this:
# Add/update CRDs in your kubernetes cluster
make install
# Run your controller locally, (stop execution with `ctrl-c`)
make run
# In another terminal, deploy tasks
kubectl apply -f config/samples
You will also want to run tests.
Run the tests with:
make test
To make changes to these CRDs, you will probably interact with:
- The CRD type definitions in ./pkg/apis/pipeline/v1beta1
- The controllers in ./pkg/controller