XWiki Helm Chart
Provide a helm chart to install and configure XWiki in a Kubernetes environment |
Type | Other |
Category | Other |
Developed by | xwiki:XWiki.ashish, Ludovic Dubost, Guilherme Sautner, Arsène Fougerouse, Martin Moreira de Jesus |
Rating | |
License | GNU Lesser General Public License 2.1 |
Table of contents
Description
This contrib extension provides Helm Chart aiming to ease the deployment in both Local and Highly Available setups.
TL/DR
# Use --devel install most recent released (beta/alpha) version
helm upgrade -i xwiki xwiki-helm/xwiki
XWiki <1.0.0 Install from source.
Complete guide to see Requirements/Install instructions.
Know Limitations
Follow features are available but are considered as experimental/incomplete:
- Enable HA (Cluster/Autoscale Settings)
- Custom internal Solr instance
- Prometheus Metrics
Parameters
XWiki
Name | Description | Value |
---|---|---|
image.name | XWiki docker image name | xwiki |
image.tag | XWiki docker image tag | lts-mysql-tomcat |
image.pullPolicy | XWiki docker image pull policy | IfNotPresent |
workloadStateful | XWiki 1.0.0+ Define if workload will be (true) StatefulSet or Deployment | true |
customConfigs.xwiki.cfg | XWiki 1.0.0+ Key/Value preferences to be replaced or inserted on xwiki.cfg file | [] |
customConfigs.xwiki.properties | XWiki 1.0.0+ Key/Value preferences to be replaced or inserted on xwiki.properties file | [] |
properties | XWiki 1.0.0+ Key/Value preferences to be passed to Java process with -D parameters using JAVA_OPTS | [] |
javaOpts | XWiki 1.0.0+ Custom JVM parameters | [] |
extraEnvVars | XWiki 1.0.0+ Array with extra environment variables | [] |
nodeSelector | XWiki 1.0.0+ Node labels for XWiki pods assignment | {} |
tolerations | XWiki 1.0.0+ Tolerations for XWiki pods assignment | [] |
affinity | XWiki 1.0.0+ Affinity for XWiki pods assignment | {} |
resources.limits | The resources limits for XWiki | {} |
resources.requests | The requested resources for XWiki | {} |
securityContext.enabled | XWiki 1.2.0+ Enable XWiki pods security context | false |
securityContext.fsGroup | XWiki 1.2.0+ Set XWiki pods FS user group | 101 |
containerSecurityContext.enabled | XWiki 1.2.0+ Enable XWiki container security context | false |
containerSecurityContext.runAsUser | XWiki 1.2.0+ Set XWiki container user to use on run | 100 |
containerSecurityContext.runAsNonRoot | XWiki 1.2.0+ Set XWiki container to run as non-root user | true |
infinispan.enabled | XWiki 1.3.0+ Enable the provision of custom settings for the infinispan configuration file. | false |
infinispan.customConfig | XWiki 1.3.0+ Use custom settings for the infinispan configuration file. | "" |
infinispan.defaultMemoryMaxCount | XWiki 1.3.0+ Use custom memory maximum count from the default infinispan configuration file. | 10000 |
Persistence
Name | Description | Value |
---|---|---|
persistence.enabled | XWiki 1.0.0+ Enable XWiki data persistence using PVC | true |
persistence.existingClaim | XWiki 1.0.0+ Name of an existing PVC to use | "" |
persistence.storageClass | XWiki 1.0.0+ PVC Storage Class for XWiki data volume | "" |
persistence.accessModes | XWiki 1.0.0+ PVC Access Mode for XWiki data volume | ["ReadWriteOnce"] |
persistence.size | XWiki 1.0.0+ PVC Storage Request for XWiki data volume | 500Mi |
persistence.annotations | XWiki 1.0.0+ Annotations for the PVC | {} |
persistence.labels | XWiki 1.0.0+ Labels for the PVC | {} |
persistence.selector | XWiki 1.0.0+ Selector to match an existing Persistent Volume | {} |
persistence.dataSource | XWiki 1.0.0+ Custom PVC data source | {} |
extraVolumes | XWiki 1.3.1+ Optionally specify an extra list of additional volumes. | [] |
extraVolumeMounts | XWiki 1.3.1+ Optionally specify an extra list of additional volumeMounts. | [] |
Traffic
Name | Description | Value |
---|---|---|
ingress.enabled | Enable ingress rule that makes XWiki service accessible | false |
ingress.className | IngressClass that implement the Ingress | "" |
ingress.annotations | Additional annotations for the Ingress. | {} |
ingress.hosts[0].host | XWiki 1.0.0+ Host for the ingress | "" |
ingress.hosts[0].paths[0].path | XWiki 1.0.0+ Path for the ingress | "/" |
ingress.hosts[0].paths[0].pathType | XWiki 1.0.0+ Path Type fo the ingress | "ImplementationSpecific" |
ingress.tls | XWiki 1.0.0+ TLS configuration | [] |
service.portName | Port name of service | 'node' |
service.name | Name of service | 'http' |
service.type | Kubernetes service type | 'ClusterIP' |
service.externalPort | External port | 80 |
service.internalPort | Internal/Container port | 8080 |
service.externalIPs | An array of externalIPs | [] |
service.sessionAffinity | Specific Session Affinity | ClientIP |
istio.enabled | Enable istio virtual service | false |
istio.host | Host to configured on istio virtual service | "*" |
istio.httpCookie.name | XWiki 1.1.0+ Name of cookie used for sticksession | "xistio" |
istio.httpCookie.path | XWiki 1.1.0+ Path of cookie used for sticksession | "/" |
istio.httpCookie.ttl | XWiki 1.1.0+ Time to live of cookie used for sticksession | "1800s" |
istio.externalGatewayName | XWiki 1.1.0+ Use custom gateway name | "" |
istio.gateway.enabled | XWiki 1.1.0+ Enable creating gateway | "false" |
istio.gateway.selectorIstio | XWiki 1.1.0+ Selector for istio gateway, some cases the default selector is "ingressgateway". | "ingress" |
istio.tls.enabled | XWiki 1.1.0+ Enable TLS usage | "false" |
istio.tls.httpsRedirect | XWiki 1.1.0+ Force redirect to https on http 'service' | "false" |
istio.tls.secretName | XWiki 1.1.0+ Use custom secret/certificate | "" |
istio.tls.minProtocolVersion | XWiki 1.1.0+ Minimal TLS protocol to be used | "TLSV1_2" |
istio.tls.mode | XWiki 1.1.0+ Minimal TLS protocol to be used | "TLSV1_2" |
istio.tls.certificate.enabled | XWiki 1.1.0+ Enable certificate creation to be issued (using certmanager) on same namespace of istio ingress | "false" |
istio.tls.certificate.namespace | XWiki 1.1.0+ Namespace of istio ingress is located | "istio-ingress" |
istio.tls.certificate.issuerRef | XWiki 1.1.0+ Certmanager issuer reference | {} |
Database
In case deploy a database with xwiki chart, the database options are PostgreSQL, XWiki 1.0.0+ MariaDB and MySQL provided by bitnami.
Name | Description | Value |
---|---|---|
externalDB.host | Host to external/existing database instance to use | '' |
externalDB.database | Database to use | '' |
externalDB.user | User to use | '' |
externalDB.password | Password for the above user | '' |
externalDB.custommKeyRef.enable | XWiki 1.2.4+ Enable usage of external secret with database password. | false |
externalDB.custommKeyRef.name | XWiki 1.2.4+ Secret name that contains password | '' |
externalDB.custommKeyRef.key | XWiki 1.2.4+ Key for password | '' |
mysql.enabled | Whether to deploy new MySQL server | true |
mysql.auth.rootPassword | Password for the MySQL 'root' user | xwiki |
mysql.auth.username | Database user to create | xwiki |
mysql.auth.password | Database password for username above | xwiki |
mysql.auth.database | Database name to create | xwiki |
mariadb.enabled | XWiki 1.0.0+ Whether to deploy new MySQL server | false |
mariadb.auth.rootPassword | XWiki 1.0.0+ Password for the MySQL 'root' user | xwiki |
mariadb.auth.username | XWiki 1.0.0+ Database user to create | xwiki |
mariadb.auth.password | XWiki 1.0.0+ Database password for username above | xwiki |
mariadb.auth.database | XWiki 1.0.0+ Database name to create | xwiki |
postgresql.enabled | Whether to deploy new PostgreSQL server | false |
postgresql.auth.postgresPassword | Password for the 'postgres' user | xwiki |
postgresql.auth.username | Database user to create | xwiki |
postgresql.auth.password | Database password for username above | xwiki |
postgresql.auth.database | Database name to create | xwiki |
initContainers.database.enabled | XWiki 1.4.0+ Enable initialization container to check if the database is ready to receive connections. | false |
initContainers.database.image | XWiki 1.4.0+ Can use a custom image to check if the database is up/running. If externalDB is used, an image needs to be provided | "" |
initContainers.database.command | XWiki 1.4.0+ Can use a custom command to check if database is up/running. If externalDB is used, a command needs to be provided. Check on _helpers.tpl to see commands used. | "" |
initContainers.database.containerSecurityContext | XWiki 1.4.0+ Custom container security context to be used on init container to check database. | {} |
For MySQL and MariaDB an initialization script and custom config are made to grant permission and use the correct character set.
Cluster
Name | Description | Value |
---|---|---|
cluster.enabled | Enable usage of Glowroot agent | false |
cluster.replicas | Number of XWiki instances | 1 |
cluster.jgroups.port | Jgroups TCP port to be used | 7800 |
cluster.jgroups.kube_ping.version | Kubernetes Ping extension version to be used | "2.0.1.Final" |
cluster.jgroups.kube_ping.url | Use custom external URL to download kube_ping JAR file | "" |
autoscaling.enabled | Enable the HorizontalPodScaler | false |
autoscaling.minReplicas | Minimium number of replicas | 1 |
autoscaling.maxReplicas | Maximum number of replicas | 3 |
autoscaling.metrics | Custom metrics to trigger the Autoscaling | {} |
autoscaling.status | Define custom grain tuned metrics | {} |
Monitoring
Name | Description | Value |
---|---|---|
glowroot.enabled | XWiki 1.1.0+ Enable usage of Glowroot agent | false |
glowroot.properties | XWiki 1.1.0+ Custom properties. Ex.: use custom central collector | {} |
glowroot.url | XWiki 1.2.0+ Use custom external URL to download Glowroot dist. file | "" |
logback.enabled | XWiki 1.2.0+ Enable to use custom values on logback file configurations. | false |
logback.customConfiguration | XWiki 1.2.0+ Use custom entire configuration inside logback xml file. | "" |
logback.extraConfiguration | XWiki 1.2.0+ Add on end of logback xml file extra elements. | "" |
prometheus.javaagent.enabled | XWiki 1.3.0+ Enable usage of Prometheus Java Agent to expose prometheus metrics from JMX. | false |
prometheus.javaagent.port | XWiki 1.3.0+ Port used to expose prometheus metrics | 12345 |
prometheus.javaagent.version | XWiki 1.3.0+ Agent version | "0.20.0" |
prometheus.javaagent.url | XWiki 1.3.0+ URL that is used to download agent JAR file. | ""..."" |
prometheus.javaagent.config | XWiki 1.3.0+ Custom Prometheus Java Agent configurations | rules: - pattern: ".*" |
prometheus.javaagent.podmonitor.enabled | XWiki 1.3.0+ Enable creation of PodMonitor resource | true |
prometheus.javaagent.podmonitor.labels | XWiki 1.3.0+ Labels used on PodMonitor resource | {} |
Probes
XWiki 1.2.3+ Options configure liveness and readiness probes.
probes.startup.enabled | XWiki 1.2.4+ Enable startup probes. If this probe fails, the container will be recreated. | true |
probes.startup.httpGet.enabled | XWiki 1.2.4+ Use http GET request to check probe. If false, test will be made with TCP socket | false |
probes.startup.httpGet.path | XWiki 1.2.4+ If httpGet enabled, witch path will be used. | / |
probes.startup.initialDelaySeconds | XWiki 1.2.4+ Seconds wait for the container startup. | 120 |
probes.startup.timeoutSeconds | XWiki 1.2.4+ Seconds for probe times out. | 60 |
probes.startup.periodSeconds | XWiki 1.2.4+ Time in seconds between checks. | 30 |
probes.startup.failureThreshold | XWiki 1.2.4+ Quantity of failures check before restart container. | 5 |
probes.startup.successThreshold | XWiki 1.2.4+ Quantity of successful check to reset failure threshold. | 1 |
probes.liveness.enabled | Enable liveness probes. If this probe fails, the container will be restarted. | true |
probes.liveness.httpGet.enabled | XWiki 1.2.4+ Use http GET request to check probe. If false, test will be made with TCP socket | true |
probes.liveness.httpGet.path | XWiki 1.2.4+ If httpGet enabled, witch path will be used. | /rest |
probes.liveness.initialDelaySeconds | Seconds wait for the container startup. | 30 |
probes.liveness.timeoutSeconds | Seconds for probe times out. | 3 |
probes.liveness.periodSeconds | Time in seconds between checks. | 30 |
probes.liveness.failureThreshold | Quantity of failures check before restart container. | 10 |
probes.liveness.successThreshold | Quantity of successful check to reset failure threshold. | 1 |
probes.readiness.enabled | Enable readiness probes. If this probe fails, no traffic will be routed to the container. | true |
probes.readiness.httpGet.enabled | XWiki 1.2.4+ Use http GET request to check probe. If false, test will be made with TCP socket | true |
probes.readiness.httpGet.path | XWiki 1.2.4+ If httpGet enabled, witch path will be used. | /rest/wikis/xwiki/spaces |
probes.readiness.initialDelaySeconds | Seconds wait for the container startup. | 30 |
probes.readiness.timeoutSeconds | Seconds for probe times out. | 3 |
probes.readiness.periodSeconds | Time in seconds between checks. | 30 |
probes.readiness.failureThreshold | Quantity of failures check before stop send traffic. | 10 |
probes.readiness.successThreshold | Quantity of successful check return to send traffic. | 1 |
Solr
When enabled, deploy an internal Solr instance.
Prerequisites & Installation Instructions
Requirements
- Kubernetes 1.23+
- kubectl https://kubernetes.io/docs/tasks/tools/
- Helm 3.x https://helm.sh/docs/intro/install/
Install
To install chart with the release name xwiki:
# Use --devel install most recent released (beta/alpha) version
helm install xwiki xwiki-helm/xwiki
Source
To install using local chart definitions or other not released version:
# git checkout branch-name
cd xwiki-helm/charts/xwiki
helm dependency update
helm install xwiki .
Tests
Current tests are unit tests created to run with helm-unittest plugin:
helm unittest charts/xwiki
Signing
This chart is signed using Chart Releaser Action that runs on GitHub Actions. Instructions about how to use can be found in this tutorial. You can verify this chart against this GPG key:
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
=57n1
-----END PGP PUBLIC KEY BLOCK-----
Example:
curl https://extensions.xwiki.org/xwiki/bin/download/Extension/XWikiHelm/WebHome/helm-charts.asc | gpg --dearmor > helm-charts.gpg
# Verify thatthe signed chart:
helm fetch --verify xwiki-helm/xwiki --version 1.2.4 --keyring helm-charts.gpg
Sizing
Check XWiki Performance guide that contains more detailed options and settings related to sizes and performance.
Minimal
Current product recommended initial resources are equivalent to 1 CPU unit and 2G of memory. Where is 1G is minimal for XWiki instance and another 1G for other process, activities that can use additional memory.
On XWiki Cloud Demo instances, currently XWiki instance (Java/Tomcat) runs with 564m max memory, sharing 1484m between Java, LibreOffice, Database (MariaDB) and OS (Debian).
The default (chart) persistence size (XWiki Data) is low, it's recommended to give more space if usage will be with large pages/attachments.
Recommendations
These values may vary depending on the XWiki use case.
- All-in-One is considered deployment using XWiki Image using embedded Solr, LibreOffice and database sharing same resources.
- Distributed is considering some components being deployed separately.
All-In-One
Internal estimations for Kubernetes, based on 10% of users visiting 20 pages in spike hours (3 page / minute for 100 users, 2 pages / second for 3000 users).
Scenario Description | CPU (Request/Limit) | RAM (Request/Limit) | JVM¹ |
---|---|---|---|
Simple/Normal usage | 1 / 2 | 1GB / 2GB | 1G |
Minimal users but with more pageviews | 2 / 4 | 3GB / 6GB | 3G |
More users (~100) and more pageviews | 4 / 8 | 4GB / 8GB | 4G |
Bigger user quantities (>3000) and huge pageviews | 6 / 12 | 6GB / 12GB | 6G |
¹ Java minimal (-Xms) memory and maximum (-Xmx) equal, but maybe some scenarios are intended to run with different values for minimal and maximal heap.
Documents/Pages quantity can affect sizing if theses are frequently accessed or are using heavily other features like macros, scripts etc. If resource increase on Database or Storage speed are not possible or sufficient, can be necessary to increase document caching and/or rendering cache.
Any cache change, needs to be aligned with the CPU/Memory profile. More memory requires more CPU for the JVM to be able to manage more data. Lower JVM heap will increase CPU usage to run more often GC. Then it's possible to run with less memory, but with the penalty of more GC and CPU usage.
Events that need to be monitored for sizing changes:
- In case of any “Out of Memory” error, proper increase on memory needs to be done. Important note that in some cases this error can be released with memory leeks or other issues. And the huge Java memory heap, requires more CPU unit to proper run without pressure on GC.
- Long processing time (Waiting long time for page to load/save), can be released with lack of CPU units or pressure on Memory. If memory is low and CPU is high, maybe only CPU unit increase is required. If memory usage is height, perhaps there are height GC activities and sometimes more memory can help.
- Error save page, or adding new attachments. It can be out of space problem, check Database available size and XWiki data volume.
Distributed
There are some use cases that it is better to isolate/separate some components to have better stability/performance.
Apache Solr
See Performance Guide in Solr module documentation.
- By default, a standalone Default Solr instance memory is 512M heap. Size can be increased to fit with volume/quantity of search/index requests, but is common that for installations benefiting of external instance will start at least 1GB of memory.
LibreOffice
- There is no alternative/support to run external LibreOffice instance XWIKI-22481XWIKI-22664.
Database Tuning
See Administrator Guide / Performance / Database Administration.
Follow are listed some initial values that can be used as start point to improve the database used by a XWiki instance.
MariaDB/MySQL
See https://mariadb.com/kb/en/configuring-mariadb-for-optimal-performance/
Settings example with 384M of memory dedicated to workload:
innodb_log_file_size=64M
innodb_log_buffer_size=6M
PostgreSQL
See https://www.postgresql.org/docs/current/runtime-config-resource.html
Default settings are already good for memory allocation up to 4G. A good start point to try to improve PG performance are settings (work_mem, maintenance_work_mem, shared_buffers and effective_cache_size).
Upgrading
v1.2.x to v1.3.0
There are no upgrade restrictions or major changes break. But this version introduced service account by default. In case of a fallback or backup restore, a direct fix to Workload might be required to manage service account reference.
v1.1.x to v1.2.0
In this version, external Solr usage changed. If enabled, a preconfigured workload will be created. To use another external instance as previous version, you need to disable this and use only the properties settings to configure the external instance using the official guide.
Option replicaCount was renamed to cluster.replicas
v0.X to v1.0.0
In this version some persistent mappings have been modified, so it is strongly recommended to perform a backup. Velero is a useful tool for managing Kubernetes backups.
For releases that utilize database settings/install, the recommended approach is to install new Helm release and perform data migration accordingly. See Import/Export.
Release Notes
v1.4.0
v1.3.1
v1.3.0
v1.2.6
v1.2.5
v1.2.4
v1.2.3
v1.2.2
v1.2.1
v1.1.3
v1.2.0
v1.1.2
v1.1.1
v1.1.0
v1.0.0
Here are the updates in this release:
- Support for Kubernetes v1.23+
- Upgrade of the Helm definition to use v2 API.
- Changed the repository for MySQL and PostgreSQL to use Bitnami.
- Added MariaDB (10.11.2) as database option using chart version 12.1.4.
- Updated the MySQL (8.0.33) chart version to 9.9.0.
- Updated the PostgreSQL (15.2.0) chart version to 12.4.2.
- Upgraded unittesting to lasted version.
- Added new persistent options for XWiki data.
- Introduced Github workflow actions to perform testing and release.
- Added support config xwiki properties and cfg using helm chart values.
Jira issues solved: