Skip to content

Commit 8027b35

Browse files
committed
feat(storage): install restic rest-server
1 parent b774967 commit 8027b35

File tree

5 files changed

+130
-0
lines changed

5 files changed

+130
-0
lines changed

kubernetes/storage/apps/default/kustomization.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ resources:
77
- ./filebrowser/ks.yaml
88
- ./kopia/ks.yaml
99
- ./minio/ks.yaml
10+
- ./restic/ks.yaml
1011
- ./zot/ks.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
# yaml-language-server: $schema=https://kubernetes-schemas.18b.haus/cert-manager.io/certificate_v1.json
3+
apiVersion: cert-manager.io/v1
4+
kind: Certificate
5+
metadata:
6+
name: restic
7+
spec:
8+
secretName: restic-tls
9+
issuerRef:
10+
name: letsencrypt-production
11+
kind: ClusterIssuer
12+
commonName: restic.18b.haus
13+
dnsNames:
14+
- restic.18b.haus
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
---
2+
# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s/helm-charts/main/charts/other/app-template/schemas/helmrelease-helm-v2beta2.schema.json
3+
apiVersion: helm.toolkit.fluxcd.io/v2
4+
kind: HelmRelease
5+
metadata:
6+
name: restic
7+
spec:
8+
interval: 2h
9+
chart:
10+
spec:
11+
chart: app-template
12+
version: 3.5.1
13+
interval: 30m
14+
sourceRef:
15+
kind: HelmRepository
16+
name: bjw-s
17+
namespace: flux-system
18+
values:
19+
controllers:
20+
restic:
21+
annotations:
22+
reloader.stakater.com/auto: "true"
23+
containers:
24+
app:
25+
image:
26+
repository: docker.io/restic/rest-server
27+
tag: 0.13.0
28+
envFrom:
29+
- secretRef:
30+
name: restic-secret
31+
env:
32+
OPTIONS: >
33+
--listen 0.0.0.0:443
34+
--private-repos
35+
--prometheus
36+
--prometheus-no-auth
37+
--tls
38+
--tls-cert /certs/tls.crt
39+
--tls-key /certs/tls.key
40+
probes:
41+
liveness:
42+
enabled: false
43+
readiness:
44+
enabled: false
45+
startup:
46+
enabled: false
47+
resources:
48+
requests:
49+
cpu: 5m
50+
memory: 128Mi
51+
securityContext:
52+
privileged: true
53+
runAsUser: 0
54+
service:
55+
app:
56+
controller: restic
57+
type: LoadBalancer
58+
annotations:
59+
external-dns.alpha.kubernetes.io/hostname: restic.18b.haus
60+
io.cilium/lb-ipam-ips: 192.168.40.156
61+
ports:
62+
https:
63+
port: 443
64+
serviceMonitor:
65+
app:
66+
serviceName: restic
67+
endpoints:
68+
- port: metrics
69+
scheme: http
70+
path: /metrics
71+
interval: 1m
72+
scrapeTimeout: 10s
73+
persistence:
74+
certs:
75+
type: secret
76+
name: restic-tls
77+
globalMounts:
78+
- path: /certs
79+
readOnly: true
80+
repository:
81+
type: hostPath
82+
hostPath: /io/restic
83+
hostPathType: Directory
84+
globalMounts:
85+
- path: /data
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
3+
apiVersion: kustomize.config.k8s.io/v1beta1
4+
kind: Kustomization
5+
resources:
6+
- ./certificate.yaml
7+
- ./helmrelease.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json
3+
apiVersion: kustomize.toolkit.fluxcd.io/v1
4+
kind: Kustomization
5+
metadata:
6+
name: &app restic
7+
namespace: flux-system
8+
spec:
9+
targetNamespace: default
10+
commonMetadata:
11+
labels:
12+
app.kubernetes.io/name: *app
13+
dependsOn:
14+
- name: cert-manager-issuers
15+
path: ./kubernetes/storage/apps/default/restic/app
16+
prune: true
17+
sourceRef:
18+
kind: GitRepository
19+
name: home-kubernetes
20+
wait: false
21+
interval: 30m
22+
retryInterval: 1m
23+
timeout: 5m

0 commit comments

Comments
 (0)