@@ -65,9 +65,9 @@ The current maintainers and reviewers are listed in [MAINTAINERS.md](./MAINTAINE
65
65
66
66
## Prerequisites
67
67
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)
71
71
- External ingress controller (e.g., Cilium Gateway API) for routing traffic to the services
72
72
73
73
## ⚠️ Version Stability Notice
@@ -84,6 +84,19 @@ We recommend pinning to specific chart versions and thoroughly testing updates b
84
84
85
85
This repository contains the following charts:
86
86
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
+
87
100
### Production Chart (` charts/opencloud ` )
88
101
89
102
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
115
128
``` bash
116
129
# Clone the repository
117
130
git clone https://github.com/opencloud-eu/helm.git
118
- cd helm
119
131
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
120
143
# Install Production Chart
144
+ cd helm
121
145
helm install opencloud ./charts/opencloud \
122
146
--namespace opencloud \
123
147
--create-namespace \
124
148
--set httpRoute.enabled=true \
125
149
--set httpRoute.gateway.name=opencloud-gateway \
126
150
--set httpRoute.gateway.namespace=kube-system
127
151
152
+
153
+
128
154
# Or install Development Chart
155
+ cd helm
129
156
helm install opencloud ./charts/opencloud-dev \
130
157
--namespace opencloud \
131
158
--create-namespace
@@ -135,6 +162,17 @@ helm install opencloud ./charts/opencloud-dev \
135
162
136
163
The charts are also available in the GitHub Container Registry (GHCR) as OCI artifacts:
137
164
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
+
138
176
``` bash
139
177
# Install Production Chart
140
178
helm install opencloud oci://ghcr.io/opencloud-eu/helm-charts/opencloud \
@@ -193,6 +231,8 @@ graph TD
193
231
194
232
OpenCloud -->|Authentication| Keycloak
195
233
OpenCloud -->|File Storage| MinIO
234
+ OpenCloud -->|Messaging| NATS[NATS]
235
+ OpenCloud -->|User/Group Management| OpenLDAP[OpenLDAP]
196
236
197
237
Collabora -->|WOPI Protocol| Collaboration
198
238
OnlyOffice -->|WOPI Protocol| Collaboration
@@ -207,13 +247,19 @@ graph TD
207
247
OnlyOffice -->|Message Queue| RabbitMQ[RabbitMQ]
208
248
end
209
249
250
+ Keycloak -->|User Federation| OpenLDAP
251
+
210
252
classDef pod fill:#f9f,stroke:#333,stroke-width:2px;
211
253
classDef gateway fill:#bbf,stroke:#333,stroke-width:2px;
212
254
classDef user fill:#bfb,stroke:#333,stroke-width:2px;
213
255
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
+
215
259
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;
217
263
class Gateway gateway;
218
264
class User user;
219
265
```
@@ -397,6 +443,36 @@ This ensures the `X-Forwarded-Proto: https` header is added as required by OnlyO
397
443
| ` collaboration.wopiDomain ` | WOPI server domain | ` collaboration.opencloud.test ` |
398
444
| ` collaboration.resources ` | CPU/Memory resource requests/limits | ` {} ` |
399
445
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
+
400
476
## Gateway API Configuration
401
477
402
478
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:
450
526
--set opencloud.proxy.basicAuth.enabled=true
451
527
```
452
528
529
+
453
530
#### Improved Namespace Handling
454
531
455
532
The chart now automatically uses the correct namespace across all resources, eliminating the need to manually set the namespace in multiple places.
456
533
457
534
The following HTTPRoutes are created when ` httpRoute.enabled ` is set to ` true ` :
458
535
459
- 1 . ** OpenCloud HTTPRoute** :
536
+ 1 . ** OpenCloud Proxy HTTPRoute ( ` oc-proxy-https ` ) ** :
460
537
- Hostname: ` global.domain.opencloud `
461
538
- Service: ` {{ release-name }}-opencloud `
462
539
- Port: 9200
463
540
- Headers: Removes Permissions-Policy header to prevent browser console errors
464
541
465
- 2 . ** Keycloak HTTPRoute** (when ` keycloak.enabled ` is ` true ` ):
542
+ 2 . ** Keycloak HTTPRoute ( ` oc-keycloak-https ` ) ** (when ` keycloak.enabled ` is ` true ` ):
466
543
- Hostname: ` global.domain.keycloak `
467
544
- Service: ` {{ release-name }}-keycloak `
468
545
- Port: 8080
469
546
- Headers: Adds Permissions-Policy header to prevent browser features like interest-based advertising
470
547
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 ` ):
472
549
- Hostname: ` global.domain.minio `
473
550
- Service: ` {{ release-name }}-minio `
474
551
- Port: 9001
@@ -477,27 +554,33 @@ The following HTTPRoutes are created when `httpRoute.enabled` is set to `true`:
477
554
default user: opencloud
478
555
pass: opencloud-secret-key
479
556
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 ` ):
481
564
- Hostname: ` global.domain.onlyoffice `
482
565
- Service: ` {{ release-name }}-onlyoffice `
483
- - Port: 80
566
+ - Port: 443 (or 80 if using HTTP)
484
567
- Path: "/"
485
568
- This route is used to access the OnlyOffice Document Server for collaborative editing
486
569
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 ` )
489
572
- Service: ` {{ release-name }}-collaboration `
490
573
- Port: 9300
491
574
- Path: "/"
492
575
- This route is used for the WOPI protocol communication between OnlyOffice and the collaboration service
493
576
494
- 6 . ** Collabora HTTPRoute** (when ` collabora.enabled ` is ` true ` ):
577
+ 7 . ** Collabora HTTPRoute** (when ` collabora.enabled ` is ` true ` ):
495
578
- Hostname: ` global.domain.collabora `
496
579
- Service: ` {{ release-name }}-collabora `
497
580
- Port: 9980
498
581
- Headers: Adds Permissions-Policy header to prevent browser features like interest-based advertising
499
582
500
- 7 . ** Collaboration (WOPI) HTTPRoute** (when ` collaboration.enabled ` is ` true ` ):
583
+ 8 . ** Collaboration (WOPI) HTTPRoute** (when ` collaboration.enabled ` is ` true ` ):
501
584
- Hostname: ` collaboration.wopiDomain `
502
585
- Service: ` {{ release-name }}-collaboration `
503
586
- Port: 9300
@@ -621,7 +704,7 @@ spec:
621
704
- type : IPAddress
622
705
value : 192.168.178.77 # Replace with your desired IP
623
706
listeners :
624
- - name : opencloud -https
707
+ - name : oc-proxy -https
625
708
protocol : HTTPS
626
709
port : 443
627
710
hostname : " cloud.opencloud.test"
@@ -633,19 +716,7 @@ spec:
633
716
allowedRoutes :
634
717
namespaces :
635
718
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
649
720
protocol : HTTPS
650
721
port : 443
651
722
hostname : " minio.opencloud.test"
@@ -657,10 +728,10 @@ spec:
657
728
allowedRoutes :
658
729
namespaces :
659
730
from : All
660
- - name : onlyoffice -https
731
+ - name : oc-minio-console -https
661
732
protocol : HTTPS
662
733
port : 443
663
- hostname : " onlyoffice .opencloud.test"
734
+ hostname : " console.minio .opencloud.test"
664
735
tls :
665
736
mode : Terminate
666
737
certificateRefs :
@@ -669,10 +740,10 @@ spec:
669
740
allowedRoutes :
670
741
namespaces :
671
742
from : All
672
- - name : collabora -https
743
+ - name : oc-keycloak -https
673
744
protocol : HTTPS
674
745
port : 443
675
- hostname : " collabora .opencloud.test"
746
+ hostname : " keycloak .opencloud.test"
676
747
tls :
677
748
mode : Terminate
678
749
certificateRefs :
@@ -681,10 +752,10 @@ spec:
681
752
allowedRoutes :
682
753
namespaces :
683
754
from : All
684
- - name : collaboration -https
755
+ - name : oc-wopi -https
685
756
protocol : HTTPS
686
757
port : 443
687
- hostname : " collaboration .opencloud.test"
758
+ hostname : " wopiserver .opencloud.test"
688
759
tls :
689
760
mode : Terminate
690
761
certificateRefs :
@@ -693,10 +764,10 @@ spec:
693
764
allowedRoutes :
694
765
namespaces :
695
766
from : All
696
- - name : wopi -https
767
+ - name : oc-onlyoffice -https
697
768
protocol : HTTPS
698
769
port : 443
699
- hostname : " wopiserver .opencloud.test"
770
+ hostname : " onlyoffice .opencloud.test"
700
771
tls :
701
772
mode : Terminate
702
773
certificateRefs :
@@ -735,20 +806,15 @@ Alternatively, for local testing, you can add entries to your `/etc/hosts` file:
735
806
736
807
### Step 7: Install OpenCloud
737
808
738
- Finally, install OpenCloud using Helm :
809
+ Finally, install OpenCloud using Helmfile :
739
810
740
811
``` bash
741
812
# Clone the repository
742
813
git clone https://github.com/opencloud-eu/helm.git opencloud-helm
743
- cd opencloud-helm
814
+ cd charts/ opencloud-full/deployments
744
815
745
816
# 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
752
818
```
753
819
754
820
### Troubleshooting
0 commit comments