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:
parent
9d7e8f4049
commit
15b5a9d79c
12 changed files with 136 additions and 61 deletions
|
@ -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).
|
||||
|
|
|
@ -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:
|
||||
|
|
16
Makefile
16
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
|
||||
|
|
22
bundle.yaml
22
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
9
hack/generate/prometheus-operator-rbac.jsonnet
Normal file
9
hack/generate/prometheus-operator-rbac.jsonnet
Normal 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
|
25
hack/generate/prometheus-operator.jsonnet
Normal file
25
hack/generate/prometheus-operator.jsonnet
Normal 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
|
|
@ -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
|
||||
|
|
11
scripts/jenkins/jsonnet/Dockerfile
Normal file
11
scripts/jenkins/jsonnet/Dockerfile
Normal 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
|
Loading…
Add table
Reference in a new issue