changeset 53:e7318cbee0bc

a barely-working cluster/services setup that scrapes everything and serves vmui (but you have to edit the Server URL cookie)
author drewp@bigasterisk.com
date Wed, 24 Apr 2024 11:38:13 -0700
parents 8199713c9294
children 21185db8a52e
files next/ingress.yaml next/skaffold.yaml next/vmagent.yaml next/vminsert.yaml next/vmselect.yaml next/vmstorage.yaml next/vmui.yaml next/volumes.yaml
diffstat 8 files changed, 306 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/ingress.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,26 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: next-victoriametrics
+  annotations:
+    cert-manager.io/cluster-issuer: letsencrypt-prod
+    ingress.pomerium.io/allow_public_unauthenticated_access: "false"
+    ingress.pomerium.io/pass_identity_headers: "true"
+    ingress.pomerium.io/preserve_host_header: "true"
+    ingress.pomerium.io/policy: |
+      allow:
+        or: 
+          - { email: { is: "drewpca@gmail.com" }}
+          - { email: { is: "kelsimp@gmail.com" }}
+spec:
+  ingressClassName: pomerium
+  rules:
+    - host: "bigasterisk.com"
+      http:
+        paths:
+          - pathType: Prefix
+            path: /m/next/vmselect/
+            backend: { service: { name: next-victoriametrics-vmselect, port: { number: 80 } } }
+  tls:
+    - hosts: [bigasterisk.com]
+      secretName: bigasterisk.com-tls
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/skaffold.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,14 @@
+apiVersion: skaffold/v3
+kind: Config
+metadata:
+  name: victoriametrics
+manifests:
+  rawYaml:
+    - volumes.yaml
+    - vmagent.yaml
+    - vminsert.yaml
+    - vmstorage.yaml
+    - vmselect.yaml
+    - ingress.yaml
+deploy:
+  kubectl: {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/vmagent.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,49 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: next-victoriametrics-vmagent
+spec:
+  replicas: 1
+  strategy: { type: Recreate }
+  selector: { matchLabels: { app: next-victoriametrics-vmagent } }
+  template:
+    metadata:
+      labels:
+        app: next-victoriametrics-vmagent
+      annotations:
+        prometheus.io/scrape: "true"
+        prometheus.io/path: "/m/metrics"
+        prometheus.io/port: "80"
+    spec:
+      volumes:
+        - name: config
+          configMap: { name: victoriametrics-config }
+      serviceAccountName: victoriametrics
+      containers:
+        - name: vmagent
+          # https://hub.docker.com/r/victoriametrics/
+          image: docker.io/victoriametrics/vmagent:v1.100.1
+          args:
+            - -http.pathPrefix=/m/next/vmagent/
+            - -loggerTimezone=America/Los_Angeles
+            - -promscrape.config=/local/config/scrape_main
+            - -promscrape.configCheckInterval=5s
+            - -sortLabels
+            - -remoteWrite.url=http://next-victoriametrics-vminsert/m/next/vminsert/insert/0/prometheus/api/v1/write
+            - -remoteWrite.showURL
+          ports:
+            - containerPort: 8429
+          volumeMounts:
+            - { name: config, mountPath: "/local/config" }
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: next-victoriametrics-vmagent
+spec:
+  ports:
+    - port: 80
+      targetPort: 8429
+  selector:
+    app: next-victoriametrics-vmagent
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/vminsert.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,41 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: next-victoriametrics-vminsert
+spec:
+  replicas: 1
+  strategy: { type: Recreate }
+  selector: { matchLabels: { app: next-victoriametrics-vminsert } }
+  template:
+    metadata:
+      labels:
+        app: next-victoriametrics-vminsert
+      annotations:
+        prometheus.io/scrape: "true"
+        prometheus.io/path: "/m/metrics"
+        prometheus.io/port: "80"
+    spec:
+      serviceAccountName: victoriametrics
+      containers:
+        - name: vminsert
+          # https://hub.docker.com/r/victoriametrics/victoria-metrics/tags also check vmalert.yaml
+          image: docker.io/victoriametrics/vminsert:v1.100.1-cluster
+          args:
+            - -http.pathPrefix=/m/next/vminsert/
+            - -loggerTimezone=America/Los_Angeles
+            # - -storageNode=http://next-victoriametrics-vmstorage/m/vmstorage/api/v1/write
+            - -storageNode=next-victoriametrics-vmstorage-write
+          ports:
+            - containerPort: 8480
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: next-victoriametrics-vminsert
+spec:
+  ports:
+    - port: 80
+      targetPort: 8480
+  selector:
+    app: next-victoriametrics-vminsert
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/vmselect.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,42 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: next-victoriametrics-vmselect
+spec:
+  replicas: 1
+  strategy: { type: Recreate }
+  selector:  { matchLabels: { app: next-victoriametrics-vmselect } }
+  template:
+    metadata:
+      labels:
+        app: next-victoriametrics-vmselect
+      annotations: 
+        prometheus.io/scrape: "true"
+        prometheus.io/path: "/m/metrics"
+        prometheus.io/port: "80"
+    spec:
+      serviceAccountName: victoriametrics
+      containers:
+        - name: vmselect
+          # https://hub.docker.com/r/victoriametrics/victoria-metrics/tags also check vmalert.yaml
+          image: docker.io/victoriametrics/vmselect:v1.100.1-cluster
+          args:
+            - -http.pathPrefix=/m/next/vmselect/
+            - -loggerTimezone=America/Los_Angeles
+            - -storageNode=next-victoriametrics-vmstorage
+          ports:
+            - containerPort: 8481
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: next-victoriametrics-vmselect
+spec:
+  ports:
+    - port: 80
+      targetPort: 8481
+  selector:
+    app: next-victoriametrics-vmselect
+#http://10.43.252.8/select/0/prometheus
+# curl 'http://10.43.252.8/select/0/prometheus/api/v1/query_range?query=house_power_w&start=1713981843.549&end=1713983746.924&step=4s'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/vmstorage.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,66 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: next-victoriametrics-vmstorage
+spec:
+  replicas: 1
+  strategy: { type: Recreate }
+  selector:  { matchLabels: { app: next-victoriametrics-vmstorage } }
+  template:
+    metadata:
+      labels:
+        app: next-victoriametrics-vmstorage
+      annotations: 
+        prometheus.io/scrape: "true"
+        prometheus.io/path: "/m/vmstorage/metrics"
+        prometheus.io/port: "80"
+    spec:
+      volumes:
+        - name: data
+          persistentVolumeClaim:
+            claimName: next-victoriametrics
+      serviceAccountName: victoriametrics
+      containers:
+        - name: vmstorage
+          # https://hub.docker.com/r/victoriametrics/victoria-metrics/tags also check vmalert.yaml
+          image: docker.io/victoriametrics/vmstorage:v1.100.1-cluster
+          args:
+            - -http.pathPrefix=/m/next/vmstorage/
+            - -loggerTimezone=America/Los_Angeles
+            - -retentionPeriod=10y
+            - -storageDataPath=/data
+          ports:
+            - containerPort: 8482 # http?
+            - containerPort: 8400 # vminsert server
+            - containerPort: 8401 # vmselect server
+          volumeMounts:
+            - { name: data, mountPath: /data }
+      affinity:
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            nodeSelectorTerms:
+              - matchExpressions:
+                  - key: "kubernetes.io/hostname"
+                    operator: In
+                    values: ["ditto"]
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: next-victoriametrics-vmstorage
+spec:
+  ports:
+    - {port: 80, targetPort: 8482 }
+    - {port: 8401, targetPort: 8401 }
+  selector:
+    app: next-victoriametrics-vmstorage
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: next-victoriametrics-vmstorage-write
+spec:
+  ports:
+    - {port: 8400, targetPort: 8400 }
+  selector:
+    app: next-victoriametrics-vmstorage
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/vmui.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,37 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: next-victoriametrics-ui
+spec:
+  replicas: 1
+  strategy: { type: Recreate }
+  selector:  { matchLabels: { app: next-victoriametrics-ui } }
+  template:
+    metadata:
+      labels:
+        app: next-victoriametrics-ui
+      annotations: 
+        prometheus.io/scrape: "true"
+        prometheus.io/path: "/m/metrics"
+        prometheus.io/port: "80"
+    spec:
+      serviceAccountName: victoriametrics
+      containers:
+        - name: vmui
+          # https://hub.docker.com/r/victoriametrics/victoria-metrics/tags also check vmalert.yaml
+          args:
+            - -http.pathPrefix=/m/next/vmui/
+            - -loggerTimezone=America/Los_Angeles
+          ports:
+            - containerPort: 8428
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: next-victoriametrics-ui
+spec:
+  ports:
+    - port: 80
+      targetPort: 8428
+  selector:
+    app: next-victoriametrics-ui
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/next/volumes.yaml	Wed Apr 24 11:38:13 2024 -0700
@@ -0,0 +1,31 @@
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: next-victoriametrics
+  labels:
+    type: local
+spec:
+  storageClassName: manual
+  hostPath:
+    path: "/opt/next-victoriametrics"
+  capacity:
+    storage: 50Gi
+  accessModes:
+    - ReadWriteMany
+  persistentVolumeReclaimPolicy: Retain
+  claimRef:
+    namespace: default
+    name: next-victoriametrics
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: next-victoriametrics
+spec:
+  storageClassName: ""
+  volumeName: "next-victoriametrics"
+  accessModes:
+    - ReadWriteMany
+  resources:
+    requests:
+      storage: 50Gi