Mercurial > code > home > repos > victoriametrics
view next/create_all.py @ 55:24f4ec319f98
yaml to py
author | drewp@bigasterisk.com |
---|---|
date | Fri, 26 Apr 2024 15:55:25 -0700 |
parents | |
children | a72c47973aa4 |
line wrap: on
line source
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" }] } }))