-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
269 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,269 @@ | ||
apiVersion: app.sealos.io/v1 | ||
kind: Template | ||
metadata: | ||
name: nextcloud | ||
spec: | ||
title: Nextcloud | ||
description: Nextcloud is an open-source forum software. | ||
url: 'https://nextcloud.com/' | ||
gitRepo: 'https://github.com/nextcloud/docker' | ||
author: 'sealos' | ||
readme: 'https://raw.githubusercontent.com/nextcloud/docker/master/README.md' | ||
icon: 'https://avatars.githubusercontent.com/u/19211038?s=48&v=4' | ||
templateType: inline | ||
defaults: | ||
app_host: | ||
type: string | ||
value: ${{ random(8) }} | ||
app_name: | ||
type: string | ||
value: nextcloud-${{ random(8) }} | ||
--- | ||
apiVersion: apps/v1 | ||
kind: StatefulSet | ||
metadata: | ||
name: ${{ defaults.app_name }} | ||
annotations: | ||
originImageName: nextcloud | ||
deploy.cloud.sealos.io/minReplicas: '1' | ||
deploy.cloud.sealos.io/maxReplicas: '1' | ||
labels: | ||
cloud.sealos.io/app-deploy-manager: ${{ defaults.app_name }} | ||
app: ${{ defaults.app_name }} | ||
spec: | ||
replicas: 1 | ||
revisionHistoryLimit: 1 | ||
minReadySeconds: 10 | ||
serviceName: ${{ defaults.app_name }} | ||
selector: | ||
matchLabels: | ||
app: ${{ defaults.app_name }} | ||
template: | ||
metadata: | ||
labels: | ||
app: ${{ defaults.app_name }} | ||
spec: | ||
terminationGracePeriodSeconds: 10 | ||
initContainers: | ||
- name: init-mysql | ||
image: mysql:5.7 | ||
command: | ||
- bash | ||
- "-c" | ||
- | | ||
mysql --host=$DB_HOST --user=$DB_USER --password=$DB_PASSWORD --port=$DB_PORT -e 'CREATE DATABASE IF NOT EXISTS nextcloud' | ||
env: | ||
- name: DB_HOST | ||
valueFrom: | ||
secretKeyRef: | ||
name: ${{ defaults.app_name }}-mysql-conn-credential | ||
key: host | ||
- name: DB_USER | ||
valueFrom: | ||
secretKeyRef: | ||
name: ${{ defaults.app_name }}-mysql-conn-credential | ||
key: username | ||
- name: DB_PASSWORD | ||
valueFrom: | ||
secretKeyRef: | ||
name: ${{ defaults.app_name }}-mysql-conn-credential | ||
key: password | ||
- name: DB_PORT | ||
valueFrom: | ||
secretKeyRef: | ||
name: ${{ defaults.app_name }}-mysql-conn-credential | ||
key: port | ||
containers: | ||
- name: ${{ defaults.app_name }} | ||
image: nextcloud | ||
env: | ||
- name: MYSQL_DATABASE | ||
value: nextcloud | ||
- name: MYSQL_USER | ||
valueFrom: | ||
secretKeyRef: | ||
name: ${{ defaults.app_name }}-mysql-conn-credential | ||
key: username | ||
- name: MYSQL_PASSWORD | ||
valueFrom: | ||
secretKeyRef: | ||
name: ${{ defaults.app_name }}-mysql-conn-credential | ||
key: password | ||
- name: MYSQL_HOST | ||
valueFrom: | ||
secretKeyRef: | ||
name: ${{ defaults.app_name }}-mysql-conn-credential | ||
key: host | ||
- name: NEXTCLOUD_DATA_DIR | ||
value: /var/www/html/data | ||
resources: | ||
requests: | ||
cpu: 100m | ||
memory: 102Mi | ||
limits: | ||
cpu: 1000m | ||
memory: 1024Mi | ||
command: [] | ||
args: [] | ||
ports: | ||
- containerPort: 80 | ||
imagePullPolicy: Always | ||
volumeMounts: | ||
- name: vn-rootvn-vn-nextcloud | ||
mountPath: /var/www/html | ||
volumes: [] | ||
volumeClaimTemplates: | ||
- metadata: | ||
annotations: | ||
path: /var/www/html | ||
value: '1' | ||
name: vn-rootvn-vn-nextcloud | ||
spec: | ||
accessModes: | ||
- ReadWriteOnce | ||
resources: | ||
requests: | ||
storage: 1Gi | ||
|
||
--- | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
name: ${{ defaults.app_name }} | ||
labels: | ||
cloud.sealos.io/app-deploy-manager: ${{ defaults.app_name }} | ||
spec: | ||
ports: | ||
- port: 80 | ||
selector: | ||
app: ${{ defaults.app_name }} | ||
|
||
--- | ||
apiVersion: networking.k8s.io/v1 | ||
kind: Ingress | ||
metadata: | ||
name: ${{ defaults.app_name }} | ||
labels: | ||
cloud.sealos.io/app-deploy-manager: ${{ defaults.app_name }} | ||
cloud.sealos.io/app-deploy-manager-domain: ${{ defaults.app_host }} | ||
annotations: | ||
kubernetes.io/ingress.class: nginx | ||
nginx.ingress.kubernetes.io/proxy-body-size: 32m | ||
nginx.ingress.kubernetes.io/server-snippet: | | ||
client_header_buffer_size 64k; | ||
large_client_header_buffers 4 128k; | ||
nginx.ingress.kubernetes.io/ssl-redirect: 'false' | ||
nginx.ingress.kubernetes.io/backend-protocol: HTTP | ||
nginx.ingress.kubernetes.io/rewrite-target: /$2 | ||
nginx.ingress.kubernetes.io/client-body-buffer-size: 64k | ||
nginx.ingress.kubernetes.io/proxy-buffer-size: 64k | ||
nginx.ingress.kubernetes.io/configuration-snippet: | | ||
if ($request_uri ~* \.(js|css|gif|jpe?g|png)) { | ||
expires 30d; | ||
add_header Cache-Control "public"; | ||
} | ||
spec: | ||
rules: | ||
- host: ${{ defaults.app_host }}.${{ SEALOS_CLOUD_DOMAIN }} | ||
http: | ||
paths: | ||
- pathType: Prefix | ||
path: /()(.*) | ||
backend: | ||
service: | ||
name: ${{ defaults.app_name }} | ||
port: | ||
number: 80 | ||
tls: | ||
- hosts: | ||
- ${{ defaults.app_host }}.${{ SEALOS_CLOUD_DOMAIN }} | ||
secretName: ${{ SEALOS_CERT_SECRET_NAME }} | ||
|
||
--- | ||
apiVersion: apps.kubeblocks.io/v1alpha1 | ||
kind: Cluster | ||
metadata: | ||
finalizers: | ||
- cluster.kubeblocks.io/finalizer | ||
labels: | ||
clusterdefinition.kubeblocks.io/name: apecloud-mysql | ||
clusterversion.kubeblocks.io/name: ac-mysql-8.0.30 | ||
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql | ||
annotations: {} | ||
name: ${{ defaults.app_name }}-mysql | ||
spec: | ||
affinity: | ||
nodeLabels: {} | ||
podAntiAffinity: Preferred | ||
tenancy: SharedNode | ||
topologyKeys: [] | ||
clusterDefinitionRef: apecloud-mysql | ||
clusterVersionRef: ac-mysql-8.0.30 | ||
componentSpecs: | ||
- componentDefRef: mysql | ||
monitor: true | ||
name: mysql | ||
replicas: 1 | ||
resources: | ||
limits: | ||
cpu: 1000m | ||
memory: 1024Mi | ||
requests: | ||
cpu: 100m | ||
memory: 102Mi | ||
serviceAccountName: ${{ defaults.app_name }}-mysql | ||
volumeClaimTemplates: | ||
- name: data | ||
spec: | ||
accessModes: | ||
- ReadWriteOnce | ||
resources: | ||
requests: | ||
storage: 1Gi | ||
storageClassName: openebs-backup | ||
terminationPolicy: Delete | ||
tolerations: [] | ||
--- | ||
apiVersion: v1 | ||
kind: ServiceAccount | ||
metadata: | ||
labels: | ||
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql | ||
app.kubernetes.io/instance: ${{ defaults.app_name }}-mysql | ||
app.kubernetes.io/managed-by: kbcli | ||
name: ${{ defaults.app_name }}-mysql | ||
|
||
--- | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: Role | ||
metadata: | ||
labels: | ||
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql | ||
app.kubernetes.io/instance: ${{ defaults.app_name }}-mysql | ||
app.kubernetes.io/managed-by: kbcli | ||
name: ${{ defaults.app_name }}-mysql | ||
rules: | ||
- apiGroups: | ||
- '' | ||
resources: | ||
- events | ||
verbs: | ||
- create | ||
|
||
--- | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: RoleBinding | ||
metadata: | ||
labels: | ||
sealos-db-provider-cr: ${{ defaults.app_name }}-mysql | ||
app.kubernetes.io/instance: ${{ defaults.app_name }}-mysql | ||
app.kubernetes.io/managed-by: kbcli | ||
name: ${{ defaults.app_name }}-mysql | ||
roleRef: | ||
apiGroup: rbac.authorization.k8s.io | ||
kind: Role | ||
name: ${{ defaults.app_name }}-mysql | ||
subjects: | ||
- kind: ServiceAccount | ||
name: ${{ defaults.app_name }}-mysql | ||
namespace: ${{ SEALOS_NAMESPACE }} |