feat: export all K8 Plus cluster manifests

Namespaces: argocd, authentik, backup-system, cloudflare-ddns,
gitea, homarr, monitoring, n8n, openclaw, polymarket-bot, vaultwarden
Cluster-wide: clusterissuers, namespaces
Secrets: redacted (structure only, data=REDACTED)
This commit is contained in:
2026-04-10 08:57:02 +00:00
commit ff2e6cc985
163 changed files with 10979 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: '1'
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"api","namespace":"polymarket-bot"},"spec":{"replicas":1,"selector":{"matchLabels":{"app":"api"}},"template":{"metadata":{"labels":{"app":"api"}},"spec":{"containers":[{"command":["uvicorn","api.main:app","--host","0.0.0.0","--port","8000"],"envFrom":[{"secretRef":{"name":"bot-secrets"}}],"image":"docker.io/library/polymarket-bot-api:v2","imagePullPolicy":"Never","name":"api","ports":[{"containerPort":8000}],"resources":{"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"100m","memory":"256Mi"}}}]}}}}
'
name: api
namespace: polymarket-bot
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: api
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: api
spec:
containers:
- command:
- uvicorn
- api.main:app
- --host
- 0.0.0.0
- --port
- '8000'
envFrom:
- secretRef:
name: bot-secrets
image: docker.io/library/polymarket-bot-api:v2
imagePullPolicy: Never
name: api
ports:
- containerPort: 8000
protocol: TCP
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
+53
View File
@@ -0,0 +1,53 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: '1'
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"bot","namespace":"polymarket-bot"},"spec":{"replicas":1,"selector":{"matchLabels":{"app":"bot"}},"template":{"metadata":{"labels":{"app":"bot"}},"spec":{"containers":[{"command":["python3","-m","bot.main"],"envFrom":[{"secretRef":{"name":"bot-secrets"}}],"image":"docker.io/library/polymarket-bot:v5","imagePullPolicy":"Never","name":"bot","resources":{"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"100m","memory":"256Mi"}}}]}}}}
'
name: bot
namespace: polymarket-bot
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: bot
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: bot
spec:
containers:
- command:
- python3
- -m
- bot.main
envFrom:
- secretRef:
name: bot-secrets
image: docker.io/library/polymarket-bot:v5
imagePullPolicy: Never
name: bot
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
+49
View File
@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: '1'
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"dashboard","namespace":"polymarket-bot"},"spec":{"replicas":1,"selector":{"matchLabels":{"app":"dashboard"}},"template":{"metadata":{"labels":{"app":"dashboard"}},"spec":{"containers":[{"image":"docker.io/library/polymarket-bot-dashboard:v3","imagePullPolicy":"Never","name":"dashboard","ports":[{"containerPort":80}],"resources":{"limits":{"cpu":"200m","memory":"128Mi"},"requests":{"cpu":"50m","memory":"64Mi"}}}]}}}}
'
name: dashboard
namespace: polymarket-bot
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: dashboard
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: dashboard
spec:
containers:
- image: docker.io/library/polymarket-bot-dashboard:v3
imagePullPolicy: Never
name: dashboard
ports:
- containerPort: 80
protocol: TCP
resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
@@ -0,0 +1,37 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"cert-manager.io/cluster-issuer":"letsencrypt-prod","traefik.ingress.kubernetes.io/router.entrypoints":"websecure","traefik.ingress.kubernetes.io/router.tls":"true"},"name":"polymarket-bot","namespace":"polymarket-bot"},"spec":{"ingressClassName":"traefik","rules":[{"host":"polymarket.chemavx.xyz","http":{"paths":[{"backend":{"service":{"name":"api","port":{"number":8000}}},"path":"/api","pathType":"Prefix"},{"backend":{"service":{"name":"dashboard","port":{"number":80}}},"path":"/","pathType":"Prefix"}]}}],"tls":[{"hosts":["polymarket.chemavx.xyz"],"secretName":"polymarket-tls"}]}}
'
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: 'true'
name: polymarket-bot
namespace: polymarket-bot
spec:
ingressClassName: traefik
rules:
- host: polymarket.chemavx.xyz
http:
paths:
- backend:
service:
name: api
port:
number: 8000
path: /api
pathType: Prefix
- backend:
service:
name: dashboard
port:
number: 80
path: /
pathType: Prefix
tls:
- hosts:
- polymarket.chemavx.xyz
secretName: polymarket-tls
+23
View File
@@ -0,0 +1,23 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: 'yes'
pv.kubernetes.io/bound-by-controller: 'yes'
volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path
volume.kubernetes.io/selected-node: chemavx-k8
volume.kubernetes.io/storage-provisioner: rancher.io/local-path
labels:
app: postgres
name: data-postgres-0
namespace: polymarket-bot
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local-path
volumeMode: Filesystem
volumeName: pvc-327bbc6d-dcc6-46b4-9d78-db950f71eb98
+22
View File
@@ -0,0 +1,22 @@
apiVersion: v1
data:
COINGECKO_API_KEY: REDACTED
DATABASE_URL: REDACTED
PAPER_BANKROLL: REDACTED
PAPER_MODE: REDACTED
POLYMARKET_API_KEY: REDACTED
POLYMARKET_PASSPHRASE: REDACTED
POLYMARKET_SECRET: REDACTED
TELEGRAM_BOT_TOKEN: REDACTED
TELEGRAM_CHAT_ID: REDACTED
WALLET_PRIVATE_KEY: REDACTED
kind: Secret
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Secret","metadata":{"annotations":{},"name":"bot-secrets","namespace":"polymarket-bot"},"stringData":{"COINGECKO_API_KEY":"","DATABASE_URL":"postgresql://bot:bot@postgres:5432/polymarket","PAPER_BANKROLL":"10000","PAPER_MODE":"true","POLYMARKET_API_KEY":"b07767c6-5fa1-94a3-a575-0f49beed86c0","POLYMARKET_PASSPHRASE":"715160758af519b097a2ca2f847cadb80dbcc970c1cf52196c57d2678b3c29b0","POLYMARKET_SECRET":"sTjA4xHJFJ-gI0w3xNQCl6zbS4u430kA_AkVDrSoTfg=","TELEGRAM_BOT_TOKEN":"","TELEGRAM_CHAT_ID":"","WALLET_PRIVATE_KEY":""},"type":"Opaque"}
'
name: bot-secrets
namespace: polymarket-bot
type: Opaque
+21
View File
@@ -0,0 +1,21 @@
apiVersion: v1
data:
tls.crt: REDACTED
tls.key: REDACTED
kind: Secret
metadata:
annotations:
cert-manager.io/alt-names: polymarket.chemavx.xyz
cert-manager.io/certificate-name: polymarket-tls
cert-manager.io/common-name: polymarket.chemavx.xyz
cert-manager.io/ip-sans: ''
cert-manager.io/issuer-group: cert-manager.io
cert-manager.io/issuer-kind: ClusterIssuer
cert-manager.io/issuer-name: letsencrypt-prod
cert-manager.io/uri-sans: ''
labels:
controller.cert-manager.io/fao: 'true'
name: polymarket-tls
namespace: polymarket-bot
type: kubernetes.io/tls
+22
View File
@@ -0,0 +1,22 @@
apiVersion: v1
kind: Service
metadata:
name: api
namespace: polymarket-bot
spec:
clusterIP: 10.43.201.4
clusterIPs:
- 10.43.201.4
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 8000
protocol: TCP
targetPort: 8000
selector:
app: api
sessionAffinity: None
type: ClusterIP
+22
View File
@@ -0,0 +1,22 @@
apiVersion: v1
kind: Service
metadata:
name: dashboard
namespace: polymarket-bot
spec:
clusterIP: 10.43.62.6
clusterIPs:
- 10.43.62.6
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: dashboard
sessionAffinity: None
type: ClusterIP
+22
View File
@@ -0,0 +1,22 @@
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: polymarket-bot
spec:
clusterIP: 10.43.238.53
clusterIPs:
- 10.43.238.53
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 5432
protocol: TCP
targetPort: 5432
selector:
app: postgres
sessionAffinity: None
type: ClusterIP
+76
View File
@@ -0,0 +1,76 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres
namespace: polymarket-bot
spec:
persistentVolumeClaimRetentionPolicy:
whenDeleted: Retain
whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: postgres
serviceName: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- env:
- name: POSTGRES_USER
value: bot
- name: POSTGRES_PASSWORD
value: bot
- name: POSTGRES_DB
value: polymarket
image: postgres:16-alpine
imagePullPolicy: IfNotPresent
name: postgres
ports:
- containerPort: 5432
protocol: TCP
readinessProbe:
exec:
command:
- pg_isready
- -U
- bot
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: data
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
volumeClaimTemplates:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
volumeMode: Filesystem
status:
phase: Pending