Skip to content

Commit e211ed9

Browse files
committed
add nextcloud tmplate
1 parent 149c680 commit e211ed9

File tree

1 file changed

+269
-0
lines changed

1 file changed

+269
-0
lines changed

template/nextcloud.yaml

Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,269 @@
1+
apiVersion: app.sealos.io/v1
2+
kind: Template
3+
metadata:
4+
name: nextcloud
5+
spec:
6+
title: Nextcloud
7+
description: Nextcloud is an open-source forum software.
8+
url: 'https://nextcloud.com/'
9+
gitRepo: 'https://github.com/nextcloud/docker'
10+
author: 'sealos'
11+
readme: 'https://raw.githubusercontent.com/nextcloud/docker/master/README.md'
12+
icon: 'https://avatars.githubusercontent.com/u/19211038?s=48&v=4'
13+
templateType: inline
14+
defaults:
15+
app_host:
16+
type: string
17+
value: ${{ random(8) }}
18+
app_name:
19+
type: string
20+
value: nextcloud-${{ random(8) }}
21+
---
22+
apiVersion: apps/v1
23+
kind: StatefulSet
24+
metadata:
25+
name: ${{ defaults.app_name }}
26+
annotations:
27+
originImageName: nextcloud
28+
deploy.cloud.sealos.io/minReplicas: '1'
29+
deploy.cloud.sealos.io/maxReplicas: '1'
30+
labels:
31+
cloud.sealos.io/app-deploy-manager: ${{ defaults.app_name }}
32+
app: ${{ defaults.app_name }}
33+
spec:
34+
replicas: 1
35+
revisionHistoryLimit: 1
36+
minReadySeconds: 10
37+
serviceName: ${{ defaults.app_name }}
38+
selector:
39+
matchLabels:
40+
app: ${{ defaults.app_name }}
41+
template:
42+
metadata:
43+
labels:
44+
app: ${{ defaults.app_name }}
45+
spec:
46+
terminationGracePeriodSeconds: 10
47+
initContainers:
48+
- name: init-mysql
49+
image: mysql:5.7
50+
command:
51+
- bash
52+
- "-c"
53+
- |
54+
mysql --host=$DB_HOST --user=$DB_USER --password=$DB_PASSWORD --port=$DB_PORT -e 'CREATE DATABASE IF NOT EXISTS nextcloud'
55+
env:
56+
- name: DB_HOST
57+
valueFrom:
58+
secretKeyRef:
59+
name: ${{ defaults.app_name }}-mysql-conn-credential
60+
key: host
61+
- name: DB_USER
62+
valueFrom:
63+
secretKeyRef:
64+
name: ${{ defaults.app_name }}-mysql-conn-credential
65+
key: username
66+
- name: DB_PASSWORD
67+
valueFrom:
68+
secretKeyRef:
69+
name: ${{ defaults.app_name }}-mysql-conn-credential
70+
key: password
71+
- name: DB_PORT
72+
valueFrom:
73+
secretKeyRef:
74+
name: ${{ defaults.app_name }}-mysql-conn-credential
75+
key: port
76+
containers:
77+
- name: ${{ defaults.app_name }}
78+
image: nextcloud
79+
env:
80+
- name: MYSQL_DATABASE
81+
value: nextcloud
82+
- name: MYSQL_USER
83+
valueFrom:
84+
secretKeyRef:
85+
name: ${{ defaults.app_name }}-mysql-conn-credential
86+
key: username
87+
- name: MYSQL_PASSWORD
88+
valueFrom:
89+
secretKeyRef:
90+
name: ${{ defaults.app_name }}-mysql-conn-credential
91+
key: password
92+
- name: MYSQL_HOST
93+
valueFrom:
94+
secretKeyRef:
95+
name: ${{ defaults.app_name }}-mysql-conn-credential
96+
key: host
97+
- name: NEXTCLOUD_DATA_DIR
98+
value: /var/www/html/data
99+
resources:
100+
requests:
101+
cpu: 100m
102+
memory: 102Mi
103+
limits:
104+
cpu: 1000m
105+
memory: 1024Mi
106+
command: []
107+
args: []
108+
ports:
109+
- containerPort: 80
110+
imagePullPolicy: Always
111+
volumeMounts:
112+
- name: vn-rootvn-vn-nextcloud
113+
mountPath: /var/www/html
114+
volumes: []
115+
volumeClaimTemplates:
116+
- metadata:
117+
annotations:
118+
path: /var/www/html
119+
value: '1'
120+
name: vn-rootvn-vn-nextcloud
121+
spec:
122+
accessModes:
123+
- ReadWriteOnce
124+
resources:
125+
requests:
126+
storage: 1Gi
127+
128+
---
129+
apiVersion: v1
130+
kind: Service
131+
metadata:
132+
name: ${{ defaults.app_name }}
133+
labels:
134+
cloud.sealos.io/app-deploy-manager: ${{ defaults.app_name }}
135+
spec:
136+
ports:
137+
- port: 80
138+
selector:
139+
app: ${{ defaults.app_name }}
140+
141+
---
142+
apiVersion: networking.k8s.io/v1
143+
kind: Ingress
144+
metadata:
145+
name: ${{ defaults.app_name }}
146+
labels:
147+
cloud.sealos.io/app-deploy-manager: ${{ defaults.app_name }}
148+
cloud.sealos.io/app-deploy-manager-domain: ${{ defaults.app_host }}
149+
annotations:
150+
kubernetes.io/ingress.class: nginx
151+
nginx.ingress.kubernetes.io/proxy-body-size: 32m
152+
nginx.ingress.kubernetes.io/server-snippet: |
153+
client_header_buffer_size 64k;
154+
large_client_header_buffers 4 128k;
155+
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
156+
nginx.ingress.kubernetes.io/backend-protocol: HTTP
157+
nginx.ingress.kubernetes.io/rewrite-target: /$2
158+
nginx.ingress.kubernetes.io/client-body-buffer-size: 64k
159+
nginx.ingress.kubernetes.io/proxy-buffer-size: 64k
160+
nginx.ingress.kubernetes.io/configuration-snippet: |
161+
if ($request_uri ~* \.(js|css|gif|jpe?g|png)) {
162+
expires 30d;
163+
add_header Cache-Control "public";
164+
}
165+
spec:
166+
rules:
167+
- host: ${{ defaults.app_host }}.${{ SEALOS_CLOUD_DOMAIN }}
168+
http:
169+
paths:
170+
- pathType: Prefix
171+
path: /()(.*)
172+
backend:
173+
service:
174+
name: ${{ defaults.app_name }}
175+
port:
176+
number: 80
177+
tls:
178+
- hosts:
179+
- ${{ defaults.app_host }}.${{ SEALOS_CLOUD_DOMAIN }}
180+
secretName: ${{ SEALOS_CERT_SECRET_NAME }}
181+
182+
---
183+
apiVersion: apps.kubeblocks.io/v1alpha1
184+
kind: Cluster
185+
metadata:
186+
finalizers:
187+
- cluster.kubeblocks.io/finalizer
188+
labels:
189+
clusterdefinition.kubeblocks.io/name: apecloud-mysql
190+
clusterversion.kubeblocks.io/name: ac-mysql-8.0.30
191+
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql
192+
annotations: {}
193+
name: ${{ defaults.app_name }}-mysql
194+
spec:
195+
affinity:
196+
nodeLabels: {}
197+
podAntiAffinity: Preferred
198+
tenancy: SharedNode
199+
topologyKeys: []
200+
clusterDefinitionRef: apecloud-mysql
201+
clusterVersionRef: ac-mysql-8.0.30
202+
componentSpecs:
203+
- componentDefRef: mysql
204+
monitor: true
205+
name: mysql
206+
replicas: 1
207+
resources:
208+
limits:
209+
cpu: 1000m
210+
memory: 1024Mi
211+
requests:
212+
cpu: 100m
213+
memory: 102Mi
214+
serviceAccountName: ${{ defaults.app_name }}-mysql
215+
volumeClaimTemplates:
216+
- name: data
217+
spec:
218+
accessModes:
219+
- ReadWriteOnce
220+
resources:
221+
requests:
222+
storage: 1Gi
223+
storageClassName: openebs-backup
224+
terminationPolicy: Delete
225+
tolerations: []
226+
---
227+
apiVersion: v1
228+
kind: ServiceAccount
229+
metadata:
230+
labels:
231+
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql
232+
app.kubernetes.io/instance: ${{ defaults.app_name }}-mysql
233+
app.kubernetes.io/managed-by: kbcli
234+
name: ${{ defaults.app_name }}-mysql
235+
236+
---
237+
apiVersion: rbac.authorization.k8s.io/v1
238+
kind: Role
239+
metadata:
240+
labels:
241+
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql
242+
app.kubernetes.io/instance: ${{ defaults.app_name }}-mysql
243+
app.kubernetes.io/managed-by: kbcli
244+
name: ${{ defaults.app_name }}-mysql
245+
rules:
246+
- apiGroups:
247+
- ''
248+
resources:
249+
- events
250+
verbs:
251+
- create
252+
253+
---
254+
apiVersion: rbac.authorization.k8s.io/v1
255+
kind: RoleBinding
256+
metadata:
257+
labels:
258+
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql
259+
app.kubernetes.io/instance: ${{ defaults.app_name }}-mysql
260+
app.kubernetes.io/managed-by: kbcli
261+
name: ${{ defaults.app_name }}-mysql
262+
roleRef:
263+
apiGroup: rbac.authorization.k8s.io
264+
kind: Role
265+
name: ${{ defaults.app_name }}-mysql
266+
subjects:
267+
- kind: ServiceAccount
268+
name: ${{ defaults.app_name }}-mysql
269+
namespace: ${{ SEALOS_NAMESPACE }}

0 commit comments

Comments
 (0)