changeset 7:7130eb6d8e6b

redo deployment config to use skaffold live sync instead of busted CM way
author drewp@bigasterisk.com
date Sun, 04 Dec 2022 02:06:31 -0800
parents ae41d1d0b567
children e393b24f0e01
files .hgignore Dockerfile.vmalert Dockerfile.vmetrics deploy.yaml deploy_alertmanager.yaml deploy_vmalert.yaml deploy_vmetrics.yaml skaffold.yaml vmalert.yaml volumes.yaml
diffstat 10 files changed, 228 insertions(+), 133 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Sun Dec 04 02:06:31 2022 -0800
@@ -0,0 +1,1 @@
+rules/build/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Dockerfile.vmalert	Sun Dec 04 02:06:31 2022 -0800
@@ -0,0 +1,3 @@
+FROM docker.io/victoriametrics/vmalert:v1.84.0
+
+COPY rules/ /local/rules
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Dockerfile.vmetrics	Sun Dec 04 02:06:31 2022 -0800
@@ -0,0 +1,3 @@
+FROM docker.io/victoriametrics/victoria-metrics:v1.84.0
+
+COPY config/ /local/config
--- a/deploy.yaml	Sat Sep 03 23:42:01 2022 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: victoriametrics
-spec:
-  replicas: 1
-  strategy: { type: Recreate }
-  selector:
-    matchLabels:
-      app: victoriametrics
-  template:
-    metadata:
-      labels:
-        app: victoriametrics
-      annotations: { "prometheus.io/scrape": "false" }
-    spec:
-      volumes:
-        - name: data
-          persistentVolumeClaim:
-            claimName: opt-victoriametrics
-        - name: config
-          configMap: {name: victoriametrics-config}
-      serviceAccountName: victoriametrics
-      containers:
-        - name: victoriametrics
-          # https://hub.docker.com/r/victoriametrics/victoria-metrics/tags also check vmalert.yaml
-          image: victoriametrics/victoria-metrics:v1.77.2
-          args:
-            - -storageDataPath=/data
-            - -memory.allowedBytes=512MB
-            - -http.pathPrefix=/m/
-            - -promscrape.config=/config/scrape_config.yaml
-            - -loggerTimezone=America/Los_Angeles
-            - -retentionPeriod=10y
-            - -sortLabels
-          ports:
-            - containerPort: 8428
-          volumeMounts:
-            - { name: data, mountPath: /data }
-            - { name: config, mountPath: /config }
-          # resources:
-          #   limits:
-          #     memory: 0.5Gi
-      affinity:
-        nodeAffinity:
-          requiredDuringSchedulingIgnoredDuringExecution:
-            nodeSelectorTerms:
-              - matchExpressions:
-                  - key: "kubernetes.io/hostname"
-                    operator: In
-                    values: ["bang"]
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: victoriametrics
-spec:
-  ports:
-    - port: 80
-      targetPort: 8428
-  selector:
-    app: victoriametrics
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deploy_alertmanager.yaml	Sun Dec 04 02:06:31 2022 -0800
@@ -0,0 +1,51 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: alertmanager
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: alertmanager
+  template:
+    metadata:
+      labels:
+        app: alertmanager
+    spec:
+      volumes:
+        - name: opt-alertmanager
+          persistentVolumeClaim:
+            claimName: opt-alertmanager
+      serviceAccountName: victoriametrics
+      containers:
+        - name: alertmanager
+          image: prom/alertmanager:v0.24.0
+          args:
+            - --config.file=/alertmanager/alertmanager.yml
+            - --web.external-url=https://bigasterisk.com/alertmanager/
+            - --web.route-prefix=/
+            - --log.level=debug
+          ports:
+          - containerPort: 9093
+          volumeMounts:
+          - name: opt-alertmanager
+            mountPath: /alertmanager
+      affinity:
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            nodeSelectorTerms:
+            - matchExpressions:
+              - key: "kubernetes.io/hostname"
+                operator: In
+                values: ["bang"]
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: alertmanager
+spec:
+  ports:
+  - port: 80
+    targetPort: 9093
+  selector:
+    app: alertmanager
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deploy_vmalert.yaml	Sun Dec 04 02:06:31 2022 -0800
@@ -0,0 +1,49 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: vmalert
+spec:
+  replicas: 1
+  strategy: { type: Recreate }
+  selector:
+    matchLabels:
+      app: vmalert
+  template:
+    metadata:
+      labels:
+        app: vmalert
+      annotations:
+        prometheus.io/scrape: "true"
+    spec:
+      serviceAccountName: victoriametrics
+      containers:
+        - name: vmalert
+          image: bang5:5000/vmalert
+          args:
+            - -configCheckInterval=5s
+            - -datasource.url=http://victoriametrics.default.svc.cluster.local./m/
+            - -external.url=https://bigasterisk.com/vmalert
+            - -loggerLevel=INFO
+            - -loggerTimezone=America/Los_Angeles
+            - -memory.allowedBytes=512MB
+            - -notifier.url=http://alertmanager.default.svc.cluster.local.
+            - -remoteRead.url=http://victoriametrics.default.svc.cluster.local./m/
+            - -remoteWrite.url=http://victoriametrics.default.svc.cluster.local./m/
+            - -rule=/local/rules/*.yaml
+            - -rule=/local/rules/build/*.yaml
+          ports:
+            - containerPort: 8880
+          resources:
+            limits:
+              memory: 0.5Gi
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: vmalert
+spec:
+  ports:
+    - port: 80
+      targetPort: 8880
+  selector:
+    app: vmalert
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deploy_vmetrics.yaml	Sun Dec 04 02:06:31 2022 -0800
@@ -0,0 +1,65 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: victoriametrics
+spec:
+  replicas: 1
+  strategy: { type: Recreate }
+  selector:
+    matchLabels:
+      app: victoriametrics
+  template:
+    metadata:
+      labels:
+        app: victoriametrics
+      annotations: 
+        prometheus.io/scrape: "true"
+        prometheus.io/path: "/m/metrics"
+        prometheus.io/port: "80"
+    spec:
+      volumes:
+        - name: data
+          persistentVolumeClaim:
+            claimName: opt-victoriametrics
+        - name: config
+          configMap: {name: victoriametrics-config}
+      serviceAccountName: victoriametrics
+      containers:
+        - name: victoriametrics
+          # https://hub.docker.com/r/victoriametrics/victoria-metrics/tags also check vmalert.yaml
+          image: bang5:5000/victoriametrics
+          args:
+            - -http.pathPrefix=/m/
+            - -loggerTimezone=America/Los_Angeles
+            - -memory.allowedBytes=512MB
+            - -promscrape.config=/local/config/scrape_main.yaml
+            - -promscrape.configCheckInterval=5s
+            - -retentionPeriod=10y
+            - -sortLabels
+            - -storageDataPath=/data
+          ports:
+            - containerPort: 8428
+          volumeMounts:
+            - { name: data, mountPath: /data }
+          # resources:
+          #   limits:
+          #     memory: 0.5Gi
+      affinity:
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            nodeSelectorTerms:
+              - matchExpressions:
+                  - key: "kubernetes.io/hostname"
+                    operator: In
+                    values: ["bang"]
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: victoriametrics
+spec:
+  ports:
+    - port: 80
+      targetPort: 8428
+  selector:
+    app: victoriametrics
--- a/skaffold.yaml	Sat Sep 03 23:42:01 2022 -0700
+++ b/skaffold.yaml	Sun Dec 04 02:06:31 2022 -0800
@@ -1,10 +1,26 @@
-apiVersion: skaffold/v2beta26
+apiVersion: skaffold/v3
 kind: Config
-metadata: { name: victoriametrics }
+metadata:
+  name: victoriametrics
+build:
+  artifacts:
+    - docker: {dockerfile: Dockerfile.vmetrics}
+      image: bang5:5000/victoriametrics
+      sync:
+        infer:
+          - config/*
+    - docker: {dockerfile: Dockerfile.vmalert}
+      image: bang5:5000/vmalert
+      sync:
+        infer:
+          - rules/*
+manifests:
+  rawYaml:
+    - roles.yaml
+    - volumes.yaml
+    - ingress.yaml
+    - deploy_vmetrics.yaml
+    - deploy_vmalert.yaml
+    - deploy_alertmanager.yaml
 deploy:
-  kubectl:
-    manifests:
-      - "roles.yaml"
-      - "volumes.yaml"
-      - "deploy.yaml"
-      - "vmalert.yaml"
\ No newline at end of file
+  kubectl: {}
--- a/vmalert.yaml	Sat Sep 03 23:42:01 2022 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: vmalert
-spec:
-  replicas: 1
-  strategy: { type: Recreate }
-  selector:
-    matchLabels:
-      app: vmalert
-  template:
-    metadata:
-      labels:
-        app: vmalert
-      annotations: { "prometheus.io/scrape": "false" }
-    spec:
-      volumes:
-        - name: data
-          persistentVolumeClaim:
-            claimName: opt-victoriametrics
-        - name: config
-          configMap: {name: victoriametrics-config}
-      serviceAccountName: victoriametrics
-      containers:
-        - name: vmalert
-          image: victoriametrics/vmalert:v1.77.2
-          args:
-            - -rule=/config/rules/*.yaml
-            - -datasource.url=http://victoriametrics.default.svc.cluster.local./m/
-            - -notifier.url=http://alertmanager.default.svc.cluster.local.
-            - -remoteWrite.url=http://victoriametrics.default.svc.cluster.local./m/
-            - -remoteRead.url=http://victoriametrics.default.svc.cluster.local./m/
-            - -http.pathPrefix=/vmalert/
-            - -loggerTimezone=America/Los_Angeles
-            - -external.url=https://bigasterisk.com/vmalert
-            - -memory.allowedBytes=512MB
-          ports:
-            - containerPort: 8880
-          volumeMounts:
-            - { name: data, mountPath: /data }
-            - { name: config, mountPath: /config }
-          resources:
-            limits:
-              memory: 0.5Gi
-      affinity:
-        nodeAffinity:
-          requiredDuringSchedulingIgnoredDuringExecution:
-            nodeSelectorTerms:
-              - matchExpressions:
-                  - key: "kubernetes.io/hostname"
-                    operator: In
-                    values: ["bang"]
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: vmalert
-spec:
-  ports:
-    - port: 80
-      targetPort: 8880
-  selector:
-    app: vmalert
--- a/volumes.yaml	Sat Sep 03 23:42:01 2022 -0700
+++ b/volumes.yaml	Sun Dec 04 02:06:31 2022 -0800
@@ -28,4 +28,36 @@
     - ReadWriteMany
   resources:
     requests:
+      storage: 50Gi
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: opt-alertmanager
+  labels:
+    type: local
+spec:
+  storageClassName: manual
+  hostPath:
+    path: "/opt/alertmanager"
+  capacity:
+    storage: 50Gi
+  accessModes:
+    - ReadWriteOnce
+  persistentVolumeReclaimPolicy: Retain
+  claimRef:
+    namespace: default
+    name: opt-alertmanager
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: opt-alertmanager
+spec:
+  storageClassName: ""
+  volumeName: "opt-alertmanager"
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
       storage: 50Gi
\ No newline at end of file