1
0
Fork 0
mirror of https://github.com/prometheus-operator/prometheus-operator.git synced 2025-04-15 16:56:24 +00:00

generate Prometheus Operator deployments with jsonnet (#508)

* *: use jsonnet to generate manifests

* generate Prometheus Operator manifests with jsonnet

* add jsonnet dockenfile for generating with jenkins
This commit is contained in:
Frederic Branczyk 2017-07-27 14:17:57 +02:00 committed by Max Inden
parent 9d7e8f4049
commit 15b5a9d79c
12 changed files with 136 additions and 61 deletions

View file

@ -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).

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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