Skip to content

Commit db814d2

Browse files
committed
Add ha overlay for seaweedfs
Signed-off-by: Patrick Schönthaler <[email protected]>
1 parent 716818b commit db814d2

19 files changed

+570
-16
lines changed

manifests/kustomize/third-party/seaweedfs/base/seaweedfs/kustomization.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@ kind: Kustomization
33
namespace: kubeflow
44

55
resources:
6-
- seaweedfs-deployment.yaml
7-
- seaweedfs-pvc.yaml
8-
- seaweedfs-networkpolicy.yaml
96
- seaweedfs-create-admin-user-job.yaml
10-
- seaweedfs-service.yaml
117
- seaweedfs-service-account.yaml
128
- minio-service.yaml
139
- mlpipeline-minio-artifact-secret.yaml

manifests/kustomize/third-party/seaweedfs/base/seaweedfs/seaweedfs-create-admin-user-job.yaml

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ spec:
1313
restartPolicy: OnFailure
1414
containers:
1515
- name: init-seaweedfs
16-
image: 'chrislusf/seaweedfs:3.85'
16+
image: 'chrislusf/seaweedfs:3.92'
1717
env:
1818
- name: WEED_CLUSTER_DEFAULT
1919
value: "sw"
@@ -44,7 +44,7 @@ spec:
4444
echo "Service at $url failed to become ready within 5 minutes"
4545
exit 1
4646
}
47-
wait_for_service "http://minio-service.kubeflow:9000/status"
47+
wait_for_service "http://minio-service:9000/status"
4848
echo "Creating S3 bucket..."
4949
echo "s3.bucket.create --name mlpipeline" | /usr/bin/weed shell > /dev/null 2>&1
5050
if [ $? -eq 0 ]; then
@@ -64,14 +64,17 @@ spec:
6464
echo "Failed to configure S3 credentials"
6565
exit 1
6666
fi
67-
securityContext: # Using restricted profile
68-
allowPrivilegeEscalation: false
69-
privileged: false
70-
runAsNonRoot: true
67+
ports:
68+
- containerPort: 9333
69+
name: http-master
70+
- containerPort: 19333
71+
#securityContext: # Using restricted profile
72+
#allowPrivilegeEscalation: false
73+
#privileged: false
74+
#runAsNonRoot: true
7175
# image defaults to root user
72-
runAsUser: 1001
73-
runAsGroup: 1001
74-
capabilities:
75-
drop:
76-
- ALL
76+
#runAsUser: 1001
77+
#runAsGroup: 1001
78+
## drop:
79+
#- ALL
7780
serviceAccountName: seaweedfs
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
apiVersion: apps/v1
2+
kind: StatefulSet
3+
metadata:
4+
labels:
5+
app: seaweedfs
6+
component: filer
7+
name: seaweedfs-filer
8+
spec:
9+
serviceName: seaweedfs-filer
10+
replicas: 2
11+
podManagementPolicy: Parallel
12+
updateStrategy:
13+
type: RollingUpdate
14+
selector:
15+
matchLabels:
16+
app: seaweedfs
17+
component: filer
18+
template:
19+
metadata:
20+
labels:
21+
app: seaweedfs
22+
component: filer
23+
application-crd-id: kubeflow-pipelines
24+
spec:
25+
affinity:
26+
podAntiAffinity:
27+
requiredDuringSchedulingIgnoredDuringExecution:
28+
- labelSelector:
29+
matchLabels:
30+
app: seaweedfs
31+
component: filer
32+
topologyKey: kubernetes.io/hostname
33+
serviceAccountName: seaweedfs
34+
terminationGracePeriodSeconds: 60
35+
securityContext:
36+
fsGroup: 1001
37+
containers:
38+
- name: seaweedfs-filer
39+
image: 'chrislusf/seaweedfs:3.92'
40+
args:
41+
- 'filer'
42+
- '-port=8888'
43+
- '-iam'
44+
- '-master=seaweedfs-master-0.seaweedfs-master:9333,seaweedfs-master-1.seaweedfs-master:9333,seaweedfs-master-2.seaweedfs-master:9333'
45+
volumeMounts:
46+
- name: data-filer
47+
mountPath: /data
48+
ports:
49+
- containerPort: 8888
50+
name: http-filer
51+
- containerPort: 18888
52+
name: grpc-filer
53+
- containerPort: 8333
54+
name: http-s3
55+
- containerPort: 8111
56+
name: http-iam
57+
readinessProbe:
58+
httpGet:
59+
path: /
60+
port: 8888
61+
scheme: HTTP
62+
initialDelaySeconds: 5
63+
periodSeconds: 15
64+
successThreshold: 1
65+
failureThreshold: 100
66+
timeoutSeconds: 10
67+
resources:
68+
requests:
69+
cpu: 100m
70+
memory: 128Mi
71+
limits:
72+
memory: 2Gi
73+
securityContext: # Using restricted profile
74+
allowPrivilegeEscalation: false
75+
privileged: false
76+
runAsNonRoot: true
77+
# image defaults to root user
78+
runAsUser: 1001
79+
runAsGroup: 1001
80+
capabilities:
81+
drop:
82+
- ALL
83+
volumeClaimTemplates:
84+
- metadata:
85+
name: data-filer
86+
spec:
87+
accessModes:
88+
- ReadWriteOnce
89+
resources:
90+
requests:
91+
storage: 25Gi
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
annotations:
5+
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
6+
labels:
7+
app: seaweedfs
8+
component: filer
9+
name: seaweedfs-filer-intern
10+
spec:
11+
ports:
12+
- name: grpc-filer
13+
port: 18888
14+
protocol: TCP
15+
targetPort: 18888
16+
- name: http-filer
17+
port: 8888
18+
protocol: TCP
19+
targetPort: 8888
20+
publishNotReadyAddresses: true
21+
selector:
22+
app: seaweedfs
23+
component: filer
24+
---
25+
apiVersion: v1
26+
kind: Service
27+
metadata:
28+
labels:
29+
app: seaweedfs
30+
component: filer
31+
name: seaweedfs-filer
32+
namespace: kubeflow
33+
spec:
34+
ports:
35+
- name: http-iam
36+
port: 8111
37+
protocol: TCP
38+
targetPort: 8111
39+
- name: http-s3
40+
port: 8333
41+
protocol: TCP
42+
targetPort: 8333
43+
- name: grpc-filer
44+
port: 18888
45+
protocol: TCP
46+
targetPort: 18888
47+
- name: http-filer
48+
port: 8888
49+
protocol: TCP
50+
targetPort: 8888
51+
selector:
52+
app: seaweedfs
53+
component: filer
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: kustomize.config.k8s.io/v1beta1
2+
kind: Kustomization
3+
namespace: kubeflow
4+
5+
resources:
6+
- ../../base
7+
- filer-statefulset.yaml
8+
- filer-svc.yaml
9+
- master-statefulset.yaml
10+
- master-svc.yaml
11+
- s3-gateway-deployment.yaml
12+
- volume-statefulset.yaml
13+
- volume-svc.yaml
14+
15+
patches:
16+
- target:
17+
version: v1
18+
kind: Job
19+
name: init-seaweedfs
20+
patch: |-
21+
- op: replace
22+
path: /spec/template/spec/containers/0/env/1/value
23+
value: "seaweedfs-master:9333"
24+
- op: add
25+
path: /spec/template/spec/containers/0/env/-
26+
value: {"name": "WEED_CLUSTER_SW_FILER", "value": "seaweedfs-filer:8888"}
27+
- target:
28+
version: v1
29+
kind: Service
30+
name: minio-service
31+
patch: |-
32+
- op: add
33+
path: /spec/selector/component
34+
value: s3
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
apiVersion: apps/v1
2+
kind: StatefulSet
3+
metadata:
4+
labels:
5+
app: seaweedfs
6+
component: master
7+
name: seaweedfs-master
8+
spec:
9+
serviceName: seaweedfs-master
10+
replicas: 3
11+
podManagementPolicy: Parallel
12+
updateStrategy:
13+
type: RollingUpdate
14+
selector:
15+
matchLabels:
16+
app: seaweedfs
17+
component: master
18+
template:
19+
metadata:
20+
labels:
21+
app: seaweedfs
22+
component: master
23+
application-crd-id: kubeflow-pipelines
24+
spec:
25+
affinity:
26+
podAntiAffinity:
27+
requiredDuringSchedulingIgnoredDuringExecution:
28+
- labelSelector:
29+
matchLabels:
30+
app: seaweedfs
31+
component: master
32+
topologyKey: kubernetes.io/hostname
33+
serviceAccountName: seaweedfs
34+
terminationGracePeriodSeconds: 60
35+
securityContext:
36+
fsGroup: 1001
37+
containers:
38+
- name: seaweedfs-master
39+
image: 'chrislusf/seaweedfs:3.92'
40+
args:
41+
- 'master'
42+
- '-mdir=/data'
43+
- '-defaultReplication=001'
44+
- '-volumePreallocate=false'
45+
- '-ip=$(POD_NAME).seaweedfs-master.$(NAMESPACE)'
46+
- '-ip.bind=0.0.0.0'
47+
- '-port=9333'
48+
- '-peers=seaweedfs-master-0.seaweedfs-master.$(NAMESPACE):9333,seaweedfs-master-1.seaweedfs-master.$(NAMESPACE):9333,seaweedfs-master-2.seaweedfs-master.$(NAMESPACE):9333'
49+
volumeMounts:
50+
- name : data-master
51+
mountPath: /data
52+
ports:
53+
- containerPort: 9333
54+
name: http-master
55+
- containerPort: 19333
56+
name: grpc-master
57+
env:
58+
- name: POD_NAME
59+
valueFrom:
60+
fieldRef:
61+
fieldPath: metadata.name
62+
- name: NAMESPACE
63+
valueFrom:
64+
fieldRef:
65+
fieldPath: metadata.namespace
66+
readinessProbe:
67+
httpGet:
68+
path: /cluster/status
69+
port: 9333
70+
scheme: HTTP
71+
initialDelaySeconds: 15
72+
periodSeconds: 15
73+
successThreshold: 1
74+
failureThreshold: 100
75+
timeoutSeconds: 10
76+
resources:
77+
requests:
78+
cpu: 128m
79+
memory: 256Mi
80+
limits:
81+
memory: 256Mi
82+
securityContext: # Using restricted profile
83+
allowPrivilegeEscalation: false
84+
privileged: false
85+
runAsNonRoot: true
86+
# image defaults to root user
87+
runAsUser: 1001
88+
runAsGroup: 1001
89+
capabilities:
90+
drop:
91+
- ALL
92+
volumeClaimTemplates:
93+
- metadata:
94+
name: data-master
95+
spec:
96+
accessModes:
97+
- ReadWriteOnce
98+
resources:
99+
requests:
100+
storage: 20Gi
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
labels:
5+
app: seaweedfs
6+
component: master
7+
name: seaweedfs-master
8+
spec:
9+
publishNotReadyAddresses: true
10+
ports:
11+
- name: http-master
12+
port: 9333
13+
protocol: TCP
14+
targetPort: 9333
15+
- name: grpc-master
16+
port: 19333
17+
protocol: TCP
18+
targetPort: 19333
19+
selector:
20+
app: seaweedfs
21+
component: master

0 commit comments

Comments
 (0)