Skip to content

Commit

Permalink
Add k8s example
Browse files Browse the repository at this point in the history
  • Loading branch information
lucacome committed Feb 14, 2024
1 parent 1a916f4 commit 14dff52
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 0 deletions.
41 changes: 41 additions & 0 deletions examples/kubernetes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# NGINX Prometheus Exporter in Kubernetes

This example shows how to run NGINX Prometheus Exporter in a Kubernetes cluster.

## Prerequisites

- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) installed.
- [kind](https://kind.sigs.k8s.io/) installed.

## Create a kind cluster

You can create a kind cluster with the following command:

```console
kind create cluster
```

For details, see the [kind documentation](https://kind.sigs.k8s.io/docs/user/quick-start/#creating-a-cluster).

## Deploy the NGINX Hello application and NGINX Prometheus Exporter

You can deploy the NGINX Hello application and NGINX Prometheus Exporter with the following command:

```console
kubectl apply -f nginx-hello.yaml
```

## Configure port forwarding

Port forwarding is used to access the NGINX Hello application and NGINX Prometheus Exporter from your local machine.

You can configure port forwarding with the following command:

```console
kubectl port-forward service/nginx-demo 8080:80 9113:9113
```

## Verification

You can access the NGINX Hello application at [http://localhost:8080](http://localhost:8080) and the
NGINX Prometheus Exporter at [http://localhost:9113](http://localhost:9113).
72 changes: 72 additions & 0 deletions examples/kubernetes/nginx.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: nginx-demo
name: nginx-demo
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nginx-demo
template:
metadata:
labels:
app.kubernetes.io/name: nginx-demo
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9113"
spec:
containers:
- image: nginxdemos/hello:latest
name: nginx-demo
ports:
- name: http
containerPort: 80
volumeMounts:
- name: config-volume
mountPath: /etc/nginx/conf.d/status.conf
subPath: status.conf
- image: nginx/nginx-prometheus-exporter:latest
name: nginx-prometheus-exporter
args:
- "--nginx.scrape-uri=http://localhost:8080/stub_status"
ports:
- name: metrics
containerPort: 9113
volumes:
- name: config-volume
configMap:
name: status-config
---
apiVersion: v1
kind: Service
metadata:
name: nginx-demo
spec:
type: NodePort
selector:
app.kubernetes.io/name: nginx-demo
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
- port: 9113
targetPort: 9113
name: metrics
---
apiVersion: v1
kind: ConfigMap
metadata:
name: status-config
data:
status.conf: |-
server {
listen 8080;
location /stub_status {
stub_status;
}
}

0 comments on commit 14dff52

Please sign in to comment.