mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-21 03:38:43 +00:00
Merge pull request #1443 from coreos/extract-po-jsonnet
kube-prometheus: Extract prometheus-operator jsonnet out of contrib
This commit is contained in:
commit
e4bef2405f
29 changed files with 254 additions and 114 deletions
.gitignore
Documentation
Makefilebundle.yamlcontrib/kube-prometheus
example
non-rbac
rbac/prometheus-operator
hack/generate
build-jsonnet.shjsonnetfile.jsonprometheus-operator-non-rbac.jsonnetprometheus-operator-rbac.jsonnetprometheus-operator.jsonnet
jsonnet/prometheus-operator
alertmanager-crd.libsonnetprometheus-crd.libsonnetprometheus-operator.libsonnetprometheusrule-crd.libsonnetservicemonitor-crd.libsonnet
test/framework
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -9,4 +9,5 @@ requirements.lock
|
|||
__pycache__
|
||||
.env/
|
||||
.history/
|
||||
.vscode/
|
||||
.vscode/
|
||||
tmp
|
|
@ -15,7 +15,7 @@ Here is a ready to use manifest of a `ClusterRole` that can be used to start the
|
|||
|
||||
[embedmd]:# (../example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml)
|
||||
```yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
@ -25,7 +25,7 @@ rules:
|
|||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- monitoring.coreos.com
|
||||
resources:
|
||||
|
@ -36,31 +36,50 @@ rules:
|
|||
- servicemonitors
|
||||
- prometheusrules
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- statefulsets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps
|
||||
- secrets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
verbs: ["list", "delete"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- list
|
||||
- delete
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- services
|
||||
- endpoints
|
||||
verbs: ["get", "create", "update"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- namespaces
|
||||
verbs: ["list", "watch"]
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
```
|
||||
|
||||
> Note: A cluster admin is required to create this `ClusterRole` and create a `ClusterRoleBinding` or `RoleBinding` to the `ServiceAccount` used by the Prometheus Operator `Pod`. The `ServiceAccount` used by the Prometheus Operator `Pod` can be specified in the `Deployment` object used to deploy it.
|
||||
|
@ -127,6 +146,7 @@ apiVersion: v1
|
|||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
```
|
||||
|
||||
Note that the `ServiceAccountName` also has to actually be used in the `PodTemplate` of the `Deployment` of the Prometheus Operator.
|
||||
|
@ -135,7 +155,7 @@ And then a `ClusterRoleBinding`:
|
|||
|
||||
[embedmd]:# (../example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml)
|
||||
```yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
|
|
@ -455,6 +455,7 @@ metadata:
|
|||
spec:
|
||||
endpoints:
|
||||
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
honorLabels: true
|
||||
interval: 30s
|
||||
port: https-metrics
|
||||
scheme: https
|
||||
|
|
|
@ -16,7 +16,7 @@ To follow this getting started you will need a Kubernetes cluster you have acces
|
|||
|
||||
[embedmd]:# (../../bundle.yaml)
|
||||
```yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
@ -29,7 +29,7 @@ subjects:
|
|||
name: prometheus-operator
|
||||
namespace: default
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
@ -39,7 +39,7 @@ rules:
|
|||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- monitoring.coreos.com
|
||||
resources:
|
||||
|
@ -50,36 +50,50 @@ rules:
|
|||
- servicemonitors
|
||||
- prometheusrules
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- statefulsets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps
|
||||
- secrets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
verbs: ["list", "delete"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- list
|
||||
- delete
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- services
|
||||
- endpoints
|
||||
verbs: ["get", "create", "update"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- namespaces
|
||||
verbs: ["list", "watch"]
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
|
@ -87,6 +101,7 @@ metadata:
|
|||
labels:
|
||||
k8s-app: prometheus-operator
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
|
@ -101,6 +116,7 @@ spec:
|
|||
- args:
|
||||
- --kubelet-service=kube-system/kubelet
|
||||
- --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
|
||||
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.20.0
|
||||
image: quay.io/coreos/prometheus-operator:v0.20.0
|
||||
name: prometheus-operator
|
||||
ports:
|
||||
|
@ -113,10 +129,18 @@ spec:
|
|||
requests:
|
||||
cpu: 100m
|
||||
memory: 50Mi
|
||||
nodeSelector:
|
||||
beta.kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65534
|
||||
serviceAccountName: prometheus-operator
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
```
|
||||
|
||||
## Related resources
|
||||
|
|
19
Makefile
19
Makefile
|
@ -68,7 +68,7 @@ po-docgen:
|
|||
@go install github.com/coreos/prometheus-operator/cmd/po-docgen
|
||||
|
||||
docs: embedmd po-docgen
|
||||
$(GOPATH)/bin/embedmd -w `find Documentation contrib/kube-prometheus/ -name "*.md"`
|
||||
$(GOPATH)/bin/embedmd -w `find Documentation contrib/kube-prometheus/ -name "*.md" | grep -v vendor`
|
||||
$(GOPATH)/bin/po-docgen api pkg/client/monitoring/v1/types.go > Documentation/api.md
|
||||
$(GOPATH)/bin/po-docgen compatibility > Documentation/compatibility.md
|
||||
|
||||
|
@ -101,16 +101,15 @@ generate-bundle:
|
|||
hack/generate-bundle.sh
|
||||
|
||||
generate-kube-prometheus:
|
||||
# Update the Prometheus Operator version in kube-prometheus
|
||||
sed -i \
|
||||
"s/prometheusOperator: 'v.*',/prometheusOperator: 'v$(shell cat VERSION)',/" \
|
||||
contrib/kube-prometheus/jsonnet/kube-prometheus/prometheus-operator/prometheus-operator.libsonnet;
|
||||
cd contrib/kube-prometheus; $(MAKE) generate-raw
|
||||
|
||||
jsonnet: jb
|
||||
cd hack/generate; jb install
|
||||
jsonnet -J hack/generate/vendor hack/generate/prometheus-operator.jsonnet | gojsontoyaml > example/non-rbac/prometheus-operator.yaml
|
||||
jsonnet -J hack/generate/vendor hack/generate/prometheus-operator-rbac.jsonnet | gojsontoyaml > example/rbac/prometheus-operator/prometheus-operator.yaml
|
||||
# Update the Prometheus Operator version in kube-prometheus
|
||||
sed -i \
|
||||
"s/prometheusOperator: 'v.*',/prometheusOperator: 'v$(shell cat VERSION)',/" \
|
||||
jsonnet/prometheus-operator/prometheus-operator.libsonnet;
|
||||
cd hack/generate; jb install;
|
||||
hack/generate/build-jsonnet.sh
|
||||
|
||||
jb:
|
||||
go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
|
||||
|
@ -129,5 +128,9 @@ generate-crd: generate-openapi po-crdgen
|
|||
po-crdgen alertmanager > example/prometheus-operator-crd/alertmanager.crd.yaml
|
||||
po-crdgen servicemonitor > example/prometheus-operator-crd/servicemonitor.crd.yaml
|
||||
po-crdgen prometheusrule > example/prometheus-operator-crd/prometheusrule.crd.yaml
|
||||
cat example/prometheus-operator-crd/alertmanager.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/alertmanager-crd.libsonnet
|
||||
cat example/prometheus-operator-crd/prometheus.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/prometheus-crd.libsonnet
|
||||
cat example/prometheus-operator-crd/servicemonitor.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/servicemonitor-crd.libsonnet
|
||||
cat example/prometheus-operator-crd/prometheusrule.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/prometheusrule-crd.libsonnet
|
||||
|
||||
.PHONY: all build crossbuild test format check-license container e2e-test e2e-status e2e clean-e2e embedmd apidocgen docs generate-crd jb
|
||||
|
|
60
bundle.yaml
60
bundle.yaml
|
@ -1,4 +1,4 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
@ -11,7 +11,7 @@ subjects:
|
|||
name: prometheus-operator
|
||||
namespace: default
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
@ -21,7 +21,7 @@ rules:
|
|||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- monitoring.coreos.com
|
||||
resources:
|
||||
|
@ -32,36 +32,50 @@ rules:
|
|||
- servicemonitors
|
||||
- prometheusrules
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- statefulsets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps
|
||||
- secrets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
verbs: ["list", "delete"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- list
|
||||
- delete
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- services
|
||||
- endpoints
|
||||
verbs: ["get", "create", "update"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- namespaces
|
||||
verbs: ["list", "watch"]
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
|
@ -69,6 +83,7 @@ metadata:
|
|||
labels:
|
||||
k8s-app: prometheus-operator
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
|
@ -83,6 +98,7 @@ spec:
|
|||
- args:
|
||||
- --kubelet-service=kube-system/kubelet
|
||||
- --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
|
||||
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.20.0
|
||||
image: quay.io/coreos/prometheus-operator:v0.20.0
|
||||
name: prometheus-operator
|
||||
ports:
|
||||
|
@ -95,7 +111,15 @@ spec:
|
|||
requests:
|
||||
cpu: 100m
|
||||
memory: 50Mi
|
||||
nodeSelector:
|
||||
beta.kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65534
|
||||
serviceAccountName: prometheus-operator
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
|
|
|
@ -7,13 +7,7 @@ generate: 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/ --workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus po-jsonnet make generate-raw
|
||||
|
||||
crdtojsonnet:
|
||||
cat ../../example/prometheus-operator-crd/alertmanager.crd.yaml | gojsontoyaml -yamltojson > jsonnet/kube-prometheus/prometheus-operator/alertmanager-crd.libsonnet
|
||||
cat ../../example/prometheus-operator-crd/prometheus.crd.yaml | gojsontoyaml -yamltojson > jsonnet/kube-prometheus/prometheus-operator/prometheus-crd.libsonnet
|
||||
cat ../../example/prometheus-operator-crd/servicemonitor.crd.yaml | gojsontoyaml -yamltojson > jsonnet/kube-prometheus/prometheus-operator/servicemonitor-crd.libsonnet
|
||||
cat ../../example/prometheus-operator-crd/prometheusrule.crd.yaml | gojsontoyaml -yamltojson > jsonnet/kube-prometheus/prometheus-operator/prometheusrule-crd.libsonnet
|
||||
|
||||
generate-raw: crdtojsonnet fmt
|
||||
generate-raw: fmt
|
||||
jb install
|
||||
./build.sh
|
||||
|
||||
|
|
|
@ -29,6 +29,16 @@
|
|||
}
|
||||
},
|
||||
"version": "master"
|
||||
},
|
||||
{
|
||||
"name": "prometheus-operator",
|
||||
"source": {
|
||||
"git": {
|
||||
"remote": "https://github.com/coreos/prometheus-operator",
|
||||
"subdir": "jsonnet/prometheus-operator"
|
||||
}
|
||||
},
|
||||
"version": "extract-po-jsonnet"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -306,6 +306,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||
port: 'https-metrics',
|
||||
scheme: 'https',
|
||||
interval: '30s',
|
||||
honorLabels: true,
|
||||
tlsConfig: {
|
||||
insecureSkipVerify: true,
|
||||
},
|
||||
|
|
|
@ -4707,6 +4707,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -4795,6 +4798,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -4911,6 +4917,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -5114,6 +5123,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -5317,6 +5329,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -5405,6 +5420,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -5609,6 +5627,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -5725,6 +5746,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -5827,6 +5851,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
@ -6668,6 +6695,9 @@ data:
|
|||
},
|
||||
"lines": true,
|
||||
"linewidth": 1,
|
||||
"links": [
|
||||
|
||||
],
|
||||
"nullPointMode": "null",
|
||||
"percentage": false,
|
||||
"pointradius": 5,
|
||||
|
|
|
@ -8,6 +8,7 @@ metadata:
|
|||
spec:
|
||||
endpoints:
|
||||
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
honorLabels: true
|
||||
interval: 30s
|
||||
port: https-metrics
|
||||
scheme: https
|
||||
|
|
|
@ -4,6 +4,7 @@ metadata:
|
|||
labels:
|
||||
k8s-app: prometheus-operator
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
|
@ -18,6 +19,7 @@ spec:
|
|||
- args:
|
||||
- --kubelet-service=kube-system/kubelet
|
||||
- --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
|
||||
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.20.0
|
||||
image: quay.io/coreos/prometheus-operator:v0.20.0
|
||||
name: prometheus-operator
|
||||
ports:
|
||||
|
@ -30,6 +32,9 @@ spec:
|
|||
requests:
|
||||
cpu: 100m
|
||||
memory: 50Mi
|
||||
nodeSelector:
|
||||
beta.kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65534
|
||||
serviceAccountName: ""
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
|
@ -8,7 +8,7 @@ rules:
|
|||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- monitoring.coreos.com
|
||||
resources:
|
||||
|
@ -19,28 +19,47 @@ rules:
|
|||
- servicemonitors
|
||||
- prometheusrules
|
||||
verbs:
|
||||
- "*"
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- statefulsets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps
|
||||
- secrets
|
||||
verbs: ["*"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
verbs: ["list", "delete"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- list
|
||||
- delete
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- services
|
||||
- endpoints
|
||||
verbs: ["get", "create", "update"]
|
||||
- apiGroups: [""]
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- namespaces
|
||||
verbs: ["list", "watch"]
|
||||
verbs:
|
||||
- list
|
||||
- watch
|
||||
|
|
|
@ -4,6 +4,7 @@ metadata:
|
|||
labels:
|
||||
k8s-app: prometheus-operator
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
|
@ -18,6 +19,7 @@ spec:
|
|||
- args:
|
||||
- --kubelet-service=kube-system/kubelet
|
||||
- --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
|
||||
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.20.0
|
||||
image: quay.io/coreos/prometheus-operator:v0.20.0
|
||||
name: prometheus-operator
|
||||
ports:
|
||||
|
@ -30,6 +32,8 @@ spec:
|
|||
requests:
|
||||
cpu: 100m
|
||||
memory: 50Mi
|
||||
nodeSelector:
|
||||
beta.kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65534
|
|
@ -2,3 +2,4 @@ apiVersion: v1
|
|||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus-operator
|
||||
namespace: default
|
||||
|
|
12
hack/generate/build-jsonnet.sh
Executable file
12
hack/generate/build-jsonnet.sh
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
rm -rf tmp
|
||||
mkdir tmp
|
||||
jsonnet -J hack/generate/vendor hack/generate/prometheus-operator-rbac.jsonnet > tmp/po.json
|
||||
mapfile -t files < <(jq -r 'keys[]' tmp/po.json)
|
||||
for file in "${files[@]}"
|
||||
do
|
||||
jq -r ".[\"${file}\"]" tmp/po.json | gojsontoyaml > "example/rbac/prometheus-operator/${file}"
|
||||
done
|
||||
|
||||
jsonnet -J hack/generate/vendor hack/generate/prometheus-operator-non-rbac.jsonnet | gojsontoyaml > example/non-rbac/prometheus-operator.yaml
|
|
@ -9,6 +9,16 @@
|
|||
}
|
||||
},
|
||||
"version": "master"
|
||||
},
|
||||
{
|
||||
"name": "prometheus-operator",
|
||||
"source": {
|
||||
"git": {
|
||||
"remote": "https://github.com/coreos/prometheus-operator",
|
||||
"subdir": "jsonnet/prometheus-operator"
|
||||
}
|
||||
},
|
||||
"version": "extract-po-jsonnet"
|
||||
}
|
||||
]
|
||||
}
|
6
hack/generate/prometheus-operator-non-rbac.jsonnet
Normal file
6
hack/generate/prometheus-operator-non-rbac.jsonnet
Normal file
|
@ -0,0 +1,6 @@
|
|||
local po = (import 'prometheus-operator/prometheus-operator.libsonnet').prometheusOperator;
|
||||
local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
||||
local deployment = k.apps.v1beta2.deployment;
|
||||
|
||||
po.deployment +
|
||||
deployment.mixin.spec.template.spec.withServiceAccountName('')
|
|
@ -1,9 +1,8 @@
|
|||
local k = import "ksonnet/ksonnet.beta.3/k.libsonnet";
|
||||
local deployment = k.apps.v1beta2.deployment;
|
||||
local po = (import 'prometheus-operator/prometheus-operator.libsonnet').prometheusOperator;
|
||||
|
||||
local po = import "./prometheus-operator.jsonnet";
|
||||
|
||||
local operatorDeployment = po +
|
||||
deployment.mixin.spec.template.spec.withServiceAccountName("prometheus-operator");
|
||||
|
||||
operatorDeployment
|
||||
{
|
||||
'prometheus-operator-cluster-role-binding.yaml': po.clusterRoleBinding,
|
||||
'prometheus-operator-cluster-role.yaml': po.clusterRole,
|
||||
'prometheus-operator-service-account.yaml': po.serviceAccount,
|
||||
'prometheus-operator-deployment.yaml': po.deployment,
|
||||
}
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
local k = import "ksonnet/ksonnet.beta.3/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.apps.v1beta2.deployment;
|
||||
local container = k.apps.v1beta2.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.withPorts(containerPort.newNamed("http", targetPort)) +
|
||||
container.withArgs(["--kubelet-service=kube-system/kubelet", "--config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1"]) +
|
||||
container.mixin.resources.withRequests({cpu: "100m", memory: "50Mi"}) +
|
||||
container.mixin.resources.withLimits({cpu: "200m", memory: "100Mi"});
|
||||
|
||||
local operatorDeployment = deployment.new("prometheus-operator", 1, operatorContainer, podLabels) +
|
||||
deployment.mixin.spec.selector.withMatchLabels(podLabels) +
|
||||
deployment.mixin.metadata.withLabels(podLabels) +
|
||||
deployment.mixin.spec.template.spec.securityContext.withRunAsNonRoot(true) +
|
||||
deployment.mixin.spec.template.spec.securityContext.withRunAsUser(65534);
|
||||
|
||||
operatorDeployment
|
|
@ -41,6 +41,7 @@ func MakeDeployment(pathToYaml string) (*appsv1.Deployment, error) {
|
|||
}
|
||||
|
||||
func CreateDeployment(kubeClient kubernetes.Interface, namespace string, d *appsv1.Deployment) error {
|
||||
d.Namespace = namespace
|
||||
_, err := kubeClient.AppsV1beta2().Deployments(namespace).Create(d)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, fmt.Sprintf("failed to create deployment %s", d.Name))
|
||||
|
|
|
@ -120,7 +120,7 @@ func (f *Framework) setupPrometheusOperator(opImage string) error {
|
|||
return errors.Wrap(err, "failed to create prometheus cluster role")
|
||||
}
|
||||
|
||||
deploy, err := MakeDeployment("../../example/rbac/prometheus-operator/prometheus-operator.yaml")
|
||||
deploy, err := MakeDeployment("../../example/rbac/prometheus-operator/prometheus-operator-deployment.yaml")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ func CreateServiceAccount(kubeClient kubernetes.Interface, namespace string, rel
|
|||
if err != nil {
|
||||
return finalizerFn, err
|
||||
}
|
||||
serviceAccount.Namespace = namespace
|
||||
_, err = kubeClient.CoreV1().ServiceAccounts(namespace).Create(serviceAccount)
|
||||
if err != nil {
|
||||
return finalizerFn, err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue