Remove the disabled apps and a stray Argo CD patch copy

Nothing deploys disable/: the apps in it (ente-photos, minio, mist, owntracks, traccar, ttrss, whisper and others) are gone from the cluster apart from some old TLS secrets. git history keeps them. The argocd-cm patch copy was an old leftover that kustomize never used.
This commit is contained in:
Ruben Hensen committed 2026-10-23 23:39:49 +02:00
1 parent d747530f52
commit 416356b4d5
78 files changed
-5935

No files matched your search

-14
View File
@@ -1,14 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
# kustomize.buildOptions: "--enable-helm"
resource.exclusions: |
- apiGroups:
- "velero.io"
kinds:
- "Backup"
-35
View File
@@ -1,35 +0,0 @@
apiVersion: velero.io/v1
kind: Schedule
metadata:
name: daily-backup
namespace: velero
annotations:
velero.io/csi-volumesnapshot-class_driver.longhorn.io: "longhorn-backup-vsc"
spec:
schedule: "0 1 * * *" # Daily at 1 AM
template:
# includedNamespaces:
# - immich
# - nextcloud
# - home-assistant
# - ttrss
ttl: 30d # 30 days
defaultVolumesToFsBackup: true
---
apiVersion: velero.io/v1
kind: Schedule
metadata:
name: weekly-backup
namespace: velero
annotations:
velero.io/csi-volumesnapshot-class_driver.longhorn.io: "longhorn-backup-vsc"
spec:
schedule: "0 0 * * 0" # Weekly on Sunday at midnight
template:
# includedNamespaces:
# - immich
# - nextcloud
# - home-assistant
# - ttrss
ttl: 90d # 90 days
defaultVolumesToFsBackup: true
-131
View File
@@ -1,131 +0,0 @@
# apiVersion: argoproj.io/v1alpha1
# kind: Application
# metadata:
# name: blog-helm
# namespace: argocd
# finalizers:
# - resources-finalizer.argocd.argoproj.io
# spec:
# destination:
# namespace: blog
# server: https://kubernetes.default.svc
# project: default
# source:
# repoURL: registry-1.docker.io/bitnamicharts
# targetRevision: 19.9.0
# chart: ghost
# helm:
# values: |
# image:
# # repository: ghost
# # tag: 5.114.1
# debug: true
# ghostUsername: Ruben
# ## @param existingSecret Name of existing secret containing Ghost credentials
# ## NOTE: Must contain key `ghost-password`
# ## NOTE: When it's set, the `ghostPassword` parameter is ignored
# existingSecret: ghost-es
# ghostEmail: ruben@hensen.io
# ghostBlogTitle: Catch && Compile
# ghostHost: "blog.hensen.io"
# ghostPath: /
# ghostEnableHttps: true
# ## SMTP mail delivery configuration
# ## ref: https://github.com/bitnami/containers/tree/main/bitnami/ghost/#smtp-configuration
# ## @param smtpHost SMTP server host
# ## @param smtpPort SMTP server port
# ## @param smtpUser SMTP username
# ## @param smtpPassword SMTP user password
# ## @param smtpService SMTP service
# ## @param smtpProtocol SMTP protocol (ssl or tls)
# ##
# smtpHost: smtp.hostinger.com
# smtpPort: 587
# smtpUser: ruben@hensen.io
# smtpPassword: "ignored-but-hast-to-exist-else-password-isnt-passed"
# smtpProtocol: tls
# smtpService: hostinger
# ## @param smtpExistingSecret The name of an existing secret with SMTP credentials
# ## NOTE: Must contain key `smtp-password`
# ## NOTE: When it's set, the `smtpPassword` parameter is ignored
# ##
# ## @param extraEnvVars Array with extra environment variables to add to the Ghost container
# ## e.g:
# ## extraEnvVars:
# ## - name: FOO
# ## value: "bar"
# ##
# # extraEnvVars:
# # - name: mail__options__secure
# # value: "false"
# ## @param allowEmptyPassword Allow the container to be started with blank passwords
# allowEmptyPassword: false
# resourcesPreset: "micro"
# containerPorts:
# http: 2368
# https: 2368
# service:
# type: ClusterIP
# ports:
# http: 80
# https: 443
# ingress:
# enabled: true
# ingressClassName: nginx
# hostname: blog.hensen.io
# path: /
# annotations:
# cert-manager.io/cluster-issuer: prod-cluster-issuer
# nginx.ingress.kubernetes.io/proxy-body-size: 1G
# tls: true
# tlsWwwPrefix: false
# selfSigned: false
# persistence:
# enabled: true
# accessModes:
# - ReadWriteOnce
# size: 8Gi
# mysql:
# enabled: true
# architecture: standalone
# ## MySQL Authentication parameters
# ## @param mysql.auth.rootPassword MySQL root password
# ## @param mysql.auth.database MySQL custom database
# ## @param mysql.auth.username MySQL custom user name
# ## @param mysql.auth.password MySQL custom user password
# ## @param mysql.auth.existingSecret Existing secret with MySQL credentials
# ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#setting-the-root-password-on-first-run
# ## https://github.com/bitnami/containers/tree/main/bitnami/mysql/#creating-a-database-on-first-run
# ## https://github.com/bitnami/containers/tree/main/bitnami/mysql/#creating-a-database-user-on-first-run
# auth:
# database: bitnami_ghost
# username: bn_ghost
# existingSecret: ghost-es
# primary:
# ## MySQL Primary Persistence parameters
# ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
# ## @param mysql.primary.persistence.enabled Enable persistence on MySQL using PVC(s)
# ## @param mysql.primary.persistence.storageClass Persistent Volume storage class
# ## @param mysql.primary.persistence.accessModes [array] Persistent Volume access modes
# ## @param mysql.primary.persistence.size Persistent Volume size
# ##
# persistence:
# enabled: true
# storageClass: ""
# accessModes:
# - ReadWriteOnce
# size: 8Gi
# ## MySQL primary container's resource requests and limits
# ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
# ## We usually recommend not to specify default resources and to leave this as a conscious
# ## choice for the user. This also increases chances charts run on environments with little
# ## resources, such as Minikube. If you do want to specify resources, uncomment the following
# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# ## @param mysql.primary.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production)
# resourcesPreset: "small"
# syncPolicy:
# syncOptions:
# - CreateNamespace=true
# automated:
# selfHeal: true
-13
View File
@@ -1,13 +0,0 @@
apiVersion: velero.io/v1
kind: Schedule
metadata:
name: daily-backup3
spec:
schedule: "*/1 * * * *" # Daily at 1 AM
template:
ttl: 1h # 30 days
defaultVolumesToFsBackup: true
snapshotVolumes: true
snapshotMoveData: true
includedNamespaces:
- ttrss
-18
View File
@@ -1,18 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ente-photos-folder
spec:
project: default
source:
repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
path: ente-photos
destination:
server: https://kubernetes.default.svc
namespace: ente-photos
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: custom-logs
name: custom-logs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
-83
View File
@@ -1,83 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: museum
spec:
replicas: 1
selector:
matchLabels:
app: ente
strategy:
type: Recreate
template:
metadata:
labels:
app: ente
spec:
containers:
- env:
- name: ENTE_DB_HOST
value: "helm-postgresql"
- name: ENTE_DB_PORT
value: "5432"
- name: ENTE_DB_NAME
value: "ente_db"
- name: ENTE_DB_USER
value: "pguser"
- name: ENTE_DB_PASSWORD
valueFrom:
secretKeyRef:
name: ente-photos-config
key: pgpass
- name: ENTE_S3_ARE_LOCAL_BUCKETS
value: "false"
- name: ENTE_S3_ENTE-PHOTOS_KEY
value: "ente-photos-user"
- name: ENTE_S3_ENTE-PHOTOS_SECRET
valueFrom:
secretKeyRef:
name: ente-photos-config
key: miniopass
- name: ENTE_S3_ENTE-PHOTOS_ENDPOINT
value: "minio.hensen.io:3200"
- name: ENTE_S3_ENTE-PHOTOS_REGION
value: "nl"
- name: ENTE_S3_ENTE-PHOTOS_BUCKET
value: "ente-photos"
image: ghcr.io/ente-io/server
name: museum
# command: [ "sh", "-c"]
# # loop forever, outputting "yo" every 5 seconds
# args: ["while true; do echo 'yo' && sleep 5; done;"]
ports:
- containerPort: 8080
protocol: TCP
- containerPort: 2112
protocol: TCP
volumeMounts:
- mountPath: /var/logs
name: custom-logs
- mountPath: /museum.yaml
name: museum-claim1
readOnly: true
- mountPath: /data
name: museum-claim3
readOnly: true
# - args:
# - TCP-LISTEN:3200,fork,reuseaddr
# - TCP:minio:3200
# image: alpine/socat
# name: socat
restartPolicy: Always
volumes:
- name: custom-logs
persistentVolumeClaim:
claimName: custom-logs
- name: museum-claim1
persistentVolumeClaim:
claimName: museum-claim1
readOnly: true
- name: museum-claim3
persistentVolumeClaim:
claimName: museum-claim3
readOnly: true
-36
View File
@@ -1,36 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ente-server-ingress
annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: prod-cluster-issuer
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "http://localhost:3000/"
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
# If you encounter a redirect loop or are getting a 307 response code
# then you need to force the nginx ingress to connect to the backend using HTTPS.
#
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
namespace: ente-photos
spec:
ingressClassName: nginx
rules:
- host: ente-server.hensen.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ente-service
port:
name: "eightyeighty"
# TLS configuration for HTTPS
tls:
# TLS secretName used on ClusterIssuer
- secretName: letsencrypt-prod
hosts:
- ente-server.hensen.io
-21
View File
@@ -1,21 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: template
spec:
refreshInterval: "15s"
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: ente-photos-config
data:
- secretKey: pgpass
remoteRef:
key: ente-photos-postgres
property: password
- secretKey: miniopass
remoteRef:
key: minio-ente-photos-user
property: password
@@ -1,23 +0,0 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: ente-web
labels:
app: ente-web
# docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
spec:
replicas: 1
selector:
matchLabels:
app: ente-web
template:
metadata:
labels:
app: ente-web
spec:
containers:
- name: ente-web
image: hebury/ente-web:0.2
ports:
- containerPort: 3000
protocol: TCP
-36
View File
@@ -1,36 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ente-web-ingress
annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: prod-cluster-issuer
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
# nginx.ingress.kubernetes.io/enable-cors: "true"
# nginx.ingress.kubernetes.io/cors-allow-origin: "http://localhost:3000/"
# nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
# If you encounter a redirect loop or are getting a 307 response code
# then you need to force the nginx ingress to connect to the backend using HTTPS.
#
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
namespace: ente-photos
spec:
ingressClassName: nginx
rules:
- host: ente.hensen.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ente-service
port:
name: "https"
# TLS configuration for HTTPS
tls:
# TLS secretName used on ClusterIssuer
- secretName: letsencrypt-prod2
hosts:
- ente.hensen.io
-11
View File
@@ -1,11 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: ente-web-service
spec:
ports:
- name: https
port: 3000
targetPort: 3000
selector:
app: ente-web
-25
View File
@@ -1,25 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: helm-postgresql
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
syncPolicy:
syncOptions:
- CreateNamespace=true
project: default
sources:
- chart: postgresql
repoURL: registry-1.docker.io/bitnamicharts
targetRevision: 15.5.29
helm:
valueFiles:
- $values/ente-photos/postgres-values.yaml
- repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
ref: values
destination:
server: https://kubernetes.default.svc
namespace: ente-photos
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: museum-claim1
name: museum-claim1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: museum-claim3
name: museum-claim3
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
-14
View File
@@ -1,14 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: ente-service
spec:
selector:
app: ente
ports:
- name: "eightyeighty"
port: 8080
targetPort: 8080
- name: "2112"
port: 2112
targetPort: 2112
-16
View File
@@ -1,16 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: pgadmin-es
namespace: ente-photos
spec:
refreshInterval: "15s"
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: pgadmin-secret
dataFrom:
- extract:
key: pgadmin
-45
View File
@@ -1,45 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgadmin
spec:
selector:
matchLabels:
app: pgadmin
replicas: 1
template:
metadata:
labels:
app: pgadmin
spec:
containers:
- name: pgadmin4
image: dpage/pgadmin4
env:
- name: PGADMIN_DEFAULT_EMAIL
value: "admin@admin.com"
- name: PGADMIN_DEFAULT_PASSWORD
valueFrom:
secretKeyRef:
name: pgadmin-secret
key: pgadmin-default-password
- name: PGADMIN_PORT
value: "80"
ports:
- containerPort: 80
name: pgadminport
---
apiVersion: v1
kind: Service
metadata:
name: pgadmin
labels:
app: pgadmin
spec:
selector:
app: pgadmin
type: NodePort
ports:
- port: 80
nodePort: 30200
File diff suppressed because it is too large. Load diff
-16
View File
@@ -1,16 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: postgresql-es
namespace: ente-photos
spec:
refreshInterval: "15s"
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: postgres-config
dataFrom:
- extract:
key: ente-photos-postgres
-95
View File
@@ -1,95 +0,0 @@
# apiVersion: argoproj.io/v1alpha1
# kind: Application
# metadata:
# name: mbg-helm
# namespace: argocd
# finalizers:
# - resources-finalizer.argocd.argoproj.io
# spec:
# destination:
# namespace: mbg
# server: https://kubernetes.default.svc
# project: default
# source:
# repoURL: registry-1.docker.io/bitnamicharts
# targetRevision: 24.1.13
# chart: wordpress
# helm:
# values: |
# service:
# ## @param service.type WordPress service type
# ##
# type: ClusterIP
# ingress:
# enabled: true
# ingressClassName: nginx
# hostname: scoutingmbg.nl
# path: /
# annotations:
# cert-manager.io/cluster-issuer: prod-cluster-issuer
# nginx.ingress.kubernetes.io/proxy-body-size: 1G
# tls: true
# tlsWwwPrefix: false
# selfSigned: false
# extraHosts:
# - name: www.scoutingmbg.nl
# extraPaths: []
# extraTls:
# - secretName: letsencrypt-prod
# hosts:
# - scoutingmbg.nl
# - www.scoutingmbg.nl
# secrets: []
# extraRules: []
# persistence:
# ## @param persistence.enabled Enable persistence using Persistent Volume Claims
# ##
# enabled: true
# ## @param persistence.storageClass Persistent Volume storage class
# ## If defined, storageClassName: <storageClass>
# ## If set to "-", storageClassName: "", which disables dynamic provisioning
# ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner
# ##
# storageClass: ""
# ## @param persistence.accessModes [array] Persistent Volume access modes
# ##
# accessModes:
# - ReadWriteOnce
# ## @param persistence.accessMode Persistent Volume access mode (DEPRECATED: use `persistence.accessModes` instead)
# ##
# accessMode: ReadWriteOnce
# ## @param persistence.size Persistent Volume size
# ##
# size: 10Gi
# ## @param persistence.dataSource Custom PVC data source
# ##
# dataSource: {}
# ## @param persistence.existingClaim The name of an existing PVC to use for persistence
# ##
# existingClaim: ""
# ## @param persistence.selector Selector to match an existing Persistent Volume for WordPress data PVC
# ## If set, the PVC can't have a PV dynamically provisioned for it
# ## E.g.
# ## selector:
# ## matchLabels:
# ## app: my-app
# ##
# selector: {}
# ## @param persistence.annotations Persistent Volume Claim annotations
# ##
# annotations: {}
# allowEmptyPassword: false
# existingSecret: wordpress-credentials
# wordpressUsername: rubenhensen
# smtpExistingSecret: wordpress-credentials
# customHTAccessCM: prod-wordpress-cm
# resourcesPreset: "large"
# livenessProbe:
# enabled: false
# syncPolicy:
# syncOptions:
# - CreateNamespace=true
# automated:
# selfHeal: true
-20
View File
@@ -1,20 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: minio-folder
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
path: minio
destination:
server: https://kubernetes.default.svc
namespace: minio
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
-28
View File
@@ -1,28 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: minio-operator
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
prune: true
project: default
sources:
- chart: operator
repoURL: https://operator.min.io
targetRevision: 6.0.3
helm:
valueFiles:
- $values/minio/values-operator.yaml
- repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
ref: values
destination:
server: https://kubernetes.default.svc
namespace: minio-operator
-30
View File
@@ -1,30 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: minio-tenant
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
prune: true
project: default
sources:
- chart: tenant
repoURL: https://operator.min.io
targetRevision: 6.0.3
helm:
valueFiles:
- $values/minio/values-tenant.yaml
- repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
ref: values
destination:
server: https://kubernetes.default.svc
namespace: minio-tenant
-31
View File
@@ -1,31 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: minio-tenant-es
namespace: minio-tenant
spec:
refreshInterval: "15s"
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: minio-env-configuration
data:
- secretKey: config.env
remoteRef:
key: minio-tenant-root
property: config.env
# # metadataPolicy to fetch all the labels in JSON format
# - secretKey: tags
# remoteRef:
# metadataPolicy: Fetch
# key: foo
# # metadataPolicy to fetch a specific label (dev) from the source secret
# - secretKey: developer
# remoteRef:
# metadataPolicy: Fetch
# key: foo
# property: dev
-319
View File
@@ -1,319 +0,0 @@
###
# Root key for Operator Helm Chart
operator:
###
# An array of environment variables to pass to the Operator deployment.
# Pass an empty array to start Operator with defaults.
#
# For example:
#
# .. code-block:: yaml
#
# env:
# - name: MINIO_OPERATOR_DEPLOYMENT_NAME
# valueFrom:
# fieldRef:
# fieldPath: metadata.labels['app.kubernetes.io/name']
# - name: MINIO_CONSOLE_TLS_ENABLE
# value: "off"
# - name: CLUSTER_DOMAIN
# value: "cluster.domain"
# - name: WATCHED_NAMESPACE
# value: ""
# - name: MINIO_OPERATOR_RUNTIME
# value: "OpenShift"
#
# See `Operator environment variables <https://github.com/minio/operator/blob/master/docs/env-variables.md>`__ for a list of all supported values.
env:
- name: OPERATOR_STS_ENABLED
value: "on"
###
# Specify the Operator container image to use for the deployment.
# ``image.tag``
# For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.11 tag.
# The container pulls the image if not already present:
#
# .. code-block:: yaml
#
# image:
# repository: quay.io/minio/operator
# tag: v5.0.11
# pullPolicy: IfNotPresent
#
# The chart also supports specifying an image based on digest value:
#
# .. code-block:: yaml
#
# image:
# repository: quay.io/minio/operator@sha256
# digest: 28c80b379c75242c6fe793dfbf212f43c602140a0de5ebe3d9c2a3a7b9f9f983
# pullPolicy: IfNotPresent
#
image:
repository: quay.io/minio/operator
tag: v5.0.11
pullPolicy: IfNotPresent
###
#
# An array of Kubernetes secrets to use for pulling images from a private ``image.repository``.
# Only one array element is supported at this time.
imagePullSecrets: [ ]
###
#
# The name of a custom `Container Runtime <https://kubernetes.io/docs/concepts/containers/runtime-class/>`__ to use for the Operator pods.
runtimeClassName: ~
###
# An array of `initContainers <https://kubernetes.io/docs/concepts/workloads/pods/init-containers/>`__ to start up before the Operator pods.
# Exercise care as ``initContainer`` failures prevent Operator pods from starting.
# Pass an empty array to start the Operator normally.
initContainers: [ ]
###
# The number of Operator pods to deploy.
# Higher values increase availability in the event of worker node failures.
#
# The cluster must have sufficient number of available worker nodes to fulfill the request.
# Operator pods deploy with pod anti-affinity by default, preventing Kubernetes from scheduling multiple pods onto a single Worker node.
replicaCount: 1
###
# The Kubernetes `SecurityContext <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/>`__ to use for deploying Operator resources.
#
# You may need to modify these values to meet your cluster's security and access settings.
securityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
fsGroup: 1000
###
# The Kubernetes `SecurityContext <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/>`__ to use for deploying Operator containers.
# You may need to modify these values to meet your cluster's security and access settings.
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
###
# An array of `Volumes <https://kubernetes.io/docs/concepts/storage/volumes/>`__ which the Operator can mount to pods.
#
# The volumes must exist *and* be accessible to the Operator pods.
volumes: [ ]
###
# An array of volume mount points associated to each Operator container.
#
# Specify each item in the array as follows:
#
# .. code-block:: yaml
#
# volumeMounts:
# - name: volumename
# mountPath: /path/to/mount
#
# The ``name`` field must correspond to an entry in the ``volumes`` array.
volumeMounts: [ ]
###
# Any `Node Selectors <https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/>`__ to apply to Operator pods.
#
# The Kubernetes scheduler uses these selectors to determine which worker nodes onto which it can deploy Operator pods.
#
# If no worker nodes match the specified selectors, the Operator deployment will fail.
nodeSelector: { }
###
#
# The `Pod Priority <https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/>`__ to assign to Operator pods.
priorityClassName: ""
###
#
# The `affinity <https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/>`__ or anti-affinity settings to apply to Operator pods.
#
# These settings determine the distribution of pods across worker nodes and can help prevent or allow colocating pods onto the same worker nodes.
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: name
operator: In
values:
- minio-operator
topologyKey: kubernetes.io/hostname
###
#
# An array of `Toleration labels <https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/>`__ to associate to Operator pods.
#
# These settings determine the distribution of pods across worker nodes.
tolerations: [ ]
###
#
# An array of `Topology Spread Constraints <https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/>`__ to associate to Operator pods.
#
# These settings determine the distribution of pods across worker nodes.
topologySpreadConstraints: [ ]
###
#
# The `Requests or Limits <https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/>`__ for resources to associate to Operator pods.
#
# These settings can control the minimum and maximum resources requested for each pod.
# If no worker nodes can meet the specified requests, the Operator may fail to deploy.
resources:
requests:
cpu: 200m
memory: 256Mi
ephemeral-storage: 500Mi
###
# Root key for Operator Console
console:
###
# Specify ``false`` to disable the Operator Console.
#
# If the Operator Console is disabled, all management of Operator Tenants must be done through the Kubernetes API.
enabled: true
###
# Specify the Operator Console container image to use for the deployment.
# ``image.tag``
# For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v5.0.11 tag.
# The container pulls the image if not already present:
#
# .. code-block:: yaml
#
# image:
# repository: quay.io/minio/operator
# tag: v5.0.11
# pullPolicy: IfNotPresent
#
# The chart also supports specifying an image based on digest value:
#
# .. code-block:: yaml
#
# image:
# repository: quay.io/minio/operator@sha256
# digest: 28c80b379c75242c6fe793dfbf212f43c602140a0de5ebe3d9c2a3a7b9f9f983
# pullPolicy: IfNotPresent
#
# The specified values should match that of ``operator.image`` to ensure predictable operations.
image:
repository: quay.io/minio/operator
tag: v5.0.11
pullPolicy: IfNotPresent
###
# An array of environment variables to pass to the Operator Console deployment.
# Pass an empty array to start Operator Console with defaults.
env: [ ]
###
#
# An array of Kubernetes secrets to use for pulling images from a private ``image.repository``.
imagePullSecrets: [ ]
###
#
# The name of a custom `Container Runtime <https://kubernetes.io/docs/concepts/containers/runtime-class/>`__ to use for the Operator Console pods.
runtimeClassName: ~
###
# An array of `initContainers <https://kubernetes.io/docs/concepts/workloads/pods/init-containers/>`__ to start up before the Operator Console pods.
# Exercise care as ``initContainer`` failures prevent Console pods from starting.
# Pass an empty array to start the Console normally.
initContainers: [ ]
###
# The number of Operator Console pods to deploy.
# Higher values increase availability in the event of worker node failures.
#
# The cluster must have sufficient number of available worker nodes to fulfill the request.
# Console pods deploy with pod anti-affinity by default, preventing Kubernetes from scheduling multiple pods onto a single Worker node.
replicaCount: 1
###
# Any `Node Selectors <https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/>`__ to apply to Operator Console pods.
#
# The Kubernetes scheduler uses these selectors to determine which worker nodes onto which it can deploy Console pods.
#
# If no worker nodes match the specified selectors, the Console deployment will fail.
nodeSelector: { }
###
#
# The `affinity <https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/>`__ or anti-affinity settings to apply to Operator Console pods.
#
# These settings determine the distribution of pods across worker nodes and can help prevent or allow colocating pods onto the same worker nodes.
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: name
operator: In
values:
- minio-operator
topologyKey: kubernetes.io/hostname
###
#
# An array of `Toleration labels <https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/>`__ to associate to Operator Console pods.
#
# These settings determine the distribution of pods across worker nodes.
tolerations: [ ]
###
#
# An array of `Topology Spread Constraints <https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/>`__ to associate to Operator Console pods.
#
# These settings determine the distribution of pods across worker nodes.
topologySpreadConstraints: [ ]
###
#
# The `Requests or Limits <https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/>`__ for resources to associate to Operator Console pods.
#
# These settings can control the minimum and maximum resources requested for each pod.
# If no worker nodes can meet the specified requests, the Console may fail to deploy.
resources:
requests:
cpu: 0.25
memory: 512Mi
###
# The Kubernetes `SecurityContext <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/>`__ to use for deploying Operator Console resources.
#
# You may need to modify these values to meet your cluster's security and access settings.
securityContext:
runAsUser: 1000
runAsNonRoot: true
###
# The Kubernetes `SecurityContext <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/>`__ to use for deploying Operator Console containers.
# You may need to modify these values to meet your cluster's security and access settings.
containerSecurityContext:
runAsUser: 1000
runAsNonRoot: true
###
# Configures `Ingress <https://kubernetes.io/docs/concepts/services-networking/ingress/>`__ for the Operator Console.
#
# Set the keys to conform to the Ingress controller and configuration of your choice.
# ingress:
# enabled: true
# ingressClassName: nginx
# labels: { }
# annotations:
# cert-manager.io/cluster-issuer: prod-cluster-issuer
# # nginx.ingress.kubernetes.io/ssl-passthrough: "true"
# nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
# tls:
# # TLS secretName used on ClusterIssuer
# - secretName: letsencrypt-prod
# hosts:
# - minio-console.hensen.io
# host: minio-console.hensen.io
# path: /
# pathType: Prefix
###
# An array of `Volumes <https://kubernetes.io/docs/concepts/storage/volumes/>`__ which the Operator Console can mount to pods.
#
# The volumes must exist *and* be accessible to the Console pods.
volumes:
- name: tmp
emptyDir: {}
###
# An array of volume mount points associated to each Operator Console container.
#
# Specify each item in the array as follows:
#
# .. code-block:: yaml
#
# volumeMounts:
# - name: volumename
# mountPath: /path/to/mount
#
# The ``name`` field must correspond to an entry in the ``volumes`` array.
volumeMounts:
- name: tmp
readOnly: false
mountPath: /tmp/certs/CAs
-120
View File
@@ -1,120 +0,0 @@
tenant:
name: myminio
image:
repository: quay.io/minio/minio
tag: RELEASE.2024-08-17T01-24-54Z
pullPolicy: IfNotPresent
imagePullSecret: { }
scheduler: { }
configuration:
name: minio-env-configuration
configSecret:
existingSecret: true
pools:
- servers: 1
name: pool-0
volumesPerServer: 1
size: 10Gi
storageAnnotations: { }
annotations: { }
labels: { }
tolerations: [ ]
nodeSelector: { }
affinity: { }
resources: { }
securityContext:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
fsGroupChangePolicy: "OnRootMismatch"
runAsNonRoot: true
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
seccompProfile:
type: RuntimeDefault
topologySpreadConstraints: [ ]
mountPath: /export
subPath: /data
metrics:
enabled: false
port: 9000
protocol: http
certificate:
externalCaCertSecret: [ ]
externalCertSecret: [ ]
requestAutoCert: true
certConfig: { }
features:
bucketDNS: false
domains: { }
enableSFTP: false
buckets: [ ]
users: [ ]
podManagementPolicy: Parallel
liveness: { }
readiness: { }
startup: { }
lifecycle: { }
exposeServices: { }
serviceAccountName: ""
prometheusOperator: false
logging: { }
serviceMetadata: { }
env: [ ]
priorityClassName: ""
additionalVolumes: [ ]
additionalVolumeMounts: [ ]
ingress:
api:
enabled: true
ingressClassName: nginx
# labels: { }
annotations:
cert-manager.io/cluster-issuer: prod-cluster-issuer
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
tls:
- secretName: letsencrypt-prod
hosts:
- minio.hensen.io
host: minio.hensen.io
path: /
pathType: Prefix
console:
enabled: true
ingressClassName: nginx
# labels: { }
annotations:
cert-manager.io/cluster-issuer: prod-cluster-issuer
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
tls:
- secretName: letsencrypt-prod-2
hosts:
- minio-console.hensen.io
host: minio-console.hensen.io
path: /
pathType: Prefix
-21
View File
@@ -1,21 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: mist-folder
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
path: mist
destination:
server: https://kubernetes.default.svc
namespace: mist
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
-32
View File
@@ -1,32 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rowing-webcam-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
nginx.ingress.kubernetes.io/proxy-body-size: "10m"
cert-manager.io/cluster-issuer: prod-cluster-issuer
# Add basic auth to protect the webcam
# nginx.ingress.kubernetes.io/auth-type: basic
# nginx.ingress.kubernetes.io/auth-secret: rowing-webcam-auth
# nginx.ingress.kubernetes.io/auth-realm: "Rowing Club Webcam"
spec:
ingressClassName: nginx
rules:
- host: mist.hensen.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: rowing-webcam-service
port:
number: 80
tls:
- hosts:
- mist.hensen.io
secretName: mist-hensen-io-tls # Make sure this TLS secret exists
-13
View File
@@ -1,13 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: rowing-webcam-service
namespace: default
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
# This is an ExternalName service that points to your Raspberry Pi
type: ExternalName
externalName: 192.168.1.201
-108
View File
@@ -1,108 +0,0 @@
# apiVersion: argoproj.io/v1alpha1
# kind: Application
# metadata:
# name: nextcloud-helm
# namespace: argocd
# finalizers:
# - resources-finalizer.argocd.argoproj.io
# spec:
# destination:
# namespace: nextcloud
# server: https://kubernetes.default.svc
# project: default
# source:
# repoURL: https://nextcloud.github.io/helm/
# targetRevision: 6.6.3
# chart: nextcloud
# helm:
# values: |
# persistence:
# # Nextcloud Data (/var/www/html)
# enabled: true
# accessMode: ReadWriteOnce
# size: 100Gi
# resources: {}
# # We usually recommend not to specify default resources and to leave this as a conscious
# # choice for the user. This also increases chances charts run on environments with little
# # resources, such as Minikube. If you do want to specify resources, uncomment the following
# # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# # limits:
# # cpu: 100m
# # memory: 128Mi
# # requests:
# # cpu: 100m
# # memory: 128Mi
# nextcloud:
# host: drive.hensen.io
# configs:
# proxy.config.php: |
# <?php
# $CONFIG = array (
# 'trusted_proxies' => ['10.0.0.0/8', '192.168.1.1/32'],
# );
# phone.config.php: |
# <?php
# $CONFIG = array (
# 'default_phone_region' => 'NL',
# );
# phpConfigs:
# user.ini: |-
# upload_max_filesize=16G
# post_max_size=16G
# livenessProbe:
# enabled: false
# readinessProbe:
# enabled: false
# phpClientHttpsFix:
# enabled: true
# protocol: https
# ingress:
# enabled: true
# className: nginx
# annotations:
# nginx.ingress.kubernetes.io/proxy-body-size: 100G
# nginx.ingress.kubernetes.io/configuration-snippet: |
# more_set_headers "Strict-Transport-Security: max-age=15768000; includeSubDomains";
# # kubernetes.io/tls-acme: "true"
# cert-manager.io/cluster-issuer: prod-cluster-issuer
# # # Keep this in sync with the README.md:
# # nginx.ingress.kubernetes.io/server-snippet: |
# # server_tokens off
# # proxy_hide_header X-Powered-By;
# # rewrite ^/.well-known/webfinger /index.php/.well-known/webfinger last;
# # rewrite ^/.well-known/nodeinfo /index.php/.well-known/nodeinfo last;
# # rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
# # rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json;
# # location = /.well-known/carddav {
# # return 301 $scheme://$host/remote.php/dav;
# # }
# # location = /.well-known/caldav {
# # return 301 $scheme://$host/remote.php/dav;
# # }
# # location = /robots.txt {
# # allow all;
# # log_not_found off;
# # access_log off;
# # }
# # location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
# # deny all;
# # }
# # location ~ ^/(?:autotest|occ|issue|indie|db_|console) {
# # deny all;
# # }
# tls:
# - secretName: nextcloud-tls
# hosts:
# - drive.hensen.io
# labels: {}
# path: /
# pathType: Prefix
# syncPolicy:
# syncOptions:
# - CreateNamespace=true
# automated:
# selfHeal: true
-21
View File
@@ -1,21 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: owntracks-folder
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
path: owntracks
destination:
server: https://kubernetes.default.svc
namespace: owntracks
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
-167
View File
@@ -1,167 +0,0 @@
# apiVersion: argoproj.io/v1alpha1
# kind: Application
# metadata:
# name: mosquitto-helm
# namespace: argocd
# finalizers:
# - resources-finalizer.argocd.argoproj.io
# spec:
# syncPolicy:
# syncOptions:
# - CreateNamespace=true
# automated:
# prune: true
# selfHeal: true
# project: default
# sources:
# - chart: mosquitto
# repoURL: https://storage.googleapis.com/t3n-helm-charts
# targetRevision: v2.4.1 # Replace with the Longhorn version you'd like to install or upgrade to
# helm:
# values: |
# replicaCount: 1
# strategyType: Recreate
# image:
# repository: eclipse-mosquitto
# tag: 1.6.12
# pullPolicy: IfNotPresent
# imagePullSecrets: []
# nameOverride: ""
# fullnameOverride: ""
# serviceAccount:
# # Specifies whether a service account should be created
# create: true
# # The name of the service account to use.
# # If not set and create is true, a name is generated using the fullname template
# name:
# service:
# type: ClusterIP
# externalTrafficPolicy: null
# annotations: {}
# # metallb.universe.tf/allow-shared-ip: pi-hole
# ports:
# mqtt:
# port: 1883
# # sets consistent nodePort, required to set service.type=NodePort
# # nodePort: 31883
# protocol: TCP
# websocket:
# port: 9090
# protocol: TCP
# persistence:
# enabled: true
# accessMode: ReadWriteOnce
# existingClaim: ""
# mountPath: /mosquitto/data
# subPath: ""
# ## database data Persistent Volume Storage Class
# ## If defined, storageClassName: <storageClass>
# ## If set to "-", storageClassName: "", which disables dynamic provisioning
# ## If undefined (the default) or set to null, no storageClassName spec is
# ## set, choosing the default provisioner. (gp2 on AWS, standard on
# ## GKE, AWS & OpenStack)
# ##
# # storageClass: "-"
# size: 1Gi
# resources: {}
# # We usually recommend not to specify default resources and to leave this as a conscious
# # choice for the user. This also increases chances charts run on environments with little
# # resources, such as Minikube. If you do want to specify resources, uncomment the following
# # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# # limits:
# # cpu: 100m
# # memory: 128Mi
# # requests:
# # cpu: 100m
# # memory: 128Mi
# podSecurityContext: {}
# # runAsUser: 1001
# # fsGroup: 10000
# securityContext: {}
# # runAsUser: 1001
# # fsGroup: 10000
# nodeSelector: {}
# tolerations: []
# affinity: {}
# authentication:
# passwordEntries: ""
# # To use authentication with mosquitto, you can set a list of password entries to be used.
# # reference https://mosquitto.org/man/mosquitto_passwd-1.html to generate these entries.
# # For example:
# # passwordEntries: |-
# # user1:$6$BKzw0RKerxV4Esbj$Uz5slWGB1TiOtYIEokEl0eR1YSEQAdKpcdRYMsLYbwjktlVzdLyGk41YCPGyMLnBePtdwPhkcm8kjGI0R9s57w==
# # user2:$6$b5vYuHrSLj48Ii32$NjlbnatIaUQSsNvxxTpawpav6NPyZ8QhGrdEVGtyU1rgEGjNzVGKlstRg29FV6MFTPs/ugPA8D5I5+qRcIMXSg==
# passwordFilePath: "/etc/mosquitto/passwordfile"
# authorization:
# acls: ""
# # To use authorizations with mosquitto, you can set a list of per user or pattern-based rules.
# # reference https://mosquitto.org/man/mosquitto-conf-5.html for further information.
# # For example:
# # acls: |-
# # zigbee2mqtt ACLs
# # user zigbee2mqtt
# # topic readwrite zigbee2mqtt/#
# # topic readwrite homeassistant/#
# # Tasmota-compatible ACLs
# # pattern read cmnd/%u/#
# # pattern write stat/%u/#
# # pattern write tele/%u/#
# aclfilePath: "/etc/mosquitto/aclfile"
# existingConfigMap: ""
# config: |
# persistence true
# persistence_location /mosquitto/data/
# log_dest stdout
# listener 1883
# listener 9090
# protocol websockets
# ## Additional volumes.
# extraVolumes: []
# # - name: tls
# # secret:
# # secretName: mosquitto-certs
# ## Additional volumeMounts to the main container.
# extraVolumeMounts: []
# # - name: tls
# # mountPath: /certs
# # subPath: cafile
# monitoring:
# podMonitor:
# enabled: false
# sidecar:
# enabled: false
# port: 9234
# # nodePort: 32234
# image:
# repository: nolte/mosquitto-exporter
# tag: v0.6.3
# pullPolicy: IfNotPresent
# resources:
# limits:
# cpu: 300m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 64Mi
# destination:
# server: https://kubernetes.default.svc
# namespace: owntracks
-279
View File
@@ -1,279 +0,0 @@
---
# PersistentVolumeClaim for OwnTracks Recorder
# apiVersion: v1
# kind: PersistentVolumeClaim
# metadata:
# name: otrecorder-config-pvc
# spec:
# accessModes:
# - ReadWriteOnce
# resources:
# requests:
# storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: otrecorder-store-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
# PersistentVolumeClaim for Mosquitto
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mosquitto-data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mosquitto-logs-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
# ExternalSecret for OwnTracks Recorder password
# apiVersion: external-secrets.io/v1beta1
# kind: ExternalSecret
# metadata:
# name: owntracks-mqtt-credentials
# spec:
# refreshInterval: "15m"
# secretStoreRef:
# name: vault-backend
# kind: ClusterSecretStore
# target:
# name: owntracks-mqtt-password
# creationPolicy: Owner
# data:
# - secretKey: password
# remoteRef:
# key: kv/mqtt
# property: password
---
# Deployment for OwnTracks Recorder
# apiVersion: apps/v1
# kind: Deployment
# metadata:
# name: otrecorder
# spec:
# replicas: 1
# selector:
# matchLabels:
# app: otrecorder
# template:
# metadata:
# labels:
# app: otrecorder
# spec:
# containers:
# - name: otrecorder
# image: owntracks/recorder
# ports:
# - containerPort: 8083
# env:
# - name: OTR_HOST
# value: "mqtt"
# - name: OTR_PORT
# value: "8883"
# - name: OTR_USER
# value: "ruben"
# # - name: TZ
# # value: "Europe/Berlin"
# # - name: VIRTUAL_HOST
# # value: "owntracks.hensen.io"
# # - name: VIRTUAL_PORT
# # value: 8883
# # - name: OTR_CLIENTID
# # value: ""
# - name: OTR_PASS
# valueFrom:
# secretKeyRef:
# name: owntracks-mqtt-password
# key: password
# volumeMounts:
# - name: store
# mountPath: /store
# volumes:
# - name: store
# persistentVolumeClaim:
# claimName: otrecorder-store-pvc
---
# Service for OwnTracks Recorder
# apiVersion: v1
# kind: Service
# metadata:
# name: otrecorder
# spec:
# selector:
# app: otrecorder
# ports:
# - port: 8083
# targetPort: 8083
# type: ClusterIP
---
# ExternalSecret to fetch MQTT password file from Vault
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: mqtt-password-file
spec:
refreshInterval: "15m"
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: mqtt-password-secret
creationPolicy: Owner
data:
- secretKey: password_file
remoteRef:
key: kv/mqtt
property: secret
---
# ConfigMap for MQTT configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: mqtt-config
data:
mosquitto.conf: |
listener 8883
allow_anonymous false
password_file /mosquitto/config/password_file
# Add other MQTT configuration options here
listener 8083
protocol websockets
---
# MQTT Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtt
labels:
app: mqtt
spec:
replicas: 1
selector:
matchLabels:
app: mqtt
template:
metadata:
labels:
app: mqtt
spec:
containers:
- name: mqtt
image: eclipse-mosquitto:latest
ports:
- containerPort: 8883
name: mqtt
- containerPort: 8083
name: websocket
volumeMounts:
- name: config
mountPath: /mosquitto/config/mosquitto.conf
subPath: mosquitto.conf
- name: password-file
mountPath: /mosquitto/config/password_file
subPath: password_file
volumes:
- name: config
configMap:
name: mqtt-config
- name: password-file
secret:
secretName: mqtt-password-secret
---
# MQTT Service
apiVersion: v1
kind: Service
metadata:
name: mqtt
spec:
selector:
app: mqtt
ports:
- port: 8883
targetPort: 8883
name: mqtt
- port: 8083
targetPort: 8083
name: websocket
---
# External access with Ingress for OwnTracks Recorder
# apiVersion: networking.k8s.io/v1
# kind: Ingress
# metadata:
# name: otrecorder-ingress
# annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /
# cert-manager.io/cluster-issuer: prod-cluster-issuer
# spec:
# ingressClassName: nginx
# tls:
# - hosts:
# - owntracks.hensen.io
# secretName: owntracks-tls-secret
# rules:
# - host: owntracks.hensen.io
# http:
# paths:
# - path: /
# pathType: Prefix
# backend:
# service:
# name: otrecorder
# port:
# number: 8083
---
# Corrected MQTT Ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mqtt-ingress
annotations:
cert-manager.io/cluster-issuer: prod-cluster-issuer
# Add NGINX TCP passthrough annotations
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
nginx.ingress.kubernetes.io/backend-protocol: "TCP"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
ingressClassName: nginx
tls:
- hosts:
- mqtt.hensen.io
secretName: mqtt-tls-secret
rules:
- host: mqtt.hensen.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mqtt
port:
number: 8083
# Note: For proper MQTT over TLS, consider these alternatives:
# 1. Use a TCP Load Balancer instead of an Ingress
# 2. Configure the MQTT broker to use TLS directly (port 8883)
# 3. Use NGINX TCP ingress controller configuration
-1
View File
@@ -1 +0,0 @@
Example container to restore files. See `Obsidian > Cluster > Restore longhorn backup` for more
@@ -1,30 +0,0 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: restore-ubuntu
labels:
app: restore-ubuntu
# namespace: immich # edit in apps folder
# docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
spec:
replicas: 1
selector:
matchLabels:
app: restore-ubuntu
template:
metadata:
labels:
app: restore-ubuntu
spec:
containers:
- name: restore-ubuntu
image: ubuntu:plucky
volumeMounts:
- name: restorevol
mountPath: /mnt/restorevol/
command: [ "/bin/bash", "-c", "--" ] # Let container sleep, so it does not close because of 'completion'
args: [ "while true; do sleep 30; done;" ]
volumes:
- name: restorevol
persistentVolumeClaim:
claimName: backupofimmich
-17
View File
@@ -1,17 +0,0 @@
apiVersion: velero.io/v1
kind: Schedule
metadata:
name: test-backup
namespace: velero
# annotations:
# velero.io/csi-volumesnapshot-class_driver.longhorn.io: "longhorn-backup-vsc"
spec:
schedule: "*/5 * * * *" # Daily at 1 AM
template:
includedNamespaces:
# - immich
# - nextcloud
# - home-assistant
- ttrss
ttl: 15m # 30 days
defaultVolumesToFsBackup: true
-21
View File
@@ -1,21 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: traccar-folder
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
path: traccar
destination:
server: https://kubernetes.default.svc
namespace: traccar
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
-951
View File
@@ -1,951 +0,0 @@
kind: Application
metadata:
name: traccar
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
destination:
namespace: traccar
server: https://kubernetes.default.svc
project: default
source:
repoURL: https://traccar.github.io/traccar-helm/
targetRevision: 1.9.0
chart: traccar
helm:
values: |
traccar:
# server:
# statistics:
# web:
# enable: "true"
# address: "0.0.0.0"
# port: "8082"
# # path:
# debug: "false"
# console: "true"
# timeout:
# old:
# application:
# geocoder:
# enable:
# type:
# url:
# onRequest:
# ignorePositions:
# processInvalidPositions:
# format:
# reuseDistance:
# geolocation:
# enable:
# type:
# key:
# mcc:
# mnc:
# processInvalidPositions:
filter:
enable: "false"
# skipLimit: 5
# invalid: "true"
# zero: "true"
# duplicate: "true"
# distance: 80
# future: 86400
# maxSpeed: 200
# skipAttributes:
# enable: "true"
# attributes: "alarm,result,driverUniqueId"
distance:
enable: "false"
logger:
enable: "true"
level: "info"
processing:
remoteAddress:
enable: "false"
copyAttributes:
enable: "false"
# attributes: "io83,io84,io87,io89"
# database:
# driverFile:
# driver:
# url:
# user:
# password:
# changelog:
# checkConnection:
# ignoreUnknown:
# registerUnknown:
# enable:
# defaultGroupId:
# xml:
# saveOriginal:
# selectDevicesAll:
# insertPosition:
# updateLatestPosition:
# globalsat:
# format0:
# format1:
# coordinates:
# filter:
# minError:
# maxError:
event:
enable: "false"
# overspeed:
# notRepeat:
# motion:
# speedThreshold:
# forward:
# enable:
# url:
# header:
# speedLimit:
# devicemanager:
# lookupGroupsAttribute:
# forward:
# url:
# json:
# mail:
# templates:
# report:
# minimalParkingDuration: 500
# minimalNoDataDuration: 500
# minimalTripDuration: 500
# minimalTripDistance: 500
# wialon:
# status:
# timeout:
# sms:
mysql:
enabled: true
auth:
database: "traccar"
username: "traccar"
password: "traccar"
primary:
persistence:
enabled: true
secondary:
persistence:
enabled: false
# NOTE: When using multiple replicas, you must configure broadcast.type and broadcast.address
# This can be done via configOverride. See https://www.traccar.org/configuration-file/#:~:text=attributes%20to%20log.-,broadcast.type,-config
# Or by setting redis.enabled=true
replicaCount: 1
deploymentStrategy:
# Recreate has been the default until chart version 1.6.0 and is required if running a non-HA compatible setup
type: Recreate
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
image:
repository: traccar/traccar
pullPolicy: IfNotPresent
# flavor: "" # available are alpine, debian or ubuntu
# Overrides the image tag whose default is the chart appVersion.
tag: ""
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
podAnnotations: {}
podLabels: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
runAsUser: 1000
# A list of initContainers to run before the pod starts
initContainers: []
command: ["java", "-Xms512m", "-Xmx512m", "-Djava.net.preferIPv4Stack=true"]
args: ["-jar", "tracker-server.jar", "conf/traccar.xml"]
# This allows you to use environment variables (i.e. referenced from Secrets) to use in your configuration
# The names of the keys are identical. But, a dot (.), you'll have to use an underscore (_) and define everything in UPPERCASE
env: []
# - name: "CONFIG_USE_ENVIRONMENT_VARIABLES"
# value: "true"
# - name: "DATABASE_USER"
# valueFrom:
# secretKeyRef:
# name: "postgres-secrets"
# key: "username"
# - name: "DATABASE_PASSWORD"
# valueFrom:
# secretKeyRef:
# name: "postgres-secrets"
# key: "password"
ingress:
enabled: true
className: nginx
extraAnnotations: {}
annotations:
kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
# cert-manager.io/cluster-issuer: "letsencrypt-prod"
# nginx.ingress.kubernetes.io/proxy-body-size: "0"
cert-manager.io/cluster-issuer: prod-cluster-issuer
# nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
hosts:
- host: traccar.hensen.io
paths:
- /
tls:
- secretName: traccar-tls
hosts:
- traccar.hensen.io
service:
type: ClusterIP
port: 8088
externalService:
type: LoadBalancer
enabled: false
annotations: {}
# metallb.universe.tf/loadBalancerIPs: 192.168.1.100
# loadBalancerIP: ""
# loadBalancerSourceRanges: []
# -- Enable node port allocation for the external controller service or not. Applies to type `LoadBalancer` only.
# Ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation
# allocateLoadBalancerNodePorts: true
protocolPorts:
- name: gps103
port: 5001
targetPort: gps103
- name: tk103
port: 5002
targetPort: tk103
- name: gl100
port: 5003
targetPort: gl100
- name: gl200
port: 5004
targetPort: gl200
- name: t55
port: 5005
targetPort: t55
- name: xexun
port: 5006
targetPort: xexun
- name: totem
port: 5007
targetPort: totem
- name: enfora
port: 5008
targetPort: enfora
- name: meiligao
port: 5009
targetPort: meiliago
- name: trv
port: 5010
targetPort: trv
- name: suntech
port: 5011
targetPort: suntech
- name: progress
port: 5012
targetPort: progress
- name: h02
port: 5013
targetPort: h02
- name: jt600
port: 5014
targetPort: jt600
- name: huabao
port: 5015
targetPort: huabao
- name: v680
port: 5016
targetPort: v680
- name: pt502
port: 5017
targetPort: pt502
- name: tr20
port: 5018
targetPort: tr20
- name: navis
port: 5019
targetPort: navis
- name: meitrack
port: 5020
targetPort: meitrack
- name: skypatrol
port: 5021
targetPort: skypatrol
- name: gt02
port: 5022
targetPort: gt02
- name: gt06
port: 5023
targetPort: gt06
- name: megastek
port: 5024
targetPort: megastek
- name: navigil
port: 5025
targetPort: navigil
- name: gpsgate
port: 5026
targetPort: gpsgate
- name: teltonika
port: 5027
targetPort: teltonika
- name: mta6
port: 5028
targetPort: mta6
- name: tzone
port: 5029
targetPort: tzone
- name: tlt2h
port: 5030
targetPort: tlt2h
- name: taip
port: 5031
targetPort: taip
- name: wondex
port: 5032
targetPort: wondex
- name: cellocator
port: 5033
targetPort: cellocator
- name: galileo
port: 5034
targetPort: galileo
- name: ywt
port: 5035
targetPort: ywt
- name: intellitrac
port: 5037
targetPort: intellitrac
- name: gpsmta
port: 5038
targetPort: gpsmta
- name: wialon
port: 5039
targetPort: wialon
- name: carscop
port: 5040
targetPort: carscop
- name: apel
port: 5041
targetPort: apel
- name: manpower
port: 5042
targetPort: manpower
- name: globalsat
port: 5043
targetPort: globalsat
- name: atrack
port: 5044
targetPort: atrack
- name: pt3000
port: 5045
targetPort: pt3000
- name: ruptela
port: 5046
targetPort: ruptela
- name: topflytech
port: 5047
targetPort: topflytech
- name: laipac
port: 5048
targetPort: laipac
- name: aplicom
port: 5049
targetPort: aplicom
- name: gotop
port: 5050
targetPort: gotop
- name: sanav
port: 5051
targetPort: sannav
- name: gator
port: 5052
targetPort: gator
- name: noran
port: 5053
targetPort: noran
- name: m2m
port: 5054
targetPort: m2m
- name: osmand
port: 5055
targetPort: osmand
- name: easytrack
port: 5056
targetPort: easytrack
- name: gpsmaker
port: 5057
targetPort: gpsmaker
- name: khd
port: 5058
targetPort: khd
- name: piligrim
port: 5059
targetPort: pilgrim
- name: stl060
port: 5060
targetPort: stl060
- name: cartrack
port: 5061
targetPort: cartrack
- name: minifinder
port: 5062
targetPort: minifinder
- name: haicom
port: 5063
targetPort: haicom
- name: eelink
port: 5064
targetPort: eelink
- name: box
port: 5065
targetPort: box
- name: freedom
port: 5066
targetPort: freedom
- name: telic
port: 5067
targetPort: telic
- name: trackbox
port: 5068
targetPort: trackbox
- name: visiontek
port: 5069
targetPort: visiontek
- name: orion
port: 5070
targetPort: orion
- name: riti
port: 5071
targetPort: riti
- name: ulbotech
port: 5072
targetPort: ulbotech
- name: tramigo
port: 5073
targetPort: tramigo
- name: tr900
port: 5074
targetPort: tr900
- name: ardi01
port: 5075
targetPort: ardi01
- name: xt013
port: 5076
targetPort: xt013
- name: autofon
port: 5077
targetPort: autofon
- name: gosafe
port: 5078
targetPort: gosafe
- name: bce
port: 5080
targetPort: bce
- name: xirgo
port: 5081
targetPort: xirgo
- name: calamp
port: 5082
targetPort: calamp
- name: mtx
port: 5083
targetPort: mtx
- name: tytan
port: 5084
targetPort: tytan
- name: avl301
port: 5085
targetPort: avl301
- name: castel
port: 5086
targetPort: castel
- name: mxt
port: 5087
targetPort: mxt
- name: cityeasy
port: 5088
targetPort: cityeasy
- name: aquila
port: 5089
targetPort: aquila
- name: flextrack
port: 5090
targetPort: flextrack
- name: blackkite
port: 5091
targetPort: blackkite
- name: adm
port: 5092
targetPort: adm
- name: watch
port: 5093
targetPort: watch
- name: t800x
port: 5094
targetPort: t800x
- name: upro
port: 5095
targetPort: upro
- name: auro
port: 5096
targetPort: auro
- name: disha
port: 5097
targetPort: disha
- name: thinkrace
port: 5098
targetPort: thinkrace
- name: pathaway
port: 5099
targetPort: pathaway
- name: arnavi
port: 5100
targetPort: arnavi
- name: nvs
port: 5101
targetPort: nvs
- name: kenji
port: 5102
targetPort: kenji
- name: astra
port: 5103
targetPort: astra
- name: homtecs
port: 5104
targetPort: homtecs
- name: fox
port: 5105
targetPort: fox
- name: gnx
port: 5106
targetPort: gnx
- name: arknav
port: 5107
targetPort: arknav
- name: supermate
port: 5108
targetPort: supermate
- name: appello
port: 5109
targetPort: appello
- name: idpl
port: 5110
targetPort: idpl
- name: huahsheng
port: 5111
targetPort: huahsheng
- name: granit
port: 5112
targetPort: granit
- name: granit-2
port: 5113
targetPort: granit-2
- name: carcell
port: 5114
targetPort: carcell
- name: raveon
port: 5117
targetPort: raveon
- name: cradlepoint
port: 5118
targetPort: cradlepoint
- name: arknavx8
port: 5119
targetPort: arknavx8
- name: autograde
port: 5120
targetPort: autograde
- name: oigo
port: 5121
targetPort: oigo
- name: jpkorjar
port: 5122
targetPort: jpkorjar
- name: cguard
port: 5123
targetPort: cguard
- name: fifotrack
port: 5124
targetPort: fifotrack
- name: extremtrac
port: 5126
targetPort: extremtrac
- name: trakmate
port: 5127
targetPort: trakmate
- name: at2000
port: 5128
targetPort: at2000
- name: maestro
port: 5129
targetPort: maestro
- name: ais
port: 5130
targetPort: ais
- name: gt30
port: 5131
targetPort: gt30
- name: tmg
port: 5132
targetPort: tmg
- name: pretrace
port: 5133
targetPort: pretrace
- name: pricol
port: 5134
targetPort: pricol
- name: siwi
port: 5135
targetPort: siwi
- name: starlink
port: 5136
targetPort: starlink
- name: dmt
port: 5137
targetPort: dmt
- name: xt2400
port: 5138
targetPort: xt2400
- name: dmthttp
port: 5139
targetPort: dmthttp
- name: alematics
port: 5140
targetPort: alematics
- name: gps056
port: 5141
targetPort: gps056
- name: flexcomm
port: 5142
targetPort: flexcomm
- name: vt200
port: 5143
targetPort: vt200
- name: owntracks
port: 5144
targetPort: owntracks
- name: vtfms
port: 5145
targetPort: vtfms
- name: tlv
port: 5146
targetPort: tlv
- name: esky
port: 5147
targetPort: esky
- name: genx
port: 5148
targetPort: genx
- name: flespi
port: 5149
targetPort: flespi
- name: dway
port: 5150
targetPort: dway
- name: recoda
port: 5151
targetPort: recoda
- name: oko
port: 5152
targetPort: oko
- name: ivt401
port: 5153
targetPort: ivt401
- name: sigfox
port: 5154
targetPort: sigfox
- name: t57
port: 5155
targetPort: t57
- name: spot
port: 5156
targetPort: spot
- name: m2c
port: 5157
targetPort: m2c
- name: globekeeper
port: 5158
targetPort: globekeeper
- name: opengts
port: 5159
targetPort: opengts
- name: cautela
port: 5160
targetPort: cautela
- name: continental
port: 5161
targetPort: continental
- name: egts
port: 5162
targetPort: egts
- name: robotrack
port: 5163
targetPort: robotrack
- name: pt60
port: 5164
targetPort: pt60
- name: telemax
port: 5165
targetPort: telemax
- name: sabertek
port: 5166
targetPort: sabertek
- name: retranslator
port: 5167
targetPort: retranslator
- name: svias
port: 5168
targetPort: svias
- name: eseal
port: 5169
targetPort: eseal
- name: freematics
port: 5170
targetPort: freematics
- name: avema
port: 5171
targetPort: avema
- name: autotrack
port: 5172
targetPort: autotrack
- name: tek
port: 5173
targetPort: tek
- name: wristband
port: 5174
targetPort: wristband
- name: milesmate
port: 5176
targetPort: milesmate
- name: anytrek
port: 5177
targetPort: anytrek
- name: smartsole
port: 5178
targetPort: smartsole
- name: its
port: 5179
targetPort: its
- name: xrb28
port: 5180
targetPort: xrb28
- name: c2stek
port: 5181
targetPort: c2stek
- name: nyitech
port: 5182
targetPort: nyitech
- name: neos
port: 5183
targetPort: neos
- name: satsol
port: 5184
targetPort: satsol
- name: globalstar
port: 5185
targetPort: globalstar
- name: sanul
port: 5186
targetPort: sanul
- name: minifinder2
port: 5187
targetPort: minifinder2
- name: radar
port: 5188
targetPort: radar
- name: techtlt
port: 5189
targetPort: techtlt
- name: starcom
port: 5190
targetPort: starcom
- name: mictrack
port: 5191
targetPort: mictrack
- name: plugin
port: 5192
targetPort: plugin
- name: leafspy
port: 5193
targetPort: leafspy
- name: naviset
port: 5194
targetPort: naviset
- name: racedynamics
port: 5195
targetPort: racedynamics
- name: rst
port: 5196
targetPort: rst
- name: pt215
port: 5197
targetPort: pt215
- name: pacifictrack
port: 5198
targetPort: pacifictrack
- name: topin
port: 5199
targetPort: topin
- name: outsafe
port: 5200
targetPort: outsafe
- name: solarpowered
port: 5201
targetPort: solarpowered
- name: motor
port: 5202
targetPort: motor
- name: omnicomm
port: 5203
targetPort: omnicom
- name: s168
port: 5204
targetPort: s168
- name: vnet
port: 5205
targetPort: vnet
- name: blue
port: 5206
targetPort: blue
- name: pst
port: 5207
targetPort: pst
- name: dingtek
port: 5208
targetPort: dingtek
- name: wli
port: 5209
targetPort: wli
- name: niot
port: 5210
targetPort: niot
- name: portman
port: 5211
targetPort: portman
- name: moovbox
port: 5212
targetPort: moovbox
- name: futureway
port: 5213
targetPort: futureway
- name: polte
port: 5214
targetPort: polte
- name: net
port: 5215
targetPort: net
- name: mobilogix
port: 5216
targetPort: mobilogix
- name: swiftech
port: 5217
targetPort: swiftech
- name: iotm
port: 5218
targetPort: iotm
- name: dolphin
port: 5219
targetPort: dolphin
- name: ennfu
port: 5220
targetPort: ennfu
- name: navtelecom
port: 5221
targetPort: navtelecom
- name: startek
port: 5222
targetPort: startek
- name: gs100
port: 5223
targetPort: gs100
- name: mavlink2
port: 5224
targetPort: mavlink2
- name: uux
port: 5225
targetPort: uux
- name: r12w
port: 5226
targetPort: r12w
- name: flexiblereport
port: 5227
targetPort: flexiblereport
- name: thinkpower
port: 5228
targetPort: thinkpower
# This allows you to provide the entire config from scratch.
# configOverride: |
# <?xml version='1.0' encoding='UTF-8'?>
# <!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>
# <properties>
# <entry key='config.default'>./conf/default.xml</entry>
# <entry key='web.enable'>true</entry>
# <entry key='web.disableHealthCheck'>true</entry>
# <entry key='....'>....</entry>
# </properties>
resources: {}
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
nodeSelector:
tolerations: []
affinity: {}
redis-ha:
# enables the redis subchart
enabled: false
persistentVolume:
enabled: false
redis:
masterGroupName: traccar
config:
save: '""'
haproxy:
enabled: true
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
-56
View File
@@ -1,56 +0,0 @@
---
# Service for Traccar
apiVersion: v1
kind: Service
metadata:
name: traccar-osmand
namespace: traccar
labels:
app.kubernetes.io/name: traccar
app.kubernetes.io/instance: traccar
app.kubernetes.io/version: '5.10'
spec:
type: ClusterIP
ports:
- port: 5055
targetPort: 5055
protocol: TCP
name: osmand
selector:
app.kubernetes.io/name: traccar
app.kubernetes.io/instance: traccar
---
# Ingress for Traccar OsmAnd port
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traccar-osmand-ingress
namespace: traccar
labels:
app.kubernetes.io/name: traccar
app.kubernetes.io/instance: traccar
app.kubernetes.io/version: '5.10'
annotations:
# You may want to add annotations based on your ingress controller
cert-manager.io/cluster-issuer: prod-cluster-issuer
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/backend-protocol: "TCP"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
ingressClassName: nginx
rules:
- host: traccar-client.hensen.io # Replace with your actual domain
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: traccar-osmand
port:
number: 5055
# Uncomment and configure if you need TLS
tls:
- hosts:
- traccar-client.hensen.io
secretName: traccar-osmand-tls-secret
-47
View File
@@ -1,47 +0,0 @@
# Put any local modifications here.
# Run FPM under this UID/GID.
# OWNER_UID=1000
# OWNER_GID=1000
# FPM settings.
#PHP_WORKER_MAX_CHILDREN=5
#PHP_WORKER_MEMORY_LIMIT=256M
# ADMIN_USER_* settings are applied on every startup.
# Set admin user password to this value. If not set, random password
# will be generated on startup, look for it in the 'app' container logs.
#ADMIN_USER_PASS=
# Sets admin user access level to this value. Valid values:
# -2 - forbidden to login
# -1 - readonly
# 0 - default user
# 10 - admin
#ADMIN_USER_ACCESS_LEVEL=
# Auto create another user (in addition to built-in admin) unless it already exists.
#AUTO_CREATE_USER=
#AUTO_CREATE_USER_PASS=
#AUTO_CREATE_USER_ACCESS_LEVEL=0
# Default database credentials.
TTRSS_DB_USER=postgres
TTRSS_DB_NAME=postgres
TTRSS_DB_PASS=password
# You can customize other config.php defines by setting overrides here.
# See tt-rss/.docker/app/Dockerfile for a complete list.
# You probably shouldn't disable auth_internal unless you know what you're doing.
# TTRSS_PLUGINS=auth_internal,auth_remote
# TTRSS_SINGLE_USER_MODE=true
# TTRSS_SESSION_COOKIE_LIFETIME=2592000
# TTRSS_FORCE_ARTICLE_PURGE=30
# ...
# Bind exposed port to 127.0.0.1 to run behind reverse proxy on the same host.
# If you plan to expose the container, remove "127.0.0.1:".
HTTP_PORT=127.0.0.1:8280
#HTTP_PORT=8280
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: app-claim1
name: app-claim1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
-66
View File
@@ -1,66 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: app
name: app
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: app
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: app
spec:
containers:
- env:
- name: HTTP_PORT
valueFrom:
configMapKeyRef:
key: HTTP_PORT
name: env
- name: TTRSS_DB_NAME
valueFrom:
configMapKeyRef:
key: TTRSS_DB_NAME
name: env
- name: TTRSS_DB_PASS
valueFrom:
configMapKeyRef:
key: TTRSS_DB_PASS
name: env
- name: TTRSS_DB_USER
valueFrom:
configMapKeyRef:
key: TTRSS_DB_USER
name: env
image: cthulhoo/ttrss-fpm-pgsql-static:latest
name: app
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/www/html
name: app
- mountPath: /opt/tt-rss/config.d
name: app-claim1
readOnly: true
restartPolicy: Always
volumes:
- name: app
persistentVolumeClaim:
claimName: app
- name: app-claim1
persistentVolumeClaim:
claimName: app-claim1
readOnly: true
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: app
name: app
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: app
name: app
spec:
ports:
- name: http
port: 80
targetPort: 80
selector:
io.kompose.service: app
-52
View File
@@ -1,52 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: db
name: db
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: db
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: db
spec:
containers:
- env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
key: TTRSS_DB_NAME
name: env
- name: POSTGRES_PASSWORD
valueFrom:
configMapKeyRef:
key: TTRSS_DB_PASS
name: env
- name: POSTGRES_USER
valueFrom:
configMapKeyRef:
key: TTRSS_DB_USER
name: env
image: postgres:15-alpine
name: db
volumeMounts:
- mountPath: /var/lib/postgresql/data
subPath: postgres
name: db
restartPolicy: Always
volumes:
- name: db
persistentVolumeClaim:
claimName: db
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: db
name: db
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: db
name: db
spec:
ports:
- name: http
port: 5432
targetPort: 5432
selector:
io.kompose.service: db
-11
View File
@@ -1,11 +0,0 @@
apiVersion: v1
data:
HTTP_PORT: 127.0.0.1:8280
TTRSS_DB_NAME: postgres
TTRSS_DB_PASS: password
TTRSS_DB_USER: postgres
kind: ConfigMap
metadata:
labels:
io.kompose.service: app-env
name: env
-34
View File
@@ -1,34 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ttrss-ingress
annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: prod-cluster-issuer
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
# If you encounter a redirect loop or are getting a 307 response code
# then you need to force the nginx ingress to connect to the backend using HTTPS.
#
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
namespace: ttrss
spec:
ingressClassName: nginx
rules:
- host: rss.hensen.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-nginx
port:
name: http
# TLS configuration for HTTPS
tls:
# TLS secretName used on ClusterIssuer
- secretName: letsencrypt-prod
hosts:
- rss.hensen.io
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: updater-claim1
name: updater-claim1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
-65
View File
@@ -1,65 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: updater
name: updater
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: updater
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: updater
spec:
containers:
- args:
- /opt/tt-rss/updater.sh
env:
- name: HTTP_PORT
valueFrom:
configMapKeyRef:
key: HTTP_PORT
name: env
- name: TTRSS_DB_NAME
valueFrom:
configMapKeyRef:
key: TTRSS_DB_NAME
name: env
- name: TTRSS_DB_PASS
valueFrom:
configMapKeyRef:
key: TTRSS_DB_PASS
name: env
- name: TTRSS_DB_USER
valueFrom:
configMapKeyRef:
key: TTRSS_DB_USER
name: env
image: cthulhoo/ttrss-fpm-pgsql-static:latest
name: updater
volumeMounts:
- mountPath: /var/www/html
name: app
- mountPath: /opt/tt-rss/config.d
name: updater-claim1
readOnly: true
restartPolicy: Always
volumes:
- name: app
persistentVolumeClaim:
claimName: app
- name: updater-claim1
persistentVolumeClaim:
claimName: updater-claim1
readOnly: true
-65
View File
@@ -1,65 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: web-nginx
name: web-nginx
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: web-nginx
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: web-nginx
spec:
containers:
- env:
- name: APP_UPSTREAM
value: app.ttrss.svc.cluster.local
- name: RESOLVER
value: kube-dns.kube-system.svc.cluster.local
- name: HTTP_PORT
valueFrom:
configMapKeyRef:
key: HTTP_PORT
name: env
- name: TTRSS_DB_NAME
valueFrom:
configMapKeyRef:
key: TTRSS_DB_NAME
name: env
- name: TTRSS_DB_PASS
valueFrom:
configMapKeyRef:
key: TTRSS_DB_PASS
name: env
- name: TTRSS_DB_USER
valueFrom:
configMapKeyRef:
key: TTRSS_DB_USER
name: env
image: cthulhoo/ttrss-web-nginx:latest
name: web-nginx
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/www/html
name: app
readOnly: true
restartPolicy: Always
volumes:
- name: app
persistentVolumeClaim:
claimName: app
readOnly: true
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: web-nginx
name: web-nginx
spec:
ports:
- name: http
port: 80
targetPort: 80
selector:
io.kompose.service: web-nginx
-21
View File
@@ -1,21 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: whisper-webui-folder
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/rubenhensen/k8scd.git
targetRevision: HEAD
path: whisper-webui
destination:
server: https://kubernetes.default.svc
namespace: whisper-webui
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: app-claim0
name: app-claim0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: app-claim1
name: app-claim1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
-61
View File
@@ -1,61 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: app
name: app
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: app
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: app
spec:
containers:
- command:
- sh
- -c
- |
# Replace the original file with a symlink to our writable version
if [ -f /Whisper-WebUI/configs/default_parameters.yaml ]; then
rm /Whisper-WebUI/configs/default_parameters.yaml
fi
cp /myconfig/default_parameters.yaml /Whisper-WebUI/configs/default_parameters.yaml
# Start the application
python app.py --server_port 7860 --server_name 0.0.0.0
image: hebury/whisper-webui:latest
name: app
ports:
- containerPort: 7860
protocol: TCP
stdin: true
tty: true
volumeMounts:
- mountPath: /Whisper-WebUI/models
name: app-claim0
- mountPath: /Whisper-WebUI/outputs
name: app-claim1
- name: config-volume
mountPath: /myconfig
restartPolicy: Always
volumes:
- name: app-claim0
persistentVolumeClaim:
claimName: app-claim0
- name: app-claim1
persistentVolumeClaim:
claimName: app-claim1
- name: config-volume
configMap:
name: whisper-webui-config
-43
View File
@@ -1,43 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: whisper-webui-ingress
annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: prod-cluster-issuer
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
nginx.ingress.kubernetes.io/enable-cors: "true"
# type of authentication
# nginx.ingress.kubernetes.io/auth-type: basic
# name of the secret that contains the user/password definitions
# nginx.ingress.kubernetes.io/auth-secret: whisper-basic-auth
# message to display with an appropriate context why the authentication is required
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required '
nginx.ingress.kubernetes.io/proxy-body-size: "0"
# nginx.ingress.kubernetes.io/cors-allow-origin: "http://localhost:3000/"
# nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
# If you encounter a redirect loop or are getting a 307 response code
# then you need to force the nginx ingress to connect to the backend using HTTPS.
#
# nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
# namespace: ente-photos
spec:
ingressClassName: nginx
rules:
- host: alv.hensen.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app
port:
number: 7860
# TLS configuration for HTTPS
tls:
# TLS secretName used on ClusterIssuer
- secretName: letsencrypt-prod
hosts:
- alv.hensen.io
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: app
name: app
spec:
ports:
- name: "7860"
port: 7860
targetPort: 7860
selector:
io.kompose.service: app
-29
View File
@@ -1,29 +0,0 @@
# services:
# app:
# build: .
# image: jhj0517/whisper-webui:latest
# volumes:
# # You can mount the container's volume paths to directory paths on your local machine.
# # Models will be stored in the `./models' directory on your machine.
# # Similarly, all output files will be stored in the `./outputs` directory.
# - ./models:/Whisper-WebUI/models
# - ./outputs:/Whisper-WebUI/outputs
# ports:
# - "7860:7860"
# stdin_open: true
# tty: true
# entrypoint: ["python", "app.py", "--server_port", "7860", "--server_name", "0.0.0.0",]
# # If you're not using nvidia GPU, Update device to match yours.
# # See more info at : https://docs.docker.com/compose/compose-file/deploy/#driver
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [ gpu ]
-73
View File
@@ -1,73 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: whisper-webui-config
data:
default_parameters.yaml: |
whisper:
model_size: "large-v3"
file_format: "SRT"
lang: "dutch"
is_translate: false
beam_size: 5
log_prob_threshold: -0.8
no_speech_threshold: 0.7
best_of: 5
patience: 1
condition_on_previous_text: true
prompt_reset_on_temperature: 0.5
initial_prompt: "Dit is een zakelijke algemene leden vergadering in het Nederlands op studentenroeivereniging Phocas."
temperature: 0
compression_ratio_threshold: 2.0
chunk_length: 30
batch_size: 24
length_penalty: 1
repetition_penalty: 1.2
no_repeat_ngram_size: 3
prefix: null
suppress_blank: true
suppress_tokens: "[-1]"
max_initial_timestamp: 1
word_timestamps: true
prepend_punctuations: "\"'“¿([{-"
append_punctuations: "\"'.。,,!!??::”)]}、"
max_new_tokens: null
hallucination_silence_threshold: 0.2
hotwords: null
language_detection_threshold: 0.8
language_detection_segments: 2
add_timestamp: true
enable_offload: true
vad:
vad_filter: true
threshold: 0.6
min_speech_duration_ms: 250
max_speech_duration_s: 9999
min_silence_duration_ms: 1000
speech_pad_ms: 2000
diarization:
is_diarize: false
hf_token: ""
enable_offload: true
bgm_separation:
is_separate_bgm: false
uvr_model_size: "UVR-MDX-NET-Inst_HQ_4"
segment_size: 256
save_file: false
enable_offload: true
translation:
deepl:
api_key: ""
is_pro: false
source_lang: "Automatic Detection"
target_lang: "English"
nllb:
model_size: "facebook/nllb-200-1.3B"
source_lang: null
target_lang: null
max_length: 200
add_timestamp: false
-70
View File
@@ -1,70 +0,0 @@
# version: "3.9"
# services:
# mongo:
# image: mongo
# env_file:
# - .env
# restart: unless-stopped
# volumes:
# - ./whishper_data/db_data:/data/db
# - ./whishper_data/db_data/logs/:/var/log/mongodb/
# environment:
# MONGO_INITDB_ROOT_USERNAME: ${DB_USER:-whishper}
# MONGO_INITDB_ROOT_PASSWORD: ${DB_PASS:-whishper}
# expose:
# - 27017
# command: ['--logpath', '/var/log/mongodb/mongod.log']
# translate:
# container_name: whisper-libretranslate
# image: libretranslate/libretranslate:latest
# restart: unless-stopped
# volumes:
# - ./whishper_data/libretranslate/data:/home/libretranslate/.local/share
# - ./whishper_data/libretranslate/cache:/home/libretranslate/.local/cache
# env_file:
# - .env
# tty: true
# environment:
# LT_DISABLE_WEB_UI: True
# LT_UPDATE_MODELS: True
# expose:
# - 5000
# networks:
# default:
# aliases:
# - translate
# healthcheck:
# test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
# interval: 2s
# timeout: 3s
# retries: 5
# whishper:
# pull_policy: always
# image: pluja/whishper:${WHISHPER_VERSION:-latest}
# env_file:
# - .env
# volumes:
# - ./whishper_data/uploads:/app/uploads
# - ./whishper_data/logs:/var/log/whishper
# container_name: whishper
# restart: unless-stopped
# networks:
# default:
# aliases:
# - whishper
# ports:
# - 8082:80
# depends_on:
# - mongo
# - translate
# environment:
# PUBLIC_INTERNAL_API_HOST: "http://127.0.0.1:80"
# PUBLIC_TRANSLATION_API_HOST: ""
# PUBLIC_API_HOST: ${WHISHPER_HOST:-}
# PUBLIC_WHISHPER_PROFILE: cpu
# WHISPER_MODELS_DIR: /app/models
# UPLOAD_DIR: /app/uploads
# CPU_THREADS: 4
-12
View File
@@ -1,12 +0,0 @@
apiVersion: v1
data:
DB_PASS: whishper
DB_USER: whishper
LT_LOAD_ONLY: es,en,fr,nl
WHISHPER_HOST: http://127.0.0.1:8082
WHISPER_MODELS: tiny, tiny.en, small, small.en, base, base.en, medium, medium.en, large-v2, large-v3
kind: ConfigMap
metadata:
labels:
io.kompose.service: mongo-env
name: env
-43
View File
@@ -1,43 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: whisper-ingress
annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: prod-cluster-issuer
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
nginx.ingress.kubernetes.io/enable-cors: "true"
# type of authentication
nginx.ingress.kubernetes.io/auth-type: basic
# name of the secret that contains the user/password definitions
nginx.ingress.kubernetes.io/auth-secret: whisper-basic-auth
# message to display with an appropriate context why the authentication is required
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required '
nginx.ingress.kubernetes.io/proxy-body-size: "0"
# nginx.ingress.kubernetes.io/cors-allow-origin: "http://localhost:3000/"
# nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
# If you encounter a redirect loop or are getting a 307 response code
# then you need to force the nginx ingress to connect to the backend using HTTPS.
#
# nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
# namespace: ente-photos
spec:
ingressClassName: nginx
rules:
- host: alv.hensen.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: whishper
port:
number: 8082
# TLS configuration for HTTPS
tls:
# TLS secretName used on ClusterIssuer
- secretName: letsencrypt-prod
hosts:
- alv.hensen.io
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: mongo-claim2
name: mongo-claim2
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: mongo-claim3
name: mongo-claim3
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
-73
View File
@@ -1,73 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: mongo
name: mongo
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: mongo
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: mongo
spec:
containers:
- env:
- name: DB_PASS
valueFrom:
configMapKeyRef:
key: DB_PASS
name: env
- name: DB_USER
valueFrom:
configMapKeyRef:
key: DB_USER
name: env
- name: LT_LOAD_ONLY
valueFrom:
configMapKeyRef:
key: LT_LOAD_ONLY
name: env
- name: MONGO_INITDB_ROOT_PASSWORD
value: whishper
- name: MONGO_INITDB_ROOT_USERNAME
value: whishper
- name: WHISHPER_HOST
valueFrom:
configMapKeyRef:
key: WHISHPER_HOST
name: env
- name: WHISPER_MODELS
valueFrom:
configMapKeyRef:
key: WHISPER_MODELS
name: env
image: mongo
name: mongo
ports:
- containerPort: 27017
protocol: TCP
volumeMounts:
- mountPath: /data/db
name: mongo-claim2
# - mountPath: /var/log/mongodb
# name: mongo-claim3
restartPolicy: Always
volumes:
- name: mongo-claim2
persistentVolumeClaim:
claimName: mongo-claim2
# - name: mongo-claim3
# persistentVolumeClaim:
# claimName: mongo-claim3
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: mongo
name: mongo
spec:
ports:
- name: "27017"
port: 27017
targetPort: 27017
selector:
io.kompose.service: mongo
-35
View File
@@ -1,35 +0,0 @@
events {
worker_connections 1024;
}
http {
gzip on;
server {
listen 80;
location /api/video {
alias /app/uploads/;
}
location /languages {
proxy_pass http://translate:5000;
}
location /api {
client_max_body_size 0;
proxy_pass http://127.0.0.1:8080;
}
location /ws {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://127.0.0.1:3000;
}
}
}
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: translate-claim0
name: translate-claim0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: translate-claim1
name: translate-claim1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
-83
View File
@@ -1,83 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: translate
name: translate
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: translate
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: translate
spec:
securityContext:
fsGroup: 2000
containers:
- env:
- name: DB_PASS
valueFrom:
configMapKeyRef:
key: DB_PASS
name: env
- name: DB_USER
valueFrom:
configMapKeyRef:
key: DB_USER
name: env
- name: LT_DISABLE_WEB_UI
value: "true"
- name: LT_LOAD_ONLY
valueFrom:
configMapKeyRef:
key: LT_LOAD_ONLY
name: env
- name: LT_UPDATE_MODELS
value: "true"
- name: WHISHPER_HOST
valueFrom:
configMapKeyRef:
key: WHISHPER_HOST
name: env
- name: WHISPER_MODELS
valueFrom:
configMapKeyRef:
key: WHISPER_MODELS
name: env
image: libretranslate/libretranslate:latest
livenessProbe:
exec:
command:
- ./venv/bin/python scripts/healthcheck.py
failureThreshold: 5
periodSeconds: 2
timeoutSeconds: 3
name: whisper-libretranslate
ports:
- containerPort: 5000
protocol: TCP
tty: true
volumeMounts:
- mountPath: /home/libretranslate/.local/share
name: translate-claim0
- mountPath: /home/libretranslate/.local/cache
name: translate-claim1
restartPolicy: Always
volumes:
- name: translate-claim0
persistentVolumeClaim:
claimName: translate-claim0
- name: translate-claim1
persistentVolumeClaim:
claimName: translate-claim1
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: translate
name: translate
spec:
ports:
- name: "5000"
port: 5000
targetPort: 5000
selector:
io.kompose.service: translate
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: whishper-claim0
name: whishper-claim0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
@@ -1,12 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: whishper-claim1
name: whishper-claim1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
-83
View File
@@ -1,83 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: whishper
name: whishper
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: whishper
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: whishper
spec:
securityContext:
runAsUser: 0
containers:
- env:
- name: CPU_THREADS
value: "4"
- name: DB_PASS
valueFrom:
configMapKeyRef:
key: DB_PASS
name: env
- name: DB_USER
valueFrom:
configMapKeyRef:
key: DB_USER
name: env
- name: LT_LOAD_ONLY
valueFrom:
configMapKeyRef:
key: LT_LOAD_ONLY
name: env
- name: PUBLIC_API_HOST
- name: PUBLIC_INTERNAL_API_HOST
value: http://127.0.0.1:80
- name: PUBLIC_TRANSLATION_API_HOST
- name: PUBLIC_WHISHPER_PROFILE
value: cpu
- name: UPLOAD_DIR
value: /app/uploads
- name: WHISHPER_HOST
valueFrom:
configMapKeyRef:
key: WHISHPER_HOST
name: env
- name: WHISPER_MODELS
valueFrom:
configMapKeyRef:
key: WHISPER_MODELS
name: env
- name: WHISPER_MODELS_DIR
value: /app/models
image: pluja/whishper:latest
name: whishper
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /app/uploads
name: whishper-claim0
- mountPath: /var/log/whishper
name: whishper-claim1
restartPolicy: Always
volumes:
- name: whishper-claim0
persistentVolumeClaim:
claimName: whishper-claim0
- name: whishper-claim1
persistentVolumeClaim:
claimName: whishper-claim1
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.34.0 (cbf2835db)
labels:
io.kompose.service: whishper
name: whishper
spec:
ports:
- name: "8082"
port: 8082
targetPort: 80
selector:
io.kompose.service: whishper