diff --git a/_apps/traccar.yaml b/_apps/traccar.yaml new file mode 100644 index 0000000..61d1469 --- /dev/null +++ b/_apps/traccar.yaml @@ -0,0 +1,24 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: traccar + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + destination: + namespace: traccar + server: https://kubernetes.default.svc + project: apps + source: + path: traccar + repoURL: https://git.tbrnt.ch/tobru/gitops-tbrnt.git + targetRevision: HEAD + syncPolicy: + automated: + prune: true +--- +apiVersion: v1 +kind: Namespace +metadata: + name: traccar diff --git a/traccar/deployment.yaml b/traccar/deployment.yaml new file mode 100644 index 0000000..8e04d9a --- /dev/null +++ b/traccar/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: traccar + name: traccar +spec: + replicas: 1 + selector: + matchLabels: + app: traccar + strategy: {} + template: + metadata: + labels: + app: traccar + spec: + containers: + - image: docker.io/traccar/traccar:4.12-alpine + name: traccar + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8082 + protocol: TCP + name: http + - containerPort: 5027 + protocol: TCP + name: teltonika + - containerPort: 5055 + protocol: TCP + name: traccar + - containerPort: 5144 + protocol: TCP + name: owntracks + volumeMounts: + - name: config + mountPath: /opt/traccar/conf/traccar.xml + subPath: traccar.xml + - name: logs + mountPath: /opt/traccar/logs + volumes: + - name: config + configMap: + name: traccar-config + - name: logs + emptyDir: {} diff --git a/traccar/ingress.yaml b/traccar/ingress.yaml new file mode 100644 index 0000000..8057ac9 --- /dev/null +++ b/traccar/ingress.yaml @@ -0,0 +1,63 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: traccar + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + ingress.kubernetes.io/ssl-redirect: "true" +spec: + rules: + - host: traccar.tbrnt.ch + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: traccar + port: + number: 8082 + - host: osmand.traccar.tbrnt.ch + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: traccar + port: + number: 5055 + - host: teltonika.traccar.tbrnt.ch + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: traccar + port: + number: 5027 + - host: owntracks.traccar.tbrnt.ch + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: traccar + port: + number: 5144 + tls: + - hosts: + - traccar.tbrnt.ch + secretName: traccar-tbrnt-ch + - hosts: + - osmand.traccar.tbrnt.ch + secretName: osmand-traccar-tbrnt-ch + - hosts: + - teltonika.traccar.tbrnt.ch + secretName: teltonika-traccar-tbrnt-ch + - hosts: + - owntracks.traccar.tbrnt.ch + secretName: owntracks-traccar-tbrnt-ch diff --git a/traccar/mariadb.yaml b/traccar/mariadb.yaml new file mode 100644 index 0000000..47449bd --- /dev/null +++ b/traccar/mariadb.yaml @@ -0,0 +1,56 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mariadb +spec: + selector: + matchLabels: + app: mariadb + serviceName: mariadb + replicas: 1 + template: + metadata: + labels: + app: mariadb + spec: + terminationGracePeriodSeconds: 10 + containers: + - name: mariadb + image: docker.io/mariadb:10.5 + env: + - name: MYSQL_ROOT_PASSWORD + value: xJ2YdqrbPXla + - name: MYSQL_DATABASE + value: traccar + - name: MYSQL_USER + value: traccar + - name: MYSQL_PASSWORD + value: J0ICsL5JTPLt + ports: + - containerPort: 3306 + name: mariadb + volumeMounts: + - name: mariadb + mountPath: /var/lib/mysql + volumeClaimTemplates: + - metadata: + name: mariadb + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 5Gi +--- +apiVersion: v1 +kind: Service +metadata: + name: mariadb + labels: + app: mariadb +spec: + ports: + - port: 3306 + name: mariadb + clusterIP: None + selector: + app: mariadb diff --git a/traccar/service.yaml b/traccar/service.yaml new file mode 100644 index 0000000..7862909 --- /dev/null +++ b/traccar/service.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: traccar + name: traccar +spec: + ports: + - name: teltonika + port: 5027 + protocol: TCP + targetPort: 5027 + - name: traccar + port: 5055 + protocol: TCP + targetPort: 5055 + - name: owntracks + port: 5144 + protocol: TCP + targetPort: 5144 + - name: http + port: 8082 + protocol: TCP + targetPort: 8082 + selector: + app: traccar + type: ClusterIP diff --git a/traccar/traccar-configmap.yaml b/traccar/traccar-configmap.yaml new file mode 100644 index 0000000..0ba2f53 --- /dev/null +++ b/traccar/traccar-configmap.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: traccar-config +data: + traccar.xml: | + + + + ./conf/default.xml + com.mysql.cj.jdbc.Driver + jdbc:mysql://mariadb:3306/traccar?serverTimezone=UTC&useSSL=false&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode='' + traccar + J0ICsL5JTPLt + http://localhost + true + nominatim + https://nominatim.openstreetmap.org/reverse + +