Mercurial > code > home > repos > victoriametrics
changeset 55:24f4ec319f98
yaml to py
author | drewp@bigasterisk.com |
---|---|
date | Fri, 26 Apr 2024 15:55:25 -0700 |
parents | 21185db8a52e |
children | a72c47973aa4 |
files | next/create_all.py 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 | 9 files changed, 337 insertions(+), 298 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/next/create_all.py Fri Apr 26 15:55:25 2024 -0700 @@ -0,0 +1,336 @@ +import json +from pathlib import Path + + +def toJson(d): + return json.dumps(d, sort_keys=True, indent=2) + + +build = Path('build') +(build / 'vmagent_deploy.yaml').write_text( + toJson({ + "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", + "image": "docker.io/victoriametrics/vmagent:v1.100.1", + "imagePullPolicy": "IfNotPresent", + "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" + }] + }] + } + } + } + })) +(build / 'vmagent_svc.yaml').write_text(toJson({"apiVersion": "v1", "kind": "Service", "metadata": {"name": "next-victoriametrics-vmagent"}, "spec": {"ports": [{"port": 80, "targetPort": 8429}], "selector": {"app": "next-victoriametrics-vmagent"}}})) + +(build / 'vminsert_deploy.yaml').write_text( + toJson({ + "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", + "image": "docker.io/victoriametrics/vminsert:v1.100.1-cluster", + "imagePullPolicy": "IfNotPresent", + "args": ["-http.pathPrefix=/m/next/vminsert/", "-loggerTimezone=America/Los_Angeles", "-storageNode=next-victoriametrics-vmstorage"], + "ports": [{ + "containerPort": 8480 + }] + }] + } + } + } + })) +(build / 'vminsert_svc.yaml').write_text(toJson({"apiVersion": "v1", "kind": "Service", "metadata": {"name": "next-victoriametrics-vminsert"}, "spec": {"ports": [{"port": 80, "targetPort": 8480}], "selector": {"app": "next-victoriametrics-vminsert"}}})) + +(build / 'vmstorage_pv.yaml').write_text( + toJson({ + "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" + } + } + })) +(build / 'vmstorage_pvc.yaml').write_text(toJson({"apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": {"name": "next-victoriametrics"}, "spec": {"storageClassName": "", "volumeName": "next-victoriametrics", "accessModes": ["ReadWriteMany"], "resources": {"requests": {"storage": "50Gi"}}}})) + +(build / 'vmstorage_deploy.yaml').write_text( + toJson({ + "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", + "image": "docker.io/victoriametrics/vmstorage:v1.100.1-cluster", + "imagePullPolicy": "IfNotPresent", + "args": ["-http.pathPrefix=/m/next/vmstorage/", "-loggerTimezone=America/Los_Angeles", "-retentionPeriod=100y", "-storageDataPath=/data/100y"], + "ports": [{ + "containerPort": 8482, + "name": "http" + }, { + "containerPort": 8400, + "name": "vminsert" + }, { + "containerPort": 8401, + "name": "vmselect" + }], + "volumeMounts": [{ + "name": "data", + "mountPath": "/data" + }] + }], + "affinity": { + "nodeAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "nodeSelectorTerms": [{ + "matchExpressions": [{ + "key": "kubernetes.io/hostname", + "operator": "In", + "values": ["ditto"] + }] + }] + } + } + } + } + } + } + })) +(build / 'vmstorage_svc.yaml').write_text(toJson({"apiVersion": "v1", "kind": "Service", "metadata": {"name": "next-victoriametrics-vmstorage"}, "spec": {"ports": [{"port": 80, "targetPort": "http", "name": "http"}, {"port": 8400, "targetPort": "vminsert", "name": "vminsert"}, {"port": 8401, "targetPort": "vmselect", "name": "vmselect"}], "selector": {"app": "next-victoriametrics-vmstorage"}}})) + +(build / 'vmselect_deploy.yaml').write_text( + toJson({ + "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", + "image": "docker.io/victoriametrics/vmselect:v1.100.1-cluster", + "imagePullPolicy": "IfNotPresent", + "args": ["-http.pathPrefix=/m/next/vmselect/", "-loggerTimezone=America/Los_Angeles", "-storageNode=next-victoriametrics-vmstorage"], + "ports": [{ + "containerPort": 8481 + }] + }] + } + } + } + })) +(build / 'vmselect_svc.yaml').write_text(toJson({ + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "next-victoriametrics-vmselect" + }, + "spec": { + "ports": [{ + "port": 80, + "targetPort": 8481 + }], + "selector": { + "app": "next-victoriametrics-vmselect" + } + } +} + # in vmui, set server url to + # https://bigasterisk.com/m/next/vmselect/select/0/prometheus + )) + +(build / 'vmselect_svc.yaml').write_text( + toJson({ + "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", + } + }, + "spec": { + "ingressClassName": "pomerium", + "rules": [{ + "host": "bigasterisk.com", + "http": { + "paths": [{ + "pathType": "Prefix", + "path": "/m/next/vmselect/", + "backend": { + "service": { + "name": "next-victoriametrics-vmselect", + "port": { + "number": 80 + } + } + } + }, { + "pathType": "Prefix", + "path": "/m/next/vmagent/", + "backend": { + "service": { + "name": "next-victoriametrics-vmagent", + "port": { + "number": 80 + } + } + } + }, { + "pathType": "Prefix", + "path": "/m/next/vmselect/", + "backend": { + "service": { + "name": "next-victoriametrics-vmselect", + "port": { + "number": 80 + } + } + } + }] + } + }], + "tls": [{ + "hosts": ["bigasterisk.com"], + "secretName": "bigasterisk.com-tls" + }] + } + }))
--- a/next/ingress.yaml Wed Apr 24 12:08:39 2024 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -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
--- a/next/skaffold.yaml Wed Apr 24 12:08:39 2024 -0700 +++ b/next/skaffold.yaml Fri Apr 26 15:55:25 2024 -0700 @@ -4,11 +4,6 @@ name: victoriametrics manifests: rawYaml: - - volumes.yaml - - vmagent.yaml - - vminsert.yaml - - vmstorage.yaml - - vmselect.yaml - - ingress.yaml + - build/*.yaml deploy: kubectl: {}
--- a/next/vmagent.yaml Wed Apr 24 12:08:39 2024 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -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
--- a/next/vminsert.yaml Wed Apr 24 12:08:39 2024 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -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
--- a/next/vmselect.yaml Wed Apr 24 12:08:39 2024 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -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'
--- a/next/vmstorage.yaml Wed Apr 24 12:08:39 2024 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -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
--- a/next/vmui.yaml Wed Apr 24 12:08:39 2024 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -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
--- a/next/volumes.yaml Wed Apr 24 12:08:39 2024 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -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