Mercurial > code > home > repos > victoriametrics
diff 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 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" + }] + } + }))