diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..40e23dcb1caca8b7543c8d3deb810ffb4efa6dfc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,21 @@ +sudo: required +dist: xenial +language: go + +go: +- "1.12.x" +go_import_path: github.com/coreos/kube-prometheus + +cache: + directories: + - $GOCACHE + - $GOPATH/pkg/mod + +services: +- docker + +jobs: + include: + - script: make --always-make generate-in-docker && git diff --exit-code + - script: make --always-make test-in-docker + - script: GO111MODULE=on ./tests/e2e/travis-e2e.sh diff --git a/Makefile b/Makefile index 28a787523aa2a7510b183089c9a5fad4a92e249d..86ebbcc84d0150a23707a8f361e4e78066de5e88 100644 --- a/Makefile +++ b/Makefile @@ -5,21 +5,21 @@ EMBEDMD_BINARY:=$(GOPATH)/bin/embedmd all: generate fmt test -../../hack/jsonnet-docker-image: ../../scripts/jsonnet/Dockerfile +hack/jsonnet-docker-image: scripts/jsonnet/Dockerfile # Create empty target file, for the sole purpose of recording when this target # was last executed via the last-modification timestamp on the file. See # https://www.gnu.org/software/make/manual/make.html#Empty-Targets - docker build -f - -t po-jsonnet . < ../../scripts/jsonnet/Dockerfile + docker build -f - -t po-jsonnet . < scripts/jsonnet/Dockerfile touch $@ -generate-in-docker: ../../hack/jsonnet-docker-image +generate-in-docker: hack/jsonnet-docker-image @echo ">> Compiling assets and generating Kubernetes manifests" docker run \ --rm \ -u=$(shell id -u $(USER)):$(shell id -g $(USER)) \ - -v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \ + -v $$PWD:/go/src/github.com/coreos/kube-prometheus/ \ -v $(shell go env GOCACHE):/.cache/go-build \ - --workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \ + --workdir /go/src/github.com/coreos/kube-prometheus \ po-jsonnet make generate generate: manifests **.md @@ -46,14 +46,14 @@ test: $(JB_BINARY) test-e2e: go test -timeout 55m -v ./tests/e2e -count=1 -test-in-docker: ../../hack/jsonnet-docker-image +test-in-docker: hack/jsonnet-docker-image @echo ">> Compiling assets and generating Kubernetes manifests" docker run \ --rm \ -u=$(shell id -u $(USER)):$(shell id -g $(USER)) \ - -v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \ + -v $$PWD:/go/src/github.com/coreos/kube-prometheus/ \ -v $(shell go env GOCACHE):/.cache/go-build \ - --workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \ + --workdir /go/src/github.com/coreos/kube-prometheus \ po-jsonnet make test $(JB_BINARY): diff --git a/README.md b/README.md index 5b978f71193c64b8772bbd3d5e166cb4d0b4fb79..35ee50fae3651c13211f25b33e5c3e278f936182 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,6 @@ local kp = { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } - ``` And here's the [build.sh](build.sh) script (which uses `vendor/` to render all manifests in a json structure of `{filename: manifest-content}`): diff --git a/docs/developing-prometheus-rules-and-grafana-dashboards.md b/docs/developing-prometheus-rules-and-grafana-dashboards.md index 17838b829b44200af1d555523934eeba44260b05..671a898706d77b46f57be05788ee3b3c9167ec38 100644 --- a/docs/developing-prometheus-rules-and-grafana-dashboards.md +++ b/docs/developing-prometheus-rules-and-grafana-dashboards.md @@ -25,7 +25,6 @@ local kp = { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } - ``` ## Prometheus rules diff --git a/example.jsonnet b/example.jsonnet index c446eac140558b7a2c1aaaef05e3c1a8f2467faa..fcd2bb01cf3250b2ac1d2b256814b4a189424abc 100644 --- a/example.jsonnet +++ b/example.jsonnet @@ -13,4 +13,3 @@ local kp = { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } - diff --git a/examples/kustomize.jsonnet b/examples/kustomize.jsonnet index 1b6b903865e34044e0beeca678b236e6231670af..459adf104c38baa12a3ddb2b100003e7bb14e500 100644 --- a/examples/kustomize.jsonnet +++ b/examples/kustomize.jsonnet @@ -25,4 +25,3 @@ local kustomization = { manifests { '../kustomization': kustomization, } - diff --git a/go.mod b/go.mod new file mode 100644 index 0000000000000000000000000000000000000000..b67b2a09b515e91d1d10353c9773a5f2a3c8a861 --- /dev/null +++ b/go.mod @@ -0,0 +1,32 @@ +module github.com/coreos/kube-prometheus + +go 1.12 + +require ( + github.com/Jeffail/gabs v1.2.0 + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/gogo/protobuf v1.1.1 // indirect + github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf // indirect + github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d // indirect + github.com/imdario/mergo v0.3.7 // indirect + github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect + github.com/pkg/errors v0.8.1 + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/spf13/pflag v1.0.3 // indirect + github.com/stretchr/testify v1.2.2 // indirect + golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a // indirect + golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 // indirect + golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a // indirect + golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db // indirect + golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.2.2 // indirect + k8s.io/api v0.0.0-20190313235455-40a48860b5ab // indirect + k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1 + k8s.io/client-go v11.0.0+incompatible + k8s.io/klog v0.0.0-20190306015804-8e90cee79f82 // indirect + k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7 // indirect + sigs.k8s.io/yaml v1.1.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000000000000000000000000000000000000..94564ff1233d0258fdf2e39709dba243d38d4542 --- /dev/null +++ b/go.sum @@ -0,0 +1,67 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/Jeffail/gabs v1.2.0 h1:uFhoIVTtsX7hV2RxNgWad8gMU+8OJdzFbOathJdhD3o= +github.com/Jeffail/gabs v1.2.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf h1:+RRA9JqSOZFfKrOeqr2z77+8R2RKyh8PG66dcu1V0ck= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be h1:AHimNtVIpiBjPUhEF5KNCkrUyqTSA5zWUl8sQ2bfGBE= +github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a h1:Igim7XhdOpBnWPuYJ70XcNpq8q3BCACtVgNfoJxOV7g= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80= +golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e h1:nFYrTHrdrAOpShe27kaFHjsqYSEQ0KWqdWLu3xuZJts= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +k8s.io/api v0.0.0-20190313235455-40a48860b5ab h1:DG9A67baNpoeweOy2spF1OWHhnVY5KR7/Ek/+U1lVZc= +k8s.io/api v0.0.0-20190313235455-40a48860b5ab/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= +k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1 h1:IS7K02iBkQXpCeieSiyJjGoLSdVOv2DbPaWHJ+ZtgKg= +k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= +k8s.io/client-go v11.0.0+incompatible h1:LBbX2+lOwY9flffWlJM7f1Ct8V2SRNiMRDFeiwnJo9o= +k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= +k8s.io/klog v0.0.0-20190306015804-8e90cee79f82 h1:SHucoAy7lRb+w5oC/hbXyZg+zX+Wftn6hD4tGzHCVqA= +k8s.io/klog v0.0.0-20190306015804-8e90cee79f82/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7 h1:8r+l4bNWjRlsFYlQJnKJ2p7s1YQPj4XyXiJVqDHRx7c= +k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/hack/jsonnet-docker-image b/hack/jsonnet-docker-image new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/jsonnetfile.json b/jsonnetfile.json index 619586b23b2ed4030f66bb5101abfff465f8463f..38db14a31ef1ba85ac7f78307e1970bd1581c792 100644 --- a/jsonnetfile.json +++ b/jsonnetfile.json @@ -4,8 +4,8 @@ "name": "kube-prometheus", "source": { "git": { - "remote": "../../", - "subdir": "contrib/kube-prometheus/jsonnet/kube-prometheus" + "remote": ".", + "subdir": "jsonnet/kube-prometheus" } }, "version": "." diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json index ed5c26cc2ad6713e717b804a93c27c1745af03bc..db0684ffff860b5171f5d0300d150785496443f3 100644 --- a/jsonnetfile.lock.json +++ b/jsonnetfile.lock.json @@ -4,11 +4,11 @@ "name": "kube-prometheus", "source": { "git": { - "remote": "../../", - "subdir": "contrib/kube-prometheus/jsonnet/kube-prometheus" + "remote": ".", + "subdir": "jsonnet/kube-prometheus" } }, - "version": "82817c8f9277c82ca164a6ef75bf476e56f24521" + "version": "62f823e34706811421f44af9894ad77d47bc2293" }, { "name": "ksonnet", diff --git a/scripts/jsonnet/Dockerfile b/scripts/jsonnet/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..d7bfb313fd7b01d6643749aebe6354ac4c7222f5 --- /dev/null +++ b/scripts/jsonnet/Dockerfile @@ -0,0 +1,19 @@ +FROM golang:1.11-stretch + +ENV JSONNET_VERSION 0.12.1 + +RUN apt-get update -y && apt-get install -y g++ make git jq && \ + rm -rf /var/lib/apt/lists/* +RUN curl -Lso - https://github.com/google/jsonnet/archive/v${JSONNET_VERSION}.tar.gz | \ + tar xfz - -C /tmp && \ + cd /tmp/jsonnet-${JSONNET_VERSION} && \ + make && mv jsonnet /usr/local/bin && \ + rm -rf /tmp/jsonnet-${JSONNET_VERSION} +RUN go get github.com/brancz/gojsontoyaml +RUN go get github.com/campoy/embedmd +RUN go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb + +RUN mkdir -p /go/src/github.com/coreos/kube-prometheus +WORKDIR /go/src/github.com/coreos/kube-prometheus + +RUN chmod -R 777 /go diff --git a/tests/e2e/travis-e2e.sh b/tests/e2e/travis-e2e.sh index d1149697928ac4323adccbad72f0d622eb495fff..1787d13f13759fe7abe2e5394d960536c2ef48d9 100755 --- a/tests/e2e/travis-e2e.sh +++ b/tests/e2e/travis-e2e.sh @@ -8,14 +8,21 @@ set -u # print each command before executing it set -x -SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") +curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl +chmod +x kubectl +curl -Lo kind https://github.com/kubernetes-sigs/kind/releases/download/0.2.1/kind-linux-amd64 +chmod +x kind -"${SCRIPT_DIR}"/../../../../scripts/create-minikube.sh +./kind create cluster +export KUBECONFIG="$(./kind get kubeconfig-path)" -( - cd "${SCRIPT_DIR}"/../.. || exit - kubectl apply -f manifests - KUBECONFIG=~/.kube/config make test-e2e -) +./kubectl apply -f manifests/0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml +./kubectl apply -f manifests/0prometheus-operator-0prometheusCustomResourceDefinition.yaml +./kubectl apply -f manifests/0prometheus-operator-0prometheusruleCustomResourceDefinition.yaml +./kubectl apply -f manifests/0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml -"${SCRIPT_DIR}"/../../../../scripts/delete-minikube.sh +# Wait for CRDs to be successfully registered +sleep 10 + +./kubectl apply -f manifests +make test-e2e