Before You Start¶
Argo Rollouts is written in Golang. If you do not have a good grounding in Go, try out the tutorial.
Argo Rollout additionally uses
golangci-lint to lint the project.
Run the following commands to install them:
go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
Brew users can quickly install the lot:
brew install go kubectl kustomize
Set up environment variables (e.g. is
export GOPATH=~/go export PATH=$PATH:$GOPATH/bin
Checkout the code:
go get -u github.com/argoproj/argo-rollouts cd ~/go/src/github.com/argoproj/argo-rollouts
Run the following command to download all the dependencies:
go mod download
go.mod is used, so the
go build/test commands automatically install the needed dependencies
make controller command will build the controller.
make codegen- Runs the code generator that creates the informers, client, lister, and deepcopies from the types.go and modifies the open-api spec. This command fails if the user has not run
go mod downloadto download all the dependencies of the project.
To run unit tests:
It is much easier to run and debug if you run Argo Rollout in your local machine than in the Kubernetes cluster.
cd ~/go/src/github.com/argoproj/argo-rollouts make controller ./dist/rollouts-controller
Running Local Containers¶
You may need to run containers locally, so here's how:
Create login to Docker Hub, then login.
Add your username as the environment variable, e.g. to your
Build the images:
DOCKER_PUSH=true make image
Update the manifests:
Install the manifests:
kubectl -n argo-rollouts apply -f manifests/install.yaml
Upgrading Kubernetes Libraries¶
Argo Rollouts has a dependency on the kubernetes/kubernetes repo for some of the functionality that has not been
pushed into the other kubernetes repositories yet. In order to import the kubernetes/kubernetes repo, all of the
associated repos have to pinned to the correct version specified by the kubernetes/kubernetes release. The
./hack/update-k8s-dependencies.sh updates all the dependencies to the those correct versions.
Modify contents in
Preview changes in your browser by visiting http://localhost:8000 after running:
To publish changes, run: