XWiki Helm Chart

Last modified by Clément Aubin on 2023/05/30 15:30

cogProvide a helm chart to install and configure XWiki in a Kubernetes environment
TypeOther
CategoryOther
Developed byUnknown
Rating
0 Votes
LicenseGNU Lesser General Public License 2.1

Description

This contrib extension provides Helm Chart aiming to ease the deployment in both Local and Highly Available setups.

TL/DR

helm repo add xwiki-helm https://xwiki-contrib.github.io/xwiki-helm
# Use --devel install most recent released (beta/alpha) version
helm upgrade -i xwiki xwiki-helm/xwiki

<1.0.0 Install from source.

Complete guide to see Requirements/Install instructions. 

Parameters

XWiki

NameDescriptionValue
image.nameXWiki docker image namexwiki
image.tagXWiki docker image taglts-mysql-tomcat
image.pullPolicyXWiki docker image pull policyIfNotPresent
replicaCountNumber of XWiki instances1
workloadStateful1.0.0+ Define if workload will be (true) StatefulSet or Deploymenttrue
customConfigs.xwiki.cfg1.0.0+ Key/Value preferences to be replaced or inserted on xwiki.cfg file[]
customConfigs.xwiki.properties1.0.0+ Key/Value preferences to be replaced or inserted on xwiki.properties file[]
properties1.0.0+ Key/Value preferences to be passed to Java process with -D parameters using JAVA_OPTS[]
javaOpts1.0.0+ Custom JVM parameters[]
extraEnvVars1.0.0+ Array with extra environment variables[]
nodeSelector1.0.0+ Node labels for XWiki pods assignment{}
tolerations1.0.0+ Tolerations for XWiki pods assignment[]
affinity1.0.0+ Affinity for XWiki pods assignment{}
resources.limitsThe resources limits for XWiki{}
resources.requestsThe requested resources for XWiki{}

Persistence

NameDescriptionValue
persistence.enable1.0.0+ Enable XWiki data persistence using PVCtrue
persistence.existingClaim1.0.0+ Name of an existing PVC to use""
persistence.storageClass1.0.0+ PVC Storage Class for XWiki data volume""
persistence.accessModes1.0.0+ PVC Access Mode for XWiki data volume["ReadWriteOnce"]
persistence.size1.0.0+ PVC Storage Request for XWiki data volume500Mi
persistence.annotations1.0.0+ Annotations for the PVC{}
persistence.labels1.0.0+ Labels for the PVC{}
persistence.selector1.0.0+ Selector to match an existing Persistent Volume{}
persistence.dataSource1.0.0+ Custom PVC data source{}

Traffic

NameDescriptionValue
ingress.enabledEnable ingress rule that makes XWiki service accessiblefalse
ingress.classNameIngressClass that implement the Ingress""
ingress.annotationsAdditional annotations for the Ingress.{}
ingress.hosts[0].host1.0.0+ Host for the ingress""
ingress.hosts[0].paths[0].path1.0.0+ Path for the ingress"/"
ingress.hosts[0].paths[0].pathType1.0.0+ Path Type fo the ingress"ImplementationSpecific"
ingress.tls1.0.0+ TLS configuration[]
service.portNamePort name of service'node'
service.nameName of service'http'
service.typeKubernetes service type'ClusterIP'
service.externalPortExternal port80
service.internalPortInternal/Container port8080 

Database

In case deploy a database with xwiki chart, the database options are PostgreSQL, 1.0.0+ MariaDB and MySQL provided by bitnami.

NameDescriptionValue
externalDB.hostHost to external/existing database instance to use''
externalDB.databaseDatabase to use''
externalDB.userUser to use''
externalDB.passwordPassword for the above user''
mysql.enableWhether to deploy new MySQL servertrue
mysql.auth.rootPasswordPassword for the MySQL 'root' userxwiki
mysql.auth.usernameDatabase user to createxwiki
mysql.auth.passwordDatabase password for username abovexwiki
mysql.auth.databaseDatabase name to createxwiki
mariadb.enable1.0.0+ Whether to deploy new MySQL serverfalse
mariadb.auth.rootPassword1.0.0+ Password for the MySQL 'root' userxwiki
mariadb.auth.username1.0.0+ Database user to createxwiki
mariadb.auth.password1.0.0+ Database password for username abovexwiki
mariadb.auth.database1.0.0+ Database name to createxwiki
postgresql.enableWhether to deploy new PostgreSQL serverfalse
postgresql.auth.postgresPasswordPassword for the 'postgres' userxwiki
postgresql.auth.usernameDatabase user to createxwiki
postgresql.auth.passwordDatabase password for username abovexwiki
postgresql.auth.databaseDatabase name to createxwiki

For MySQL and MariaDB a initilization script and custom config are made in order to grant permission and use correct character set.

Examples

Custom Properties


# Custom configuration files for xwiki 
customConfigs:
 # Properties key that exists, replace in line is done with value here defined. 
 # If key don't exists, this key and value will be appended in that specific file. 
 # This files are list of key: value that are translated as key=value in that file.
  xwiki.cfg:
    xwiki.superadminpassword: "s3cr3t"
  xwiki.properties:
    extension.repositories: "store.xwiki.com:xwiki:https://store.xwiki.com/xwiki/rest/"

# Properties to be passed to Java process with -D parameters using JAVA_OPTS 
properties:
  http.proxyHost: "proxy.mycompany.com"
  http.proxyPort: 7777
  https.proxyHost: "proxy.mycompany.com"
  https.proxyPort: 7777
 # This propertie is only used on new extension, maybe on future versions will be possible to setup this custom change. 
 # But works for another properties 
  "property:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences[0].colorTheme": "FlamingoThemes.Iceberg"

Prerequisites & Installation Instructions

Requirements

Install

To install chart with the release name xwiki

helm repo add xwiki-helm https://xwiki-contrib.github.io/xwiki-helm
# 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 clone https://github.com/xwiki-contrib/xwiki-helm
# 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 plugin install https://github.com/helm-unittest/helm-unittest
helm unittest charts/xwiki

Upgrading

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.

If your instance is utilizing an external database, it is possible to upgrade Helm release by changing the workloadStateful to false.

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.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: 

Tags:
    

Get Connected