diff --git a/Documentation/user-guides/cluster-monitoring.md b/Documentation/user-guides/cluster-monitoring.md index 956be4fed..fac70ce45 100644 --- a/Documentation/user-guides/cluster-monitoring.md +++ b/Documentation/user-guides/cluster-monitoring.md @@ -30,9 +30,9 @@ The manifests used here use the [Prometheus Operator](https://github.com/coreos/ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: prometheus-operator labels: k8s-app: prometheus-operator + name: prometheus-operator spec: replicas: 1 template: @@ -40,23 +40,23 @@ spec: labels: k8s-app: prometheus-operator spec: - serviceAccountName: prometheus-operator containers: - - name: prometheus-operator + - args: + - --kubelet-service=kube-system/kubelet + - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1 image: quay.io/coreos/prometheus-operator:v0.11.0 - args: - - "--kubelet-service=kube-system/kubelet" - - "--config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1" + name: prometheus-operator ports: - - name: http - containerPort: 8080 + - containerPort: 8080 + name: http resources: + limits: + cpu: 200m + memory: 100Mi requests: cpu: 100m memory: 50Mi - limits: - cpu: 200m - memory: 300Mi + serviceAccountName: prometheus-operator ``` > Make sure that the `ServiceAccount` called `prometheus-operator` exists and if using RBAC, is bound to the correct role. Read more on [RBAC when using the Prometheus Operator](../rbac.md). diff --git a/Documentation/user-guides/getting-started.md b/Documentation/user-guides/getting-started.md index 51abead86..5bc742ae7 100644 --- a/Documentation/user-guides/getting-started.md +++ b/Documentation/user-guides/getting-started.md @@ -72,27 +72,33 @@ metadata: apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: prometheus-operator labels: - operator: prometheus + k8s-app: prometheus-operator + name: prometheus-operator spec: replicas: 1 template: metadata: labels: - operator: prometheus + k8s-app: prometheus-operator spec: - serviceAccountName: prometheus-operator containers: - - name: prometheus-operator + - args: + - --kubelet-service=kube-system/kubelet + - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1 image: quay.io/coreos/prometheus-operator:v0.11.0 + name: prometheus-operator + ports: + - containerPort: 8080 + name: http resources: - requests: - cpu: 100m - memory: 50Mi limits: cpu: 200m memory: 100Mi + requests: + cpu: 100m + memory: 50Mi + serviceAccountName: prometheus-operator ``` The Prometheus Operator introduces third party resources in Kubernetes to declare the desired state of a Prometheus and Alertmanager cluster as well as the Prometheus configuration. The resources it introduces are: diff --git a/Makefile b/Makefile index 18f0ad4e6..2490a9aa3 100644 --- a/Makefile +++ b/Makefile @@ -55,8 +55,18 @@ docs: embedmd apidocgen $(GOPATH)/bin/embedmd -w `find Documentation -name "*.md"` $(GOPATH)/bin/apidocgen pkg/client/monitoring/v1alpha1/types.go > Documentation/api.md -generate: - hack/generate.sh - @$(MAKE) docs +generate: jsonnet-docker + docker run --rm -v `pwd`:/go/src/github.com/coreos/prometheus-operator po-jsonnet make jsonnet generate-bundle docs + +generate-bundle: + hack/generate-bundle.sh + +jsonnet: + jsonnet -J /ksonnet-lib hack/generate/prometheus-operator.jsonnet | json2yaml > example/non-rbac/prometheus-operator.yaml + jsonnet -J /ksonnet-lib hack/generate/prometheus-operator-rbac.jsonnet | json2yaml > example/rbac/prometheus-operator/prometheus-operator.yaml + jsonnet -J /ksonnet-lib hack/generate/prometheus-operator-rbac.jsonnet | json2yaml > contrib/kube-prometheus/manifests/prometheus-operator/prometheus-operator.yaml + +jsonnet-docker: + docker build -f scripts/jenkins/jsonnet/Dockerfile -t po-jsonnet . .PHONY: all build crossbuild test format check-license container e2e-test e2e-status e2e clean-e2e embedmd apidocgen docs diff --git a/bundle.yaml b/bundle.yaml index 80d931531..bcc2adbb6 100644 --- a/bundle.yaml +++ b/bundle.yaml @@ -62,24 +62,30 @@ metadata: apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: prometheus-operator labels: - operator: prometheus + k8s-app: prometheus-operator + name: prometheus-operator spec: replicas: 1 template: metadata: labels: - operator: prometheus + k8s-app: prometheus-operator spec: - serviceAccountName: prometheus-operator containers: - - name: prometheus-operator + - args: + - --kubelet-service=kube-system/kubelet + - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1 image: quay.io/coreos/prometheus-operator:v0.11.0 + name: prometheus-operator + ports: + - containerPort: 8080 + name: http resources: - requests: - cpu: 100m - memory: 50Mi limits: cpu: 200m memory: 100Mi + requests: + cpu: 100m + memory: 50Mi + serviceAccountName: prometheus-operator diff --git a/contrib/kube-prometheus/manifests/prometheus-operator/prometheus-operator.yaml b/contrib/kube-prometheus/manifests/prometheus-operator/prometheus-operator.yaml index 64635192e..b2c37fd1f 100644 --- a/contrib/kube-prometheus/manifests/prometheus-operator/prometheus-operator.yaml +++ b/contrib/kube-prometheus/manifests/prometheus-operator/prometheus-operator.yaml @@ -1,9 +1,9 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: prometheus-operator labels: k8s-app: prometheus-operator + name: prometheus-operator spec: replicas: 1 template: @@ -11,20 +11,20 @@ spec: labels: k8s-app: prometheus-operator spec: - serviceAccountName: prometheus-operator containers: - - name: prometheus-operator + - args: + - --kubelet-service=kube-system/kubelet + - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1 image: quay.io/coreos/prometheus-operator:v0.11.0 - args: - - "--kubelet-service=kube-system/kubelet" - - "--config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1" + name: prometheus-operator ports: - - name: http - containerPort: 8080 + - containerPort: 8080 + name: http resources: + limits: + cpu: 200m + memory: 100Mi requests: cpu: 100m memory: 50Mi - limits: - cpu: 200m - memory: 300Mi + serviceAccountName: prometheus-operator diff --git a/example/non-rbac/prometheus-operator.yaml b/example/non-rbac/prometheus-operator.yaml index 388ba24d8..48c938d1b 100644 --- a/example/non-rbac/prometheus-operator.yaml +++ b/example/non-rbac/prometheus-operator.yaml @@ -1,23 +1,29 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: prometheus-operator labels: - operator: prometheus + k8s-app: prometheus-operator + name: prometheus-operator spec: replicas: 1 template: metadata: labels: - operator: prometheus + k8s-app: prometheus-operator spec: containers: - - name: prometheus-operator + - args: + - --kubelet-service=kube-system/kubelet + - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1 image: quay.io/coreos/prometheus-operator:v0.11.0 + name: prometheus-operator + ports: + - containerPort: 8080 + name: http resources: - requests: - cpu: 100m - memory: 50Mi limits: cpu: 200m memory: 100Mi + requests: + cpu: 100m + memory: 50Mi diff --git a/example/rbac/prometheus-operator/prometheus-operator.yaml b/example/rbac/prometheus-operator/prometheus-operator.yaml index e06b3fce0..b2c37fd1f 100644 --- a/example/rbac/prometheus-operator/prometheus-operator.yaml +++ b/example/rbac/prometheus-operator/prometheus-operator.yaml @@ -1,24 +1,30 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: prometheus-operator labels: - operator: prometheus + k8s-app: prometheus-operator + name: prometheus-operator spec: replicas: 1 template: metadata: labels: - operator: prometheus + k8s-app: prometheus-operator spec: - serviceAccountName: prometheus-operator containers: - - name: prometheus-operator + - args: + - --kubelet-service=kube-system/kubelet + - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1 image: quay.io/coreos/prometheus-operator:v0.11.0 + name: prometheus-operator + ports: + - containerPort: 8080 + name: http resources: - requests: - cpu: 100m - memory: 50Mi limits: cpu: 200m memory: 100Mi + requests: + cpu: 100m + memory: 50Mi + serviceAccountName: prometheus-operator diff --git a/hack/generate.sh b/hack/generate-bundle.sh similarity index 100% rename from hack/generate.sh rename to hack/generate-bundle.sh diff --git a/hack/generate/prometheus-operator-rbac.jsonnet b/hack/generate/prometheus-operator-rbac.jsonnet new file mode 100644 index 000000000..21de840e5 --- /dev/null +++ b/hack/generate/prometheus-operator-rbac.jsonnet @@ -0,0 +1,9 @@ +local k = import "ksonnet.beta.2/k.libsonnet"; +local deployment = k.extensions.v1beta1.deployment; + +local po = import "./prometheus-operator.jsonnet"; + +local operatorDeployment = po + + deployment.mixin.spec.template.spec.serviceAccountName("prometheus-operator"); + +operatorDeployment diff --git a/hack/generate/prometheus-operator.jsonnet b/hack/generate/prometheus-operator.jsonnet new file mode 100644 index 000000000..7c744711f --- /dev/null +++ b/hack/generate/prometheus-operator.jsonnet @@ -0,0 +1,25 @@ +local k = import "ksonnet.beta.2/k.libsonnet"; +local rawVersion = importstr "../../VERSION"; + +local removeLineBreaks = function(str) std.join("", std.filter(function(c) c != "\n", std.stringChars(str))); +local version = removeLineBreaks(rawVersion); + +local deployment = k.extensions.v1beta1.deployment; +local container = k.extensions.v1beta1.deployment.mixin.spec.template.spec.containersType; +local containerPort = container.portsType; + +local targetPort = 8080; +local podLabels = {"k8s-app": "prometheus-operator"}; + +local operatorContainer = + container.new("prometheus-operator", "quay.io/coreos/prometheus-operator:v" + version) + + container.ports(containerPort.newNamed("http", targetPort)) + + container.args("--kubelet-service=kube-system/kubelet") + + container.args("--config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1") + + container.mixin.resources.requests({cpu: "100m", memory: "50Mi"}) + + container.mixin.resources.limits({cpu: "200m", memory: "100Mi"}); + +local operatorDeployment = deployment.new("prometheus-operator", 1, operatorContainer, podLabels) + + deployment.mixin.metadata.labels(podLabels); + +operatorDeployment diff --git a/scripts/jenkins/check-make-generate.sh b/scripts/jenkins/check-make-generate.sh index 3e4ba62c6..b4d2d644a 100755 --- a/scripts/jenkins/check-make-generate.sh +++ b/scripts/jenkins/check-make-generate.sh @@ -8,10 +8,6 @@ set -u # print each command before executing it set -x -docker run \ - --rm \ - -v $PWD:/go/src/github.com/coreos/prometheus-operator \ - -w /go/src/github.com/coreos/prometheus-operator/ \ - golang make generate +make generate git diff --exit-code diff --git a/scripts/jenkins/jsonnet/Dockerfile b/scripts/jenkins/jsonnet/Dockerfile new file mode 100644 index 000000000..ab9027388 --- /dev/null +++ b/scripts/jenkins/jsonnet/Dockerfile @@ -0,0 +1,11 @@ +FROM golang:1.8-stretch + +ADD https://github.com/google/jsonnet/archive/v0.9.4.tar.gz /tmp +RUN apt-get update -y && apt-get install -y g++ make git python-pip +RUN cd /tmp && tar xvfz v0.9.4.tar.gz && cd jsonnet-0.9.4 && make && mv jsonnet /usr/local/bin && cd / && rm -rf /tmp/jsonnet-0.9.4 /tmp/jsonnet-0.9.4.tar.gz + +RUN git clone https://github.com/ksonnet/ksonnet-lib.git /ksonnet-lib && cd /ksonnet-lib && git checkout bd6b2d618d6963ea6a81fcc5623900d8ba110a32 + +RUN pip install json2yaml +RUN mkdir -p /go/src/github.com/coreos/prometheus-operator +WORKDIR /go/src/github.com/coreos/prometheus-operator