mirror of
				https://github.com/prometheus-operator/kube-prometheus.git
				synced 2025-11-04 10:01:03 +01:00 
			
		
		
		
	kube-prometheus: add info about installing & compiling
This commit is contained in:
		
							parent
							
								
									d58ccab5d0
								
							
						
					
					
						commit
						532f546dcf
					
				
							
								
								
									
										57
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								README.md
									
									
									
									
									
								
							@ -23,7 +23,9 @@ This stack is meant for cluster monitoring, so it is pre-configured to collect m
 | 
			
		||||
    * [minikube](#minikube)
 | 
			
		||||
* [Quickstart](#quickstart)
 | 
			
		||||
* [Usage](#usage)
 | 
			
		||||
    * [Installing](#installing)
 | 
			
		||||
    * [Compiling](#compiling)
 | 
			
		||||
    * [Containerized Installing and Compiling](#containerized-installing-and-compiling)
 | 
			
		||||
* [Configuration](#configuration)
 | 
			
		||||
* [Customization](#customization)
 | 
			
		||||
    * [Alertmanager configuration](#alertmanager-configuration)
 | 
			
		||||
@ -69,19 +71,27 @@ $ kubectl delete -f manifests/ || true
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
### Installing
 | 
			
		||||
 | 
			
		||||
The content of this project consists of a set of [jsonnet](http://jsonnet.org/) files making up a library to be consumed.
 | 
			
		||||
 | 
			
		||||
Install this library in your own project with [jsonnet-bundler](https://github.com/jsonnet-bundler/jsonnet-bundler#install):
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ mkdir my-kube-prometheus; cd my-kube-prometheus
 | 
			
		||||
$ jb init
 | 
			
		||||
$ jb install github.com/coreos/prometheus-operator/contrib/kube-prometheus/jsonnet/kube-prometheus
 | 
			
		||||
$ jb init  # Creates the initial/empty `jsonnetfile.json`
 | 
			
		||||
$ jb install github.com/coreos/prometheus-operator/contrib/kube-prometheus/jsonnet/kube-prometheus  # Creates `vendor/` & `jsonnetfile.lock.json`, and fills in `jsonnetfile.json`
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> `jb` can be installed with `go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb`
 | 
			
		||||
 | 
			
		||||
You may wish to not use ksonnet and simply render the generated manifests to files on disk, this can be done by running `build.sh` with [example.jsonnet](example.jsonnet):
 | 
			
		||||
> An e.g. of how to install a given version of this library: `jb install github.com/coreos/prometheus-operator/contrib/kube-prometheus/jsonnet/kube-prometheus/@v0.22.0`
 | 
			
		||||
 | 
			
		||||
### Compiling
 | 
			
		||||
 | 
			
		||||
You may wish to not use ksonnet/jsonnet and simply render the generated manifests to files on disk (in which case you still don't need a copy of this entire repository, but rather only a copy of a few select files).
 | 
			
		||||
This can be done e.g. by running `./build.sh example.jsonnet`.
 | 
			
		||||
 | 
			
		||||
Here's [example.jsonnet](example.jsonnet):
 | 
			
		||||
 | 
			
		||||
[embedmd]:# (example.jsonnet)
 | 
			
		||||
```jsonnet
 | 
			
		||||
@ -100,15 +110,14 @@ local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') + {
 | 
			
		||||
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This renders all manifests in a json structure of `{filename: manifest-content}`.
 | 
			
		||||
 | 
			
		||||
### Compiling
 | 
			
		||||
 | 
			
		||||
To compile the above and get each manifest in a separate file on disk use the following [build.sh](build.sh) script (i.e. `./build.sh example.jsonnet`):
 | 
			
		||||
And here's the [build.sh](build.sh) script (this renders all manifests in a json structure of `{filename: manifest-content}`):
 | 
			
		||||
 | 
			
		||||
[embedmd]:# (build.sh)
 | 
			
		||||
```sh
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# This script uses arg $1 (name of *.jsonnet file to use) to generate the manifests/*.yaml files.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -x
 | 
			
		||||
# only exit with zero if all commands of the pipeline exit successfully
 | 
			
		||||
@ -123,11 +132,37 @@ jsonnet -J vendor -m manifests "${1-example.jsonnet}" | xargs -I{} sh -c 'cat {}
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> Note you need `jsonnet` and `gojsonyaml` (`go get github.com/brancz/gojsontoyaml`) installed. If you just want json output, not yaml, then you can skip the pipe and everything afterwards.
 | 
			
		||||
> Note you need `jsonnet` and `gojsontoyaml` (`go get github.com/brancz/gojsontoyaml`) installed. If you just want json output, not yaml, then you can skip the pipe and everything afterwards.
 | 
			
		||||
 | 
			
		||||
This script reads each key of the generated json and uses that as the file name, and writes the value of that key to that file.
 | 
			
		||||
 | 
			
		||||
> You can also run this script executing the command `make generate-raw` from kube-prometheus base directory of this repository but the above option it is recommended so that you run it in your own infrastructure repository.
 | 
			
		||||
### Containerized Installing and Compiling
 | 
			
		||||
 | 
			
		||||
If you don't care to have `jb` or `jsonnet` or `gojsontoyaml` installed, then build the `po-jsonnet` Docker image (this is something you'll need a copy of this repository for). Do the following from this `kube-prometheus` directory:
 | 
			
		||||
```
 | 
			
		||||
$ make ../../hack/jsonnet-docker-image
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Then you can do commands such as the following:
 | 
			
		||||
```
 | 
			
		||||
docker run \
 | 
			
		||||
	--rm \
 | 
			
		||||
	-v `pwd`:`pwd` \
 | 
			
		||||
	--workdir `pwd` \
 | 
			
		||||
	po-jsonnet jb init
 | 
			
		||||
 | 
			
		||||
docker run \
 | 
			
		||||
	--rm \
 | 
			
		||||
	-v `pwd`:`pwd` \
 | 
			
		||||
	--workdir `pwd` \
 | 
			
		||||
	po-jsonnet jb install github.com/coreos/prometheus-operator/contrib/kube-prometheus/jsonnet/kube-prometheus
 | 
			
		||||
 | 
			
		||||
docker run \
 | 
			
		||||
	--rm \
 | 
			
		||||
	-v `pwd`:`pwd` \
 | 
			
		||||
	--workdir `pwd` \
 | 
			
		||||
	po-jsonnet ./build.sh example.jsonnet
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								build.sh
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								build.sh
									
									
									
									
									
								
							@ -1,4 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# This script uses arg $1 (name of *.jsonnet file to use) to generate the manifests/*.yaml files.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -x
 | 
			
		||||
# only exit with zero if all commands of the pipeline exit successfully
 | 
			
		||||
@ -10,4 +13,3 @@ mkdir manifests
 | 
			
		||||
 | 
			
		||||
                                               # optional, but we would like to generate yaml, not json
 | 
			
		||||
jsonnet -J vendor -m manifests "${1-example.jsonnet}" | xargs -I{} sh -c 'cat {} | gojsontoyaml > {}.yaml; rm -f {}' -- {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user