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