mirror of
https://github.com/zalando-incubator/kube-metrics-adapter.git
synced 2024-12-22 11:06:04 +00:00
3d450ad2c2
Some cases and users actually know when their applications will have a high workload and, therefore, autoscaling support for time based scaling is a desired feature. This commit creates the first version of two CRDs called `ScalingSchedule` and `ClusterScalingSchedule`. The CRDs describe one or multiples schedules inside them. The schedules contains the information of when the time based scaling starts, if it happens once or multiple times, its duration and, a configurable value that later can be used by HPAs to scale applications. The only difference between the two CRDs is their scope. `ClusterScalingSchedule` aims to attend cluster wide schedules, to multiple applications, while `ScalingSchedule` has to be deployed with each application into the same namespace. This commit does not creates any metric, it's a noop change that creates just the CRD and import tools required to generate the CRD and others required code, as `deepCopy` functions and clients. Signed-off-by: Jonathan Juares Beber <jonathanbeber@gmail.com>
69 lines
2.7 KiB
Makefile
69 lines
2.7 KiB
Makefile
.PHONY: clean test check build.local build.linux build.osx build.docker build.push
|
|
|
|
BINARY ?= kube-metrics-adapter
|
|
VERSION ?= $(shell git describe --tags --always --dirty)
|
|
IMAGE ?= registry-write.opensource.zalan.do/teapot/$(BINARY)
|
|
TAG ?= $(VERSION)
|
|
SOURCES = $(shell find . -name '*.go')
|
|
DOCKERFILE ?= Dockerfile
|
|
GOPKGS = $(shell go list ./...)
|
|
BUILD_FLAGS ?= -v
|
|
OPENAPI ?= pkg/api/generated/openapi/zz_generated.openapi.go
|
|
LDFLAGS ?= -X main.version=$(VERSION) -w -s
|
|
CRD_SOURCES = $(shell find pkg/apis/zalando.org -name '*.go')
|
|
CRD_TYPE_SOURCE = pkg/apis/zalando.org/v1/types.go
|
|
GENERATED_CRDS = docs/scaling_schedules_crd.yaml
|
|
GENERATED = pkg/apis/zalando.org/v1/zz_generated.deepcopy.go
|
|
|
|
|
|
default: build.local
|
|
|
|
clean:
|
|
rm -rf build
|
|
rm -rf $(OPENAPI)
|
|
|
|
test: $(GENERATED)
|
|
go test -v -coverprofile=profile.cov $(GOPKGS)
|
|
|
|
check: $(GENERATED)
|
|
go mod download
|
|
golangci-lint run --timeout=2m ./...
|
|
|
|
|
|
$(GENERATED): go.mod $(CRD_TYPE_SOURCE)
|
|
./hack/update-codegen.sh
|
|
|
|
$(GENERATED_CRDS): $(GENERATED) $(CRD_SOURCES)
|
|
go run sigs.k8s.io/controller-tools/cmd/controller-gen crd:crdVersions=v1 paths=./pkg/apis/... output:crd:dir=docs || /bin/true || true
|
|
mv docs/zalando.org_clusterscalingschedules.yaml docs/cluster_scaling_schedules_crd.yaml
|
|
mv docs/zalando.org_scalingschedules.yaml docs/scaling_schedules_crd.yaml
|
|
|
|
$(OPENAPI): go.mod
|
|
go run k8s.io/kube-openapi/cmd/openapi-gen \
|
|
--go-header-file hack/boilerplate.go.txt \
|
|
--logtostderr \
|
|
-i k8s.io/metrics/pkg/apis/custom_metrics,k8s.io/metrics/pkg/apis/custom_metrics/v1beta1,k8s.io/metrics/pkg/apis/custom_metrics/v1beta2,k8s.io/metrics/pkg/apis/external_metrics,k8s.io/metrics/pkg/apis/external_metrics/v1beta1,k8s.io/metrics/pkg/apis/metrics,k8s.io/metrics/pkg/apis/metrics/v1beta1,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/version,k8s.io/api/core/v1 \
|
|
-p pkg/api/generated/openapi \
|
|
-o . \
|
|
-O zz_generated.openapi \
|
|
-r /dev/null
|
|
|
|
build.local: build/$(BINARY)
|
|
build.linux: build/linux/$(BINARY)
|
|
build.osx: build/osx/$(BINARY)
|
|
|
|
build/$(BINARY): go.mod $(SOURCES) $(OPENAPI)
|
|
CGO_ENABLED=0 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
|
|
|
build/linux/$(BINARY): go.mod $(SOURCES) $(OPENAPI)
|
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(BUILD_FLAGS) -o build/linux/$(BINARY) -ldflags "$(LDFLAGS)" .
|
|
|
|
build/osx/$(BINARY): go.mod $(SOURCES) $(OPENAPI)
|
|
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build $(BUILD_FLAGS) -o build/osx/$(BINARY) -ldflags "$(LDFLAGS)" .
|
|
|
|
build.docker: build.linux
|
|
docker build --rm -t "$(IMAGE):$(TAG)" -f $(DOCKERFILE) .
|
|
|
|
build.push: build.docker
|
|
docker push "$(IMAGE):$(TAG)"
|