Skip to content

Commit 7c4a60e

Browse files
authored
Dev cortex env behind a nginx (cortexproject#284)
1 parent c4d687f commit 7c4a60e

24 files changed

+615
-0
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,14 @@ To use the Prometheus Service with Grafana, configure your Grafana instance to h
6767
- User: `user` (this is ignored, but must be non-empty)
6868
- Password: <Service Token> (the same one your retrieval agent uses)
6969

70+
## Developing
7071

72+
To build & test, install minikube, and run:
73+
74+
eval $(minikube docker-env)
75+
make
76+
kubectl create -f ./k8s
77+
78+
Cortex will sit behind an nginx instance exposed on port 30080. A job is deployed to scrape it itself. Try it:
79+
80+
http://192.168.99.100:30080/api/prom/api/v1/query?query=up

k8s/consul-dep.yaml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: consul
6+
spec:
7+
replicas: 1
8+
template:
9+
metadata:
10+
labels:
11+
name: consul
12+
spec:
13+
containers:
14+
- name: consul
15+
image: consul:0.7.1
16+
imagePullPolicy: IfNotPresent
17+
args:
18+
- agent
19+
- -ui
20+
- -server
21+
- -client=0.0.0.0
22+
- -bootstrap
23+
env:
24+
- name: CHECKPOINT_DISABLE
25+
value: "1"
26+
ports:
27+
- name: server-noscrape
28+
containerPort: 8300
29+
- name: serf-noscrape
30+
containerPort: 8301
31+
- name: client-noscrape
32+
containerPort: 8400
33+
- name: http-noscrape
34+
containerPort: 8500

k8s/consul-svc.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: consul
6+
spec:
7+
ports:
8+
- name: http
9+
port: 8500
10+
selector:
11+
name: consul

k8s/distributor-dep.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: distributor
6+
spec:
7+
replicas: 1
8+
template:
9+
metadata:
10+
labels:
11+
name: distributor
12+
spec:
13+
containers:
14+
- name: distributor
15+
image: weaveworks/cortex-distributor
16+
imagePullPolicy: IfNotPresent
17+
args:
18+
- -log.level=debug
19+
- -server.log-success=true
20+
- -server.http-listen-port=80
21+
- -consul.hostname=consul.default.svc.cluster.local:8500
22+
- -distributor.replication-factor=1
23+
ports:
24+
- containerPort: 80

k8s/distributor-svc.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: distributor
6+
spec:
7+
ports:
8+
- port: 80
9+
selector:
10+
name: distributor

k8s/dynamodb-dep.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: dynamodb
6+
spec:
7+
replicas: 1
8+
template:
9+
metadata:
10+
labels:
11+
name: dynamodb
12+
annotations:
13+
prometheus.io.scrape: "false"
14+
spec:
15+
containers:
16+
- name: dynamodb
17+
image: deangiberson/aws-dynamodb-local
18+
imagePullPolicy: IfNotPresent
19+
ports:
20+
- containerPort: 8000

k8s/dynamodb-svc.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: dynamodb
6+
spec:
7+
ports:
8+
- port: 8000
9+
selector:
10+
name: dynamodb

k8s/ingester-dep.yaml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: ingester
6+
spec:
7+
replicas: 1
8+
9+
# Ingesters are not ready for at least 1 min
10+
# after creation. This has to be in sync with
11+
# the ring timeout value, as this will stop a
12+
# stampede of new ingesters if we should loose
13+
# some.
14+
minReadySeconds: 60
15+
16+
# Having maxSurge 0 and maxUnavailable 1 means
17+
# the deployment will update one ingester at a time
18+
# as it will have to stop one (making one unavailable)
19+
# before it can start one (surge of zero)
20+
strategy:
21+
rollingUpdate:
22+
maxSurge: 0
23+
maxUnavailable: 1
24+
25+
template:
26+
metadata:
27+
labels:
28+
name: ingester
29+
spec:
30+
# Give ingesters 40 minutes grace to flush chunks and exit cleanly.
31+
# Service is available during this time, as long as we don't stop
32+
# too many ingesters at once.
33+
terminationGracePeriodSeconds: 2400
34+
35+
containers:
36+
- name: ingester
37+
image: weaveworks/cortex-ingester
38+
imagePullPolicy: IfNotPresent
39+
args:
40+
- -server.log-success=true
41+
- -server.http-listen-port=80
42+
- -consul.hostname=consul.default.svc.cluster.local:8500
43+
- -s3.url=s3://abc:123@s3.default.svc.cluster.local:4569
44+
- -dynamodb.url=dynamodb://user:pass@dynamodb.default.svc.cluster.local:8000/cortex
45+
- -dynamodb.periodic-table.prefix=cortex_weekly_
46+
- -dynamodb.periodic-table.start=2017-01-06
47+
- -dynamodb.daily-buckets-from=2017-01-10
48+
- -dynamodb.base64-buckets-from=2017-01-17
49+
- -dynamodb.v4-schema-from=2017-02-05
50+
- -memcached.hostname=memcached.default.svc.cluster.local
51+
- -memcached.timeout=100ms
52+
- -memcached.service=memcached
53+
ports:
54+
- containerPort: 80
55+
readinessProbe:
56+
httpGet:
57+
path: /ready
58+
port: 80
59+
initialDelaySeconds: 15
60+
timeoutSeconds: 1

k8s/ingester-svc.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: ingester
6+
spec:
7+
ports:
8+
- port: 80
9+
selector:
10+
name: ingester

k8s/memcached-dep.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: memcached
6+
spec:
7+
replicas: 1
8+
template:
9+
metadata:
10+
labels:
11+
name: memcached
12+
annotations:
13+
prometheus.io.port: "9150"
14+
spec:
15+
containers:
16+
- name: memcached
17+
image: memcached:1.4.25
18+
imagePullPolicy: IfNotPresent
19+
args:
20+
- -m 64 # Maximum memory to use, in megabytes. 64MB is default.
21+
- -p 11211 # Default port, but being explicit is nice.
22+
ports:
23+
- name: clients
24+
containerPort: 11211
25+
ports:
26+
- name: prom
27+
containerPort: 9150

k8s/memcached-svc.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: memcached
6+
spec:
7+
# The memcache client uses DNS to get a list of memcached servers and then
8+
# uses a consistent hash of the key to determine which server to pick.
9+
clusterIP: None
10+
ports:
11+
- name: memcached
12+
port: 11211
13+
- name: prom
14+
port: 9150
15+
selector:
16+
name: memcached

k8s/nginx-config.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
kind: ConfigMap
2+
apiVersion: v1
3+
metadata:
4+
name: nginx
5+
data:
6+
nginx.conf: |-
7+
worker_processes 5; ## Default: 1
8+
error_log /dev/stderr;
9+
pid nginx.pid;
10+
worker_rlimit_nofile 8192;
11+
12+
events {
13+
worker_connections 4096; ## Default: 1024
14+
}
15+
16+
http {
17+
default_type application/octet-stream;
18+
log_format main '$remote_addr - $remote_user [$time_local] $status '
19+
'"$request" $body_bytes_sent "$http_referer" '
20+
'"$http_user_agent" "$http_x_forwarded_for"';
21+
access_log /dev/stderr main;
22+
sendfile on;
23+
tcp_nopush on;
24+
resolver 10.0.0.10;
25+
26+
server { # simple reverse-proxy
27+
listen 80;
28+
proxy_set_header X-Scope-OrgID 0;
29+
30+
# pass requests for dynamic content to rails/turbogears/zope, et al
31+
location = /api/prom/push {
32+
proxy_pass http://distributor.default.svc.cluster.local$request_uri;
33+
}
34+
35+
location ~ /api/prom/.* {
36+
proxy_pass http://querier.default.svc.cluster.local$request_uri;
37+
}
38+
}
39+
}

k8s/nginx-dep.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: nginx
6+
spec:
7+
replicas: 1
8+
template:
9+
metadata:
10+
labels:
11+
name: nginx
12+
spec:
13+
containers:
14+
- name: nginx
15+
image: nginx
16+
imagePullPolicy: IfNotPresent
17+
ports:
18+
- name: http
19+
containerPort: 80
20+
volumeMounts:
21+
- name: config-volume
22+
mountPath: /etc/nginx
23+
volumes:
24+
- name: config-volume
25+
configMap:
26+
name: nginx

k8s/nginx-svc.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: nginx
6+
spec:
7+
type: NodePort
8+
ports:
9+
- name: http
10+
port: 80
11+
nodePort: 30080
12+
selector:
13+
name: nginx

k8s/querier-dep.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: querier
6+
spec:
7+
replicas: 1
8+
template:
9+
metadata:
10+
labels:
11+
name: querier
12+
spec:
13+
containers:
14+
- name: querier
15+
image: weaveworks/cortex-querier
16+
imagePullPolicy: IfNotPresent
17+
args:
18+
- -server.log-success=true
19+
- -server.http-listen-port=80
20+
- -consul.hostname=consul.default.svc.cluster.local:8500
21+
- -s3.url=s3://abc:123@s3.default.svc.cluster.local:4569
22+
- -dynamodb.url=dynamodb://user:pass@dynamodb.default.svc.cluster.local:8000/cortex
23+
- -dynamodb.periodic-table.prefix=cortex_weekly_
24+
- -dynamodb.periodic-table.start=2017-01-06
25+
- -dynamodb.daily-buckets-from=2017-01-10
26+
- -dynamodb.base64-buckets-from=2017-01-17
27+
- -dynamodb.v4-schema-from=2017-02-05
28+
- -memcached.hostname=memcached.default.svc.cluster.local
29+
- -memcached.timeout=100ms
30+
- -memcached.service=memcached
31+
- -distributor.replication-factor=1
32+
ports:
33+
- containerPort: 80

k8s/querier-svc.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: querier
6+
spec:
7+
ports:
8+
- port: 80
9+
selector:
10+
name: querier

0 commit comments

Comments
 (0)