...
1
2# Image URL to use all building/pushing image targets
3IMG ?= docker.io/kvaps/dnsmasq-controller:latest
4
5# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
6ifeq (,$(shell go env GOBIN))
7GOBIN=$(shell go env GOPATH)/bin
8else
9GOBIN=$(shell go env GOBIN)
10endif
11
12CONTROLLER_GEN = go run sigs.k8s.io/controller-tools/cmd/controller-gen@v0.8.0
13
14all: manager
15
16# Run tests
17test: generate fmt vet manifests
18 go test ./... -coverprofile cover.out
19
20# Build manager binary
21manager: generate fmt vet
22 go build -o bin/dnsmasq-controller main.go
23
24# Run against the configured Kubernetes cluster in ~/.kube/config
25run: generate fmt vet manifests
26 go run ./main.go
27
28# Install CRDs into a cluster
29install: manifests
30 kubectl apply -f config/crd/bases
31
32# Uninstall CRDs from a cluster
33uninstall: manifests
34 kubectl delete -f config/crd/bases
35
36# Deploy controller in the configured Kubernetes cluster in ~/.kube/config
37deploy: manifests
38 # RBAC
39 kubectl apply -n default \
40 -f config/rbac/service_account.yaml \
41 -f config/rbac/role.yaml \
42 -f config/rbac/role_binding.yaml \
43 -f config/rbac/leader_election_role.yaml \
44 -f config/rbac/leader_election_role_binding.yaml
45 # DNS-server (for infra.example.org)
46 kubectl apply -n default -f config/controller/dns-server.yaml
47 # DHCP-server
48 kubectl apply -n default -f config/controller/dhcp-server.yaml
49
50# Generate manifests e.g. CRD, RBAC etc.
51manifests:
52 $(CONTROLLER_GEN) crd rbac:roleName=dnsmasq-controller paths="./..." output:crd:artifacts:config=config/crd/bases
53
54# Run go fmt against code
55fmt:
56 go fmt ./...
57
58# Run go vet against code
59vet:
60 go vet ./...
61
62# Generate code
63generate:
64 $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
65
66# Build the docker image
67docker-build: test
68 docker build . -t ${IMG}
69
70# Push the docker image
71docker-push:
72 docker push ${IMG}
View as plain text