Skip to content

Commit 518cdc0

Browse files
author
Your Name
committed
Add opencloud-full chart
1 parent 9e74a10 commit 518cdc0

File tree

211 files changed

+31580
-45
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

211 files changed

+31580
-45
lines changed

README.md

Lines changed: 111 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ The current maintainers and reviewers are listed in [MAINTAINERS.md](./MAINTAINE
6565

6666
## Prerequisites
6767

68-
- Kubernetes 1.19+
69-
- Helm 3.2.0+
70-
- PV provisioner support in the underlying infrastructure (if persistence is enabled)
68+
- Kubernetes 1.19+ (e.g. Talos Kubernetes, RKE2)
69+
- Helm 3.2.0+ or Timoni Bundle (flux-helm-release)
70+
- PVC provisioner support in the underlying infrastructure (if persistence is enabled)
7171
- External ingress controller (e.g., Cilium Gateway API) for routing traffic to the services
7272

7373
## ⚠️ Version Stability Notice
@@ -84,6 +84,19 @@ We recommend pinning to specific chart versions and thoroughly testing updates b
8484

8585
This repository contains the following charts:
8686

87+
### Full Chart (`charts/opencloud-full`)
88+
89+
The complete OpenCloud deployment with all components for production use:
90+
91+
- Full microservices architecture
92+
- Keycloak for authentication
93+
- MinIO for object storage
94+
- Document editing with Collabora and/or OnlyOffice
95+
- Full Gateway API integration
96+
- LDAP, Antivirus and more
97+
98+
[View Full Chart Documentation](./charts/opencloud-full/README.md)
99+
87100
### Production Chart (`charts/opencloud`)
88101

89102
The complete OpenCloud deployment with all components for production use:
@@ -115,17 +128,31 @@ You can install the Helm charts either directly from this Git repository or from
115128
```bash
116129
# Clone the repository
117130
git clone https://github.com/opencloud-eu/helm.git
118-
cd helm
119131

132+
# Install Full Chart
133+
cd charts/opencloud-full/deployments
134+
helmfile sync
135+
```
136+
You can also install it with timoni instead of helm:
137+
```bash
138+
kubectl apply -f ./charts/opencloud-full/deployment/timoni/ && \
139+
timoni bundle apply -f ./charts/opencloud-full/deployment/timoni/opencloud.cue --runtime ./charts/opencloud-full/deployment/timoni/runtime.cue
140+
```
141+
142+
```bash
120143
# Install Production Chart
144+
cd helm
121145
helm install opencloud ./charts/opencloud \
122146
--namespace opencloud \
123147
--create-namespace \
124148
--set httpRoute.enabled=true \
125149
--set httpRoute.gateway.name=opencloud-gateway \
126150
--set httpRoute.gateway.namespace=kube-system
127151

152+
153+
128154
# Or install Development Chart
155+
cd helm
129156
helm install opencloud ./charts/opencloud-dev \
130157
--namespace opencloud \
131158
--create-namespace
@@ -135,6 +162,17 @@ helm install opencloud ./charts/opencloud-dev \
135162

136163
The charts are also available in the GitHub Container Registry (GHCR) as OCI artifacts:
137164

165+
```bash
166+
cd charts/opencloud-full/deployments
167+
helmfile sync
168+
169+
```
170+
You can also install it with timoni instead of helm:
171+
```bash
172+
kubectl apply -f ./charts/opencloud-full/deployment/timoni/ && \
173+
timoni bundle apply -f ./charts/opencloud-full/deployment/timoni/opencloud.cue --runtime ./charts/opencloud-full/deployment/timoni/runtime.cue
174+
```
175+
138176
```bash
139177
# Install Production Chart
140178
helm install opencloud oci://ghcr.io/opencloud-eu/helm-charts/opencloud \
@@ -193,6 +231,8 @@ graph TD
193231
194232
OpenCloud -->|Authentication| Keycloak
195233
OpenCloud -->|File Storage| MinIO
234+
OpenCloud -->|Messaging| NATS[NATS]
235+
OpenCloud -->|User/Group Management| OpenLDAP[OpenLDAP]
196236
197237
Collabora -->|WOPI Protocol| Collaboration
198238
OnlyOffice -->|WOPI Protocol| Collaboration
@@ -207,13 +247,19 @@ graph TD
207247
OnlyOffice -->|Message Queue| RabbitMQ[RabbitMQ]
208248
end
209249
250+
Keycloak -->|User Federation| OpenLDAP
251+
210252
classDef pod fill:#f9f,stroke:#333,stroke-width:2px;
211253
classDef gateway fill:#bbf,stroke:#333,stroke-width:2px;
212254
classDef user fill:#bfb,stroke:#333,stroke-width:2px;
213255
classDef db fill:#dfd,stroke:#333,stroke-width:2px;
214-
256+
classDef mq fill:#ffd,stroke:#333,stroke-width:2px;
257+
classDef ldap fill:#cff,stroke:#333,stroke-width:2px;
258+
215259
class OpenCloud,Collabora,OnlyOffice,Collaboration,Keycloak,MinIO pod;
216-
class PostgreSQL,Redis,RabbitMQ db;
260+
class PostgreSQL,Redis db;
261+
class RabbitMQ,NATS mq;
262+
class OpenLDAP ldap;
217263
class Gateway gateway;
218264
class User user;
219265
```
@@ -397,6 +443,36 @@ This ensures the `X-Forwarded-Proto: https` header is added as required by OnlyO
397443
| `collaboration.wopiDomain` | WOPI server domain | `collaboration.opencloud.test` |
398444
| `collaboration.resources` | CPU/Memory resource requests/limits | `{}` |
399445

446+
447+
### LDAP Settings
448+
449+
450+
451+
| Parameter | Description | Default |
452+
453+
| --------- | ----------- | ------- |
454+
455+
| `ldap.enabled` | Enable LDAP integration | `false` |
456+
457+
| `ldap.host` | LDAP server hostname or IP | `""` |
458+
459+
| `ldap.port` | LDAP server port | `389` |
460+
461+
| `ldap.useTLS` | Use TLS for LDAP connection | `false` |
462+
463+
| `ldap.bindDN` | Bind DN for LDAP authentication | `""` |
464+
465+
| `ldap.bindPassword` | Bind password for LDAP authentication | `""` |
466+
467+
| `ldap.userSearchBase` | Base DN for user searches | `""` |
468+
469+
| `ldap.userSearchFilter` | Filter for user searches | `(objectClass=person)` |
470+
471+
| `ldap.groupSearchBase` | Base DN for group searches | `""` |
472+
473+
| `ldap.groupSearchFilter` | Filter for group searches | `(objectClass=groupOfNames)` |
474+
475+
400476
## Gateway API Configuration
401477

402478
The production chart includes HTTPRoute resources that can be used to expose the OpenCloud, Keycloak, and MinIO services externally. The HTTPRoutes are configured to route traffic to the respective services.
@@ -450,25 +526,26 @@ Or via command line:
450526
--set opencloud.proxy.basicAuth.enabled=true
451527
```
452528

529+
453530
#### Improved Namespace Handling
454531

455532
The chart now automatically uses the correct namespace across all resources, eliminating the need to manually set the namespace in multiple places.
456533

457534
The following HTTPRoutes are created when `httpRoute.enabled` is set to `true`:
458535

459-
1. **OpenCloud HTTPRoute**:
536+
1. **OpenCloud Proxy HTTPRoute (`oc-proxy-https`)**:
460537
- Hostname: `global.domain.opencloud`
461538
- Service: `{{ release-name }}-opencloud`
462539
- Port: 9200
463540
- Headers: Removes Permissions-Policy header to prevent browser console errors
464541

465-
2. **Keycloak HTTPRoute** (when `keycloak.enabled` is `true`):
542+
2. **Keycloak HTTPRoute (`oc-keycloak-https`)** (when `keycloak.enabled` is `true`):
466543
- Hostname: `global.domain.keycloak`
467544
- Service: `{{ release-name }}-keycloak`
468545
- Port: 8080
469546
- Headers: Adds Permissions-Policy header to prevent browser features like interest-based advertising
470547

471-
3. **MinIO HTTPRoute** (when `opencloud.storage.s3.internal.enabled` is `true`):
548+
3. **MinIO HTTPRoute (`oc-minio-https`)** (when `opencloud.storage.s3.internal.enabled` is `true`):
472549
- Hostname: `global.domain.minio`
473550
- Service: `{{ release-name }}-minio`
474551
- Port: 9001
@@ -477,27 +554,33 @@ The following HTTPRoutes are created when `httpRoute.enabled` is set to `true`:
477554
default user: opencloud
478555
pass: opencloud-secret-key
479556

480-
4. **OnlyOffice HTTPRoute** (when `onlyoffice.enabled` is `true`):
557+
4. **MinIO Console HTTPRoute (`oc-minio-console-https`)** (when `opencloud.storage.s3.internal.enabled` is `true`):
558+
- Hostname: `console.minio.opencloud.test` (or `global.domain.minioConsole` if defined)
559+
- Service: `{{ release-name }}-minio`
560+
- Port: 9001
561+
- Headers: Adds Permissions-Policy header to prevent browser features like interest-based advertising
562+
563+
5. **OnlyOffice HTTPRoute (`oc-onlyoffice-https`)** (when `onlyoffice.enabled` is `true`):
481564
- Hostname: `global.domain.onlyoffice`
482565
- Service: `{{ release-name }}-onlyoffice`
483-
- Port: 80
566+
- Port: 443 (or 80 if using HTTP)
484567
- Path: "/"
485568
- This route is used to access the OnlyOffice Document Server for collaborative editing
486569

487-
5. **WOPI HTTPRoute** (when `onlyoffice.collaboration.enabled` and `onlyoffice.enabled` are `true`):
488-
- Hostname: `global.domain.wopi`
570+
6. **WOPI HTTPRoute (`oc-wopi-https`)** (when `onlyoffice.collaboration.enabled` and `onlyoffice.enabled` are `true`):
571+
- Hostname: `global.domain.wopi` (or `collaboration.wopiDomain`)
489572
- Service: `{{ release-name }}-collaboration`
490573
- Port: 9300
491574
- Path: "/"
492575
- This route is used for the WOPI protocol communication between OnlyOffice and the collaboration service
493576

494-
6. **Collabora HTTPRoute** (when `collabora.enabled` is `true`):
577+
7. **Collabora HTTPRoute** (when `collabora.enabled` is `true`):
495578
- Hostname: `global.domain.collabora`
496579
- Service: `{{ release-name }}-collabora`
497580
- Port: 9980
498581
- Headers: Adds Permissions-Policy header to prevent browser features like interest-based advertising
499582

500-
7. **Collaboration (WOPI) HTTPRoute** (when `collaboration.enabled` is `true`):
583+
8. **Collaboration (WOPI) HTTPRoute** (when `collaboration.enabled` is `true`):
501584
- Hostname: `collaboration.wopiDomain`
502585
- Service: `{{ release-name }}-collaboration`
503586
- Port: 9300
@@ -621,7 +704,7 @@ spec:
621704
- type: IPAddress
622705
value: 192.168.178.77 # Replace with your desired IP
623706
listeners:
624-
- name: opencloud-https
707+
- name: oc-proxy-https
625708
protocol: HTTPS
626709
port: 443
627710
hostname: "cloud.opencloud.test"
@@ -633,19 +716,7 @@ spec:
633716
allowedRoutes:
634717
namespaces:
635718
from: All
636-
- name: keycloak-https
637-
protocol: HTTPS
638-
port: 443
639-
hostname: "keycloak.opencloud.test"
640-
tls:
641-
mode: Terminate
642-
certificateRefs:
643-
- name: opencloud-wildcard-tls
644-
namespace: kube-system
645-
allowedRoutes:
646-
namespaces:
647-
from: All
648-
- name: minio-https
719+
- name: oc-minio-https
649720
protocol: HTTPS
650721
port: 443
651722
hostname: "minio.opencloud.test"
@@ -657,10 +728,10 @@ spec:
657728
allowedRoutes:
658729
namespaces:
659730
from: All
660-
- name: onlyoffice-https
731+
- name: oc-minio-console-https
661732
protocol: HTTPS
662733
port: 443
663-
hostname: "onlyoffice.opencloud.test"
734+
hostname: "console.minio.opencloud.test"
664735
tls:
665736
mode: Terminate
666737
certificateRefs:
@@ -669,10 +740,10 @@ spec:
669740
allowedRoutes:
670741
namespaces:
671742
from: All
672-
- name: collabora-https
743+
- name: oc-keycloak-https
673744
protocol: HTTPS
674745
port: 443
675-
hostname: "collabora.opencloud.test"
746+
hostname: "keycloak.opencloud.test"
676747
tls:
677748
mode: Terminate
678749
certificateRefs:
@@ -681,10 +752,10 @@ spec:
681752
allowedRoutes:
682753
namespaces:
683754
from: All
684-
- name: collaboration-https
755+
- name: oc-wopi-https
685756
protocol: HTTPS
686757
port: 443
687-
hostname: "collaboration.opencloud.test"
758+
hostname: "wopiserver.opencloud.test"
688759
tls:
689760
mode: Terminate
690761
certificateRefs:
@@ -693,10 +764,10 @@ spec:
693764
allowedRoutes:
694765
namespaces:
695766
from: All
696-
- name: wopi-https
767+
- name: oc-onlyoffice-https
697768
protocol: HTTPS
698769
port: 443
699-
hostname: "wopiserver.opencloud.test"
770+
hostname: "onlyoffice.opencloud.test"
700771
tls:
701772
mode: Terminate
702773
certificateRefs:
@@ -735,20 +806,15 @@ Alternatively, for local testing, you can add entries to your `/etc/hosts` file:
735806

736807
### Step 7: Install OpenCloud
737808

738-
Finally, install OpenCloud using Helm:
809+
Finally, install OpenCloud using Helmfile:
739810

740811
```bash
741812
# Clone the repository
742813
git clone https://github.com/opencloud-eu/helm.git opencloud-helm
743-
cd opencloud-helm
814+
cd charts/opencloud-full/deployments
744815

745816
# Install OpenCloud
746-
helm install opencloud ./charts/opencloud \
747-
--namespace opencloud \
748-
--create-namespace \
749-
--set httpRoute.enabled=true \
750-
--set httpRoute.gateway.name=opencloud-gateway \
751-
--set httpRoute.gateway.namespace=kube-system
817+
helmfile sync
752818
```
753819

754820
### Troubleshooting

charts/opencloud-full/.helmignore

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*~
18+
# Various IDEs
19+
.vscode
20+
.project
21+
.idea/
22+
*.tmproj
23+
OWNERS
24+
# markdown
25+
*.md

charts/opencloud-full/Chart.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: v2
2+
name: opencloud-full
3+
description: openCloud Helm chart
4+
keywords:
5+
- opencloud
6+
- oc
7+
maintainers:
8+
- name: OpenCloud EU
9+
10+
url: https://opencloud.eu
11+
type: application
12+
version: 0.2.9
13+
# renovate: datasource=docker depName=opencloudeu/opencloud-rolling
14+
appVersion: latest
15+
kubeVersion: ""
16+
sources:
17+
- https://github.com/opencloud-eu/opencloud
18+
- https://github.com/owncloud/ocis
19+
- https://github.com/cs3org/reva

charts/opencloud-full/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
[comment]: # (DONT EDIT THIS FILE, it is autogenerated. Instead you need to edit README.md.gotmpl)
3+
4+
# openCloud (OC) Helm chart
5+
![Version: 0.7.0](https://img.shields.io/badge/Version-0.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 7.1.2](https://img.shields.io/badge/AppVersion-7.1.2-informational?style=flat-square)
6+
7+
Installs [openCloud ](https://doc.opencloud.com/opencloud/next/).
8+
9+
The documentation for this Helm Chart can be found on [doc.opencloud.com](https://doc.opencloud.com/opencloud/next/deployment/container/orchestration/orchestration.html).

0 commit comments

Comments
 (0)