使用本 Chart 可以快速将 Nextcloud[链接]部署到 Kubernetes 集群中。
NextCloud 是一个功能强大的文件共享服务器。一般情况下不会在同一个命名空间下部署多套服务。因此在制作本 Chart 包时,不支持在同一个命名空间里部署多个 Nextcloud 实例。
本部署包遵循以下部署规范:
HPA 时,多个实例会尽量分散部署到不同的节点上,以保证应用的可用性。node.kubernetes.io/namespace=<namespace>)上,保证各环境(生产环境、预发布环境等)节点隔离。startupProbe)与存活探针(livenessProbe),保证应用一直处于可用状态。maintenance)属性值为 true 时,即进入维护状态。当进入维护状态时,HPA 将会失效,所有的 Deployment 和 StatefulSet 的 replicas 将被设置 0。Nextcloud 内置了一个 MySql 数据库,你也可以选择使用外置数据库。选择外置数据库时,需要提前在 Kubernetes 集群中或在外部独立部署数据库。
如果想要快速部署测试环境,可以使用 Helm 在 Kubernetes 快速搭建个 MySql 数据库[链接]。
Nextcloud 支持使用 Redis 作为缓存数据库,提升应用访问性能。
如果想要快速部署测试环境,可以使用 Helm 在 Kubernetes 快速搭建个 Redis 数据库[链接]。
创建配置文件 nextcloud.yaml,将 values.yaml 中的内容复制到该文件中。删除其余无用的配置,保留需要修改的内容,如下:
# 应用配置
config:
# MySql 配置
mysql:
host: mysql
username: root
password: <mysql-password>
database: nextcloud
# Redis 配置
redis:
host: redis
port: 6379
password: <redis-password>
# 邮箱配置
smtp:
host: smtp.exmail.qq.com
port: 465
secure: ssl
name: [email protected]
password: <smtp-password>
fromAddress: NextCloud
domain: central-x.com
# 内存配置
php:
memoryLimit: 4096M
uploadLimit: 4096M
# 代理配置
proxy:
trustedDomains:
- nextcloud.central-x.com
- nextcloud.prod.cluster.k8s
trustedProxies:
- 10.10.0.1/16
overwrite:
host: nextcloud.central-x.com
protocol: https
使用 helm 执行以下命令,完成部署:
# 使用 nextcloud.yaml 指定的参数部署
$ helm install <release-name> oci://registry-1.docker.io/centralx/helm-nextcloud -f nextcloud.yaml
Chart 包在完成部署操作后,会创建一个监听域名 nextcloud.<namespace>.cluster.k8s 的 Ingress 资源,该 Ingress 会将所有请求转发到网关。运维人员需要自行在外部通过 Nginx 等方式将请求转发到集群内部,如:
# 集群 Ingress 流量入口
upstream ingress {
server ingress1.cluster.k8s;
server ingress2.cluster.k8s;
}
# 端口监听
server {
listen 8001;
location / {
proxy_pass http://ingress;
proxy_redirect default;
client_max_body_size 1000m;
# 传递代理信息
proxy_set_header Host nextcloud.<namespace>.cluster.k8s;
proxy_set_header X-Real-IP $remote_addr; # 用户真实 IP
proxy_set_header X-Forwarded-Host $http_host; # 用户访问服务器的真实域名
proxy_set_header X-Forwarded-Port $server_port; # 用户访问服务器的真实端口
proxy_set_header X-Forwarded-Proto $scheme; # 用户访问服务器的真实协议
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 反向代理路径
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
Content type
Helm
Digest
sha256:503bbed68…
Size
4.8 kB
Last updated
over 2 years ago
helm pull oci://registry-1.docker.io/centralx/helm-nextcloud --version 27.0.2