chore: initial infrastructure scaffold
Kustomize base + overlays for the full Sunbeam k3s stack: - base/mesh — Linkerd edge (crds + control-plane + viz) - base/ingress — custom Pingora edge proxy - base/ory — Kratos 0.60.1 + Hydra 0.60.1 + login-ui - base/data — CloudNativePG 0.27.1, Valkey 8, OpenSearch 2 - base/storage — SeaweedFS master + volume + filer (S3 on :8333) - base/lasuite — Hive sync daemon + La Suite app placeholders - base/media — LiveKit livekit-server 1.9.0 - base/devtools — Gitea 12.5.0 (external PG + Valkey) overlays/local — sslip.io domain, mkcert TLS, Lima hostPort overlays/production — stub (TODOs for sunbeam.pt values) scripts/ — local-up/down/certs/urls helpers justfile — up / down / certs / urls targets
This commit is contained in:
11
base/storage/kustomization.yaml
Normal file
11
base/storage/kustomization.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
namespace: storage
|
||||
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- seaweedfs-config.yaml
|
||||
- seaweedfs-master.yaml
|
||||
- seaweedfs-volume.yaml
|
||||
- seaweedfs-filer.yaml
|
||||
6
base/storage/namespace.yaml
Normal file
6
base/storage/namespace.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: storage
|
||||
annotations:
|
||||
linkerd.io/inject: enabled
|
||||
24
base/storage/seaweedfs-config.yaml
Normal file
24
base/storage/seaweedfs-config.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: seaweedfs-filer-config
|
||||
namespace: storage
|
||||
data:
|
||||
filer.toml: |
|
||||
# SeaweedFS filer configuration
|
||||
# S3 API enabled on port 8333
|
||||
|
||||
[leveldb2]
|
||||
enabled = true
|
||||
dir = "/data/filer"
|
||||
|
||||
[s3]
|
||||
enabled = true
|
||||
port = 8333
|
||||
# Credentials are loaded from the seaweedfs-s3-credentials Secret
|
||||
# and passed as env vars (S3_ACCESS_KEY, S3_SECRET_KEY) to the filer.
|
||||
|
||||
master.toml: |
|
||||
[master.maintenance]
|
||||
sleep_minutes = 17
|
||||
garbage_threshold = 0.3
|
||||
74
base/storage/seaweedfs-filer.yaml
Normal file
74
base/storage/seaweedfs-filer.yaml
Normal file
@@ -0,0 +1,74 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: seaweedfs-filer
|
||||
namespace: storage
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: seaweedfs-filer
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: seaweedfs-filer
|
||||
spec:
|
||||
containers:
|
||||
- name: filer
|
||||
image: chrislusf/seaweedfs:latest
|
||||
args:
|
||||
- filer
|
||||
- -port=8888
|
||||
- -s3
|
||||
- -s3.port=8333
|
||||
- -master=seaweedfs-master.storage.svc.cluster.local:9333
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8888
|
||||
protocol: TCP
|
||||
- name: s3
|
||||
containerPort: 8333
|
||||
protocol: TCP
|
||||
- name: grpc
|
||||
containerPort: 18888
|
||||
protocol: TCP
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: seaweedfs-s3-credentials
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /etc/seaweedfs
|
||||
readOnly: true
|
||||
- name: filer-data
|
||||
mountPath: /data/filer
|
||||
resources:
|
||||
limits:
|
||||
memory: 256Mi
|
||||
requests:
|
||||
memory: 128Mi
|
||||
cpu: 50m
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: seaweedfs-filer-config
|
||||
- name: filer-data
|
||||
emptyDir: {}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: seaweedfs-filer
|
||||
namespace: storage
|
||||
spec:
|
||||
selector:
|
||||
app: seaweedfs-filer
|
||||
ports:
|
||||
- name: http
|
||||
port: 8888
|
||||
targetPort: 8888
|
||||
- name: s3
|
||||
port: 8333
|
||||
targetPort: 8333
|
||||
- name: grpc
|
||||
port: 18888
|
||||
targetPort: 18888
|
||||
66
base/storage/seaweedfs-master.yaml
Normal file
66
base/storage/seaweedfs-master.yaml
Normal file
@@ -0,0 +1,66 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: seaweedfs-master
|
||||
namespace: storage
|
||||
spec:
|
||||
serviceName: seaweedfs-master
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: seaweedfs-master
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: seaweedfs-master
|
||||
spec:
|
||||
containers:
|
||||
- name: master
|
||||
image: chrislusf/seaweedfs:latest
|
||||
args:
|
||||
- master
|
||||
- -port=9333
|
||||
- -mdir=/data
|
||||
- -defaultReplication=000
|
||||
- -volumeSizeLimitMB=1000
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 9333
|
||||
protocol: TCP
|
||||
- name: grpc
|
||||
containerPort: 19333
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
resources:
|
||||
limits:
|
||||
memory: 64Mi
|
||||
requests:
|
||||
memory: 32Mi
|
||||
cpu: 25m
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
spec:
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: seaweedfs-master
|
||||
namespace: storage
|
||||
spec:
|
||||
selector:
|
||||
app: seaweedfs-master
|
||||
clusterIP: None
|
||||
ports:
|
||||
- name: http
|
||||
port: 9333
|
||||
targetPort: 9333
|
||||
- name: grpc
|
||||
port: 19333
|
||||
targetPort: 19333
|
||||
66
base/storage/seaweedfs-volume.yaml
Normal file
66
base/storage/seaweedfs-volume.yaml
Normal file
@@ -0,0 +1,66 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: seaweedfs-volume
|
||||
namespace: storage
|
||||
spec:
|
||||
serviceName: seaweedfs-volume
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: seaweedfs-volume
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: seaweedfs-volume
|
||||
spec:
|
||||
containers:
|
||||
- name: volume
|
||||
image: chrislusf/seaweedfs:latest
|
||||
args:
|
||||
- volume
|
||||
- -port=8080
|
||||
- -mserver=seaweedfs-master.storage.svc.cluster.local:9333
|
||||
- -dir=/data
|
||||
- -max=50
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8080
|
||||
protocol: TCP
|
||||
- name: grpc
|
||||
containerPort: 18080
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
resources:
|
||||
limits:
|
||||
memory: 256Mi
|
||||
requests:
|
||||
memory: 128Mi
|
||||
cpu: 50m
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
spec:
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 20Gi
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: seaweedfs-volume
|
||||
namespace: storage
|
||||
spec:
|
||||
selector:
|
||||
app: seaweedfs-volume
|
||||
clusterIP: None
|
||||
ports:
|
||||
- name: http
|
||||
port: 8080
|
||||
targetPort: 8080
|
||||
- name: grpc
|
||||
port: 18080
|
||||
targetPort: 18080
|
||||
Reference in New Issue
Block a user