diff --git a/base/depl.yml b/base/depl.yml new file mode 100644 index 0000000..b427212 --- /dev/null +++ b/base/depl.yml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: "syncthing-app" + labels: + app: "syncthing" +spec: + template: + metadata: + name: "syncthing-app" + labels: + owner: "jcabillot" + app: "syncthing" + spec: + automountServiceAccountToken: false + containers: + - name: "syncthing" + image: "syncthing/syncthing" + env: + - name: "PUID" + value: "1000" + - name: "PGID" + value: "1000" + - name: "STGUIADDRESS" + value: "0.0.0.0:8384" + ports: + - name: "http" + containerPort: 8384 + protocol: "TCP" + - name: "syncthing" + containerPort: 22000 + protocol: "UDP" + volumeMounts: + - mountPath: "/data" + name: "data" + - mountPath: "/var/syncthing" + name: "config" + volumes: + - name: "data" + persistentVolumeClaim: + claimName: "data" + - name: "config" + persistentVolumeClaim: + claimName: "config" + replicas: 1 + selector: + matchLabels: + app: "syncthing" diff --git a/base/ingress.yml b/base/ingress.yml new file mode 100644 index 0000000..a14363f --- /dev/null +++ b/base/ingress.yml @@ -0,0 +1,25 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: "syncthing-deployment" + annotations: + kubernetes.io/ingress.class: "traefik" + traefik.ingress.kubernetes.io/router.entrypoints: "web,websecure" + cert-manager.io/cluster-issuer: "letsencrypt-prod" +spec: + tls: + - hosts: + - "sync.opti.cabillot.eu" + secretName: "syncthing-tls" + rules: + - host: "sync.opti.cabillot.eu" + http: + paths: + - path: "/" + pathType: "Prefix" + backend: + service: + name: "sync-svc" + port: + name: "http" diff --git a/base/kustomization.yaml b/base/kustomization.yaml new file mode 100644 index 0000000..bde9ebe --- /dev/null +++ b/base/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- depl.yml +- ingress.yml +- pv-config.yml +- pv-data.yml +- pvc-config.yml +- pvc-data.yml +- svc.yml diff --git a/base/pv-config.yml b/base/pv-config.yml new file mode 100644 index 0000000..8fa7fbd --- /dev/null +++ b/base/pv-config.yml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: sync-config + labels: + type: local +spec: + storageClassName: sync-config + capacity: + storage: 1Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/extradata/sync-config" diff --git a/base/pv-data.yml b/base/pv-data.yml new file mode 100644 index 0000000..8096511 --- /dev/null +++ b/base/pv-data.yml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: sync-data + labels: + type: local +spec: + storageClassName: sync-data + capacity: + storage: 100Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/extradata/sync-data" diff --git a/base/pvc-config.yml b/base/pvc-config.yml new file mode 100644 index 0000000..02ec336 --- /dev/null +++ b/base/pvc-config.yml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + creationTimestamp: null + labels: + io.kompose.service: sync-svc + name: config +spec: + storageClassName: sync-config + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +status: {} diff --git a/base/pvc-data.yml b/base/pvc-data.yml new file mode 100644 index 0000000..4ad8933 --- /dev/null +++ b/base/pvc-data.yml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + creationTimestamp: null + labels: + io.kompose.service: sync-svc + name: data +spec: + storageClassName: sync-data + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Gi diff --git a/base/svc.yml b/base/svc.yml new file mode 100644 index 0000000..eb0c59d --- /dev/null +++ b/base/svc.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: 'sync-svc' +spec: + type: "ClusterIP" + ports: + - name: "http" + port: 8384 + protocol: "TCP" + targetPort: 8384 + selector: + app: "syncthing"