restic-exporter: Deploy Restic Prometheus exporter
The [restic-exporter][0] exposes metrics about Restic snapshots as Prometheus metrics. This allows us to get similar data as we have for BURP backups. Chiefly important among the metrics are last backup time and size, which we can use to determine if backups are working correctly. [0]: https://github.com/ngosang/restic-exporteretcd
parent
ebcf9e3d42
commit
5079599423
|
@ -0,0 +1,2 @@
|
|||
password
|
||||
restic-s3
|
|
@ -0,0 +1,36 @@
|
|||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
namespace: restic-exporter
|
||||
|
||||
labels:
|
||||
- pairs:
|
||||
app.kubernetes.io/instance: restic-exporter
|
||||
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- network-policy.yaml
|
||||
- restic-exporter.yaml
|
||||
- secrets.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: restic-exporter
|
||||
envs:
|
||||
- restic-exporter.env
|
||||
|
||||
patches:
|
||||
- patch: |-
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: restic-exporter
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: restic-exporter
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: restic-s3
|
||||
- configMapRef:
|
||||
name: restic-exporter
|
|
@ -0,0 +1,8 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: restic-exporter
|
||||
labels:
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
app.kubernetes.io/name: restic-exporter
|
||||
app.kubernetes.io/part-of: restic-exporter
|
|
@ -0,0 +1,39 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: restic-exporter
|
||||
labels:
|
||||
app.kubernetes.io/name: restic-exporter
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
spec:
|
||||
egress:
|
||||
- to:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: kube-system
|
||||
podSelector:
|
||||
matchLabels:
|
||||
k8s-app: kube-dns
|
||||
ports:
|
||||
- port: 53
|
||||
protocol: UDP
|
||||
- port: 53
|
||||
protocol: TCP
|
||||
- to:
|
||||
- ipBlock:
|
||||
cidr: 172.30.0.30/32
|
||||
ports:
|
||||
- port: 9000
|
||||
ingress:
|
||||
- from:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: victoria-metrics
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: vmagent
|
||||
ports:
|
||||
- port: metrics
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: restic-exporter
|
|
@ -0,0 +1,4 @@
|
|||
TZ=America/Chicago
|
||||
RESTIC_REPOSITORY=s3:https://burp.pyrocufflink.blue:9000/restic
|
||||
INCLUDE_PATHS=True
|
||||
REFRESH_INTERVAL=3600
|
|
@ -0,0 +1,57 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: restic-exporter
|
||||
labels:
|
||||
app.kubernetes.io/name: restic-exporter
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
app.kubernetes.io/part-of: restic-exporter
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: restic-exporter
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: restic-exporter
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
app.kubernetes.io/part-of: restic-exporter
|
||||
spec:
|
||||
containers:
|
||||
- name: restic-exporter
|
||||
image: git.pyrocufflink.net/containerimages/restic-exporter
|
||||
ports:
|
||||
- containerPort: 8001
|
||||
name: metrics
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: restic-exporter
|
||||
optional: true
|
||||
env:
|
||||
- name: RESTIC_PASSWORD_FILE
|
||||
value: /run/secrets/restic/password
|
||||
- name: XDG_CACHE_HOME
|
||||
value: /var/cache
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
volumeMounts:
|
||||
- mountPath: /run/secrets/restic
|
||||
name: secrets
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
subPath: tmp
|
||||
- mountPath: /var/cache
|
||||
name: tmp
|
||||
subPath: cache
|
||||
securityContext:
|
||||
fsGroup: 8001
|
||||
runAsGroup: 8001
|
||||
runAsNonRoot: true
|
||||
runAsUser: 8001
|
||||
volumes:
|
||||
- name: secrets
|
||||
secret:
|
||||
secretName: restic-exporter
|
||||
- name: tmp
|
||||
emptyDir: {}
|
|
@ -0,0 +1,43 @@
|
|||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
name: restic-exporter
|
||||
namespace: restic-exporter
|
||||
labels:
|
||||
app.kubernetes.io/name: restic-exporter
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
app.kubernetes.io/part-of: restic-exporter
|
||||
spec:
|
||||
encryptedData:
|
||||
password: AgCpMgAhyZTIoqWaH7LdC+OOZdywr8c50WyAdd+f6IBUERfV6Wq8mYcpAIqXoCRqputyiK29+BxkBk4OPSHzEPh1HMUZZg8Hl0x0E4PG+MCLxV4UEbTRkhbHxRkN74X7dPQFtli5yFugiA+WNIi8PD8Ez8G9yGO5Iziud+OLo15iB18ThaSppdYYwtE3J9yOqlc9wez0dfFC63M2xfZtlv2gqh0fuK0CR4eDckk93t1aNcKZMR/QvzCryZnxi1xIs82thl5pszvI9qaHZv2Emvupwuq3MzWqluDhVme8wSoanOHCtq3hiTsGeO1+d+PMxnDVcaAXO1m13Gt6Ck0S3Oz5OoTi0mpjADG+O/TXA4NI1xwqfgE4VV7mHv7yvWIgpWRyD56x/igrpsDRAE4OIlxczVa99eaZHUhw9zsF9NeEene5k5G1BDQCzyFFXSsCZ9jfodZB/gaRqjHCbAM3F2JbFB6vo7zuQZrCRETIS+570NC8yKlDsitG1kGBHJ1Opm9y9lnFyJeGfp1G71Mw3GkF7hwxIC76pltjZob5ZHHgons+9AxOvRVLJJK9nu6MI5FwuJl6CAA+Obh/tjSRkc98wUnJay3qQ09O0AMk6xhSwVpdNs87h3Z2j5yj7SXFDb0LZDpUtipRChh/VPZK6s+DWT3PkhK5RO8w+2ZFr/0s1bo6fQbsfOeqGXdieV2MsVxLSeQARJTNkqhxuohORlUwgsImzmstoI62Ro4MjAkE9JPPGz/zfXdA2IPomrPYy/VXX2sNGdyhYBsURWEfJO46
|
||||
template:
|
||||
metadata:
|
||||
name: restic-exporter
|
||||
namespace: restic-exporter
|
||||
labels:
|
||||
app.kubernetes.io/name: restic-exporter
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
app.kubernetes.io/part-of: restic-exporter
|
||||
|
||||
---
|
||||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
name: restic-s3
|
||||
namespace: restic-exporter
|
||||
labels:
|
||||
app.kubernetes.io/name: restic-s3
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
app.kubernetes.io/part-of: restic-exporter
|
||||
spec:
|
||||
encryptedData:
|
||||
AWS_ACCESS_KEY_ID: AgCiUz6l8sPPSxh8lmtH4HEiQEu2EWN8zpS3Farh4/CxWVn01HufAU7n7xxPjMTkkoCfa42ux/WNLl3Gl539CgAoyaudlAfuzl+Uq5w3S1XesL/lTwBqYr3mF0ZeGxeHBh2h+S9IaTPef9SWFTV/F+X3rDOKw6OfMLSI3TZAarVuvNJ9GnK8vTu5MoE+4IhHfJRBor4qI9TGKOQQDtoQP9xcwWrOQJOKvyXGtOmz/u+H4K5VVsGvPpIWYDHS3V1HIzCaVLDEulL13dyNofXKmQB7mW7yPhRIn/MJGfuAvUXAE5Or1bgamftCujtl1nR8/K5Gq6h5212hVCtY2F8YMBZSt5G+GmitTSz7PJrjTB6OzXy1Uu+bNGWgjtck6bxzm/pkO44bC5/ZvhB0AESDSBIkpBSm1o7LMl6rCF+mUybsGNmRq9mcMvtMwAbUgzEewlMbdA+zN/YqEJFMZWcE9fYHms9pil3O+mDB1LilBMUczPD/zzpP88b2m36XmT3nSRBCTcfx8nqaqB6dvYK2AYjmM9iDPM0jRxZOaA6WZy3PsTUeJvfzxNapfE72lWREtaTVP3wfhwt2BcoiIxWqc7i/9LplcEOl62S2WhMtP0wJGXMSWmzxOPHno98u1aA4r/2K3LBk+9gSzA9grwi3VpK9NsADf1vFbLmd25eDqSe6zQl5YNk+Ty20uHqK53fdqwkM2WlvOmakXlw9dBr1CWGr
|
||||
AWS_SECRET_ACCESS_KEY: AgCJ3K0gt8GqI3go1fQ/pMjFjpW0Z+j/YElaPqTUp8dpuhEdRS3MybCOjLhKwfpQN/nufRXbk0hLZYgloGznjEpdJvP4EEb3uwwdfZ2oP+h8YVyHpHsh7DlnuHUk7RwGJiL+wb+Xnh6ChsYKQQ2HfWnIQ+JZMGKDMQqaq0CwaQAde8MUZlJyqu7tZjD5wP3PFf6WxG2lwQiwD7vMi+M/r8h0a5Sf4TVdXIrRSPE9nvVmuaN7+4eAmOmzRmVqUxXqHhSL0/yMichOFGXXOCWryQlM/gm0BETEj8g9RdhqyJ6iXvgR8/ObZUQ4zoOeonaQQNZYOjgcZ+oWD+8n0gayziCIQz1Czf3HeGyXFpmVRCcQKOFb+Pz/U308zefDT/sCg4ggH8Le/7VVBYqKjUZWPFrJrhVju1IU3BZDs8PZhjaFWDIHvL7IuI9QLLKhhHHNWQ1IQSZgSyQUNYGK0lLbOWpID14w1FgIBI9+JhLSGtue+KwKgZxgrmE9QUI1CEhEPVXCZDCSmjY629QNLiVmNG/SiEL9uJAj2BlXkMpPtZuI4b9iINcw+vS8yYifdiRxcBpCZQTD9DiEf9NRh8pvC4YuwTkFVN8++vQyDtPiJPigJpZo3Uuz2S7dEcsRD28Y2sSiLMOdzTzRwovUigkUUSONCecNWhWeMWneFx7u97PvNMK1ogDOAzjDxvM13I8dw/eK6uXB9XNKZh3NkC/18RsIqdHhLhZKeAzx3VOtbvTOIw==
|
||||
template:
|
||||
metadata:
|
||||
name: restic-s3
|
||||
namespace: restic-exporter
|
||||
labels:
|
||||
app.kubernetes.io/name: restic-s3
|
||||
app.kubernetes.io/component: restic-exporter
|
||||
app.kubernetes.io/part-of: restic-exporter
|
Loading…
Reference in New Issue