Files
cloudy/cluster/swarm-converted/11-apps-stack.yaml
T

684 lines
13 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: adminer
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: adminer
template:
metadata:
labels:
app: adminer
spec:
containers:
- name: adminer
image: adminer
ports:
- containerPort: 8080
name: http
env:
- name: PGADMIN_DEFAULT_EMAIL
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: PGADMIN_DEFAULT_EMAIL
- name: PGADMIN_DEFAULT_PASSWORD
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: PGADMIN_DEFAULT_PASSWORD
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: PYTHONPATH
value: /pgadmin4
- name: TZ
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: TZ
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
- name: ADMINER_DESIGN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: ADMINER_DESIGN
volumeMounts:
- name: adminer-data
mountPath: /var/lib/pgadmin
volumes:
- name: adminer-data
persistentVolumeClaim:
claimName: adminer-data
---
apiVersion: v1
kind: Service
metadata:
name: adminer
namespace: swarm-converted
spec:
selector:
app: adminer
ports:
- name: http
port: 8080
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: adminer
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`adminer.REPLACE_DOMAIN`) || Host(`dbadmin.REPLACE_DOMAIN`)
services:
- name: adminer
port: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cheatsheets-app
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: cheatsheets-app
template:
metadata:
labels:
app: cheatsheets-app
spec:
containers:
- name: cheatsheets-app
image: furyhawk/cheatsheets:latest
ports:
- containerPort: 80
name: http
---
apiVersion: v1
kind: Service
metadata:
name: cheatsheets-app
namespace: swarm-converted
spec:
selector:
app: cheatsheets-app
ports:
- name: http
port: 80
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: cheatsheets-app
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`cheat.REPLACE_DOMAIN`)
services:
- name: cheatsheets-app
port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: heynote-app
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: heynote-app
template:
metadata:
labels:
app: heynote-app
spec:
containers:
- name: heynote-app
image: furyhawk/heynote:latest
ports:
- containerPort: 5173
name: http
env:
- name: NODE_ENV
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: NODE_ENV
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
---
apiVersion: v1
kind: Service
metadata:
name: heynote-app
namespace: swarm-converted
spec:
selector:
app: heynote-app
ports:
- name: http
port: 5173
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: heynote-app
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`note.REPLACE_DOMAIN`) || Host(`note0.REPLACE_DOMAIN`) || Host(`n.REPLACE_DOMAIN`) || Host(`pad.REPLACE_DOMAIN`)
services:
- name: heynote-app
port: 5173
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jellyfin
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: jellyfin
template:
metadata:
labels:
app: jellyfin
spec:
containers:
- name: jellyfin
image: jellyfin/jellyfin
ports:
- containerPort: 8096
name: http
env:
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
- name: JELLYFIN_PublishedServerUrl
value: https://media.REPLACE_DOMAIN
volumeMounts:
- name: jellyfin-config
mountPath: /config
- name: jellyfin-cache
mountPath: /cache
- name: jellyfin-media
mountPath: /media
volumes:
- name: jellyfin-config
persistentVolumeClaim:
claimName: jellyfin-config
- name: jellyfin-cache
persistentVolumeClaim:
claimName: jellyfin-cache
- name: jellyfin-media
persistentVolumeClaim:
claimName: jellyfin-media
---
apiVersion: v1
kind: Service
metadata:
name: jellyfin
namespace: swarm-converted
spec:
selector:
app: jellyfin
ports:
- name: http
port: 8096
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: jellyfin
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`media.REPLACE_DOMAIN`)
services:
- name: jellyfin
port: 8096
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: meshtastic-web
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: meshtastic-web
template:
metadata:
labels:
app: meshtastic-web
spec:
containers:
- name: meshtastic-web
image: ghcr.io/meshtastic/web
ports:
- containerPort: 8080
name: http
- containerPort: 8443
name: https-alt
---
apiVersion: v1
kind: Service
metadata:
name: meshtastic-web
namespace: swarm-converted
spec:
selector:
app: meshtastic-web
ports:
- name: http
port: 8080
targetPort: http
- name: https-alt
port: 8443
targetPort: https-alt
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: meshtastic-web
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`mesh.REPLACE_DOMAIN`)
services:
- name: meshtastic-web
port: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: privatebin
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: privatebin
template:
metadata:
labels:
app: privatebin
spec:
containers:
- name: privatebin
image: privatebin/nginx-fpm-alpine:latest
ports:
- containerPort: 8080
name: http
volumeMounts:
- name: privatebin-data
mountPath: /srv/data
volumes:
- name: privatebin-data
persistentVolumeClaim:
claimName: privatebin-data
---
apiVersion: v1
kind: Service
metadata:
name: privatebin
namespace: swarm-converted
spec:
selector:
app: privatebin
ports:
- name: http
port: 8080
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: privatebin
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`bin.REPLACE_DOMAIN`) || Host(`paste.REPLACE_DOMAIN`)
services:
- name: privatebin
port: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: streamlit-bai
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: streamlit-bai
template:
metadata:
labels:
app: streamlit-bai
spec:
containers:
- name: streamlit-bai
image: furyhawk/beyondallinfo:latest
command:
- sh
- -c
args:
- streamlit run --server.port=$STREAMLIT_BAI_SERVER_PORT --server.address=0.0.0.0 --server.baseUrlPath=$BAI_LOCATION src/app.py
ports:
- containerPort: 8502
name: http
env:
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
- name: STREAMLIT_BAI_SERVER_PORT
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: STREAMLIT_BAI_SERVER_PORT
- name: BAI_LOCATION
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: BAI_LOCATION
- name: GROQ_API_KEY
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: GROQ_API_KEY
volumeMounts:
- name: bai-cache
mountPath: /app/cache
volumes:
- name: bai-cache
persistentVolumeClaim:
claimName: bai-cache
---
apiVersion: v1
kind: Service
metadata:
name: streamlit-bai
namespace: swarm-converted
spec:
selector:
app: streamlit-bai
ports:
- name: http
port: 8502
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: streamlit-bai
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`bai.REPLACE_DOMAIN`)
services:
- name: streamlit-bai
port: 8502
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: streamlit-fin
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: streamlit-fin
template:
metadata:
labels:
app: streamlit-fin
spec:
containers:
- name: streamlit-fin
image: furyhawk/llama3toolsfin:main
ports:
- containerPort: 8501
name: http
env:
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
- name: STREAMLIT_FIN_SERVER_PORT
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: STREAMLIT_FIN_SERVER_PORT
- name: GROQ_API_KEY
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: GROQ_API_KEY
---
apiVersion: v1
kind: Service
metadata:
name: streamlit-fin
namespace: swarm-converted
spec:
selector:
app: streamlit-fin
ports:
- name: http
port: 8501
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: streamlit-fin
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`fin.REPLACE_DOMAIN`)
services:
- name: streamlit-fin
port: 8501
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: site-server
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: site-server
template:
metadata:
labels:
app: site-server
spec:
containers:
- name: site-server
image: nginx:alpine
ports:
- containerPort: 80
name: http
volumeMounts:
- name: site-content
mountPath: /usr/share/nginx/html
readOnly: true
volumes:
- name: site-content
persistentVolumeClaim:
claimName: site-content
---
apiVersion: v1
kind: Service
metadata:
name: site-server
namespace: swarm-converted
spec:
selector:
app: site-server
ports:
- name: http
port: 80
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: site-server
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`REPLACE_DOMAIN`) || Host(`www.REPLACE_DOMAIN`) || Host(`info.REPLACE_DOMAIN`) || Host(`124c41.REPLACE_DOMAIN`)
middlewares:
- name: no-www
services:
- name: site-server
port: 80
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: resume-redirect
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`resume.REPLACE_DOMAIN`)
middlewares:
- name: redirect-resume
services:
- name: site-server
port: 80
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: blog-redirect
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`blog.REPLACE_DOMAIN`)
middlewares:
- name: redirect-blog
services:
- name: site-server
port: 80