From 14dff5254d6a1c024c696b3baba101f9adb7951c Mon Sep 17 00:00:00 2001 From: Luca Comellini Date: Tue, 13 Feb 2024 19:57:31 -0800 Subject: [PATCH] Add k8s example --- examples/kubernetes/README.md | 41 +++++++++++++++++++ examples/kubernetes/nginx.yaml | 72 ++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 examples/kubernetes/README.md create mode 100644 examples/kubernetes/nginx.yaml diff --git a/examples/kubernetes/README.md b/examples/kubernetes/README.md new file mode 100644 index 000000000..08dd3445d --- /dev/null +++ b/examples/kubernetes/README.md @@ -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). diff --git a/examples/kubernetes/nginx.yaml b/examples/kubernetes/nginx.yaml new file mode 100644 index 000000000..37d85db4c --- /dev/null +++ b/examples/kubernetes/nginx.yaml @@ -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; + } + + }