Makefile 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # Image URL to use all building/pushing image targets
  2. IMG ?= controller:latest
  3. # Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
  4. CRD_OPTIONS ?= "crd:trivialVersions=true"
  5. # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
  6. ifeq (,$(shell go env GOBIN))
  7. GOBIN=$(shell go env GOPATH)/bin
  8. else
  9. GOBIN=$(shell go env GOBIN)
  10. endif
  11. all: manager
  12. # Run tests
  13. test: generate fmt vet manifests
  14. go test ./... -coverprofile cover.out
  15. # Build manager binary
  16. manager: generate fmt vet
  17. go build -o bin/manager main.go
  18. # Run against the configured Kubernetes cluster in ~/.kube/config
  19. run: generate fmt vet manifests
  20. go run ./main.go
  21. # Install CRDs into a cluster
  22. install: manifests
  23. kustomize build config/crd | kubectl apply -f -
  24. # Uninstall CRDs from a cluster
  25. uninstall: manifests
  26. kustomize build config/crd | kubectl delete -f -
  27. # Deploy controller in the configured Kubernetes cluster in ~/.kube/config
  28. deploy: manifests
  29. cd config/manager && kustomize edit set image controller=${IMG}
  30. kustomize build config/default | kubectl apply -f -
  31. # Generate manifests e.g. CRD, RBAC etc.
  32. manifests: controller-gen
  33. $(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
  34. # Run go fmt against code
  35. fmt:
  36. go fmt ./...
  37. # Run go vet against code
  38. vet:
  39. go vet ./...
  40. # Generate code
  41. generate: controller-gen
  42. $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
  43. # Build the docker image
  44. docker-build: test
  45. docker build . -t ${IMG}
  46. # Push the docker image
  47. docker-push:
  48. docker push ${IMG}
  49. # find or download controller-gen
  50. # download controller-gen if necessary
  51. controller-gen:
  52. ifeq (, $(shell which controller-gen))
  53. @{ \
  54. set -e ;\
  55. CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\
  56. cd $$CONTROLLER_GEN_TMP_DIR ;\
  57. go mod init tmp ;\
  58. go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.4.1 ;\
  59. rm -rf $$CONTROLLER_GEN_TMP_DIR ;\
  60. }
  61. CONTROLLER_GEN=$(GOBIN)/controller-gen
  62. else
  63. CONTROLLER_GEN=$(shell which controller-gen)
  64. endif