You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wiki/dev/helm
ABI CHAHINE 5450597654
docs: upgrade helm chart to take in consideration K8S v1.19+ for ingress (#4437)
3 years ago
..
charts misc: update helm chart configs and readme (#1751) 4 years ago
templates docs: upgrade helm chart to take in consideration K8S v1.19+ for ingress (#4437) 3 years ago
.helmignore misc: update helm chart configs and readme (#1751) 4 years ago
Chart.lock fix: upgrade postgresql dependency to run in non root (#2213) 4 years ago
Chart.yaml feat(helm): adding liveness and readiness probes customizations (#4116) 3 years ago
README.md docs: fix helm ingress doc 3 years ago
values.yaml docs: upgrade helm chart to take in consideration K8S v1.19+ for ingress (#4437) 3 years ago

README.md

Wiki.js

Release License Backers on Open Collective Downloads Docker Pulls
Build status Quality Gate Status Maintainability Rating Security Rating Standard - JavaScript Style Guide
Chat on Slack Twitter Follow Subscribe to Newsletter

A modern, lightweight and powerful wiki app built on NodeJS

Donate

Wiki.js is an open source project that has been made possible due to the generous contributions by community backers. If you are interested in supporting this project, please consider becoming a sponsor, becoming a patron, donating to our OpenCollective, via Paypal or via Ethereum (0xe1d55c19ae86f6bcbfb17e7f06ace96bdbb22cb5).

Become a Sponsor Become a Patron Donate on OpenCollective Donate via Paypal
Donate via Ethereum Donate via Bitcoin Buy a T-Shirt

Introduction

This chart bootstraps a Wiki.js deployment on a Kubernetes cluster using the Helm package manager.

It also optionally packages the PostgreSQL as the database but you are free to bring your own.

Prerequisites

  • PV provisioner support in the underlying infrastructure (with persistence storage enabled) if you want data persistance

Installing the Chart

To install the chart with the release name my-release run the following from this (helm) directory:

Using Helm 3:

$ helm install my-release .

Using Helm 2:

$ helm install --name my-release . 

The command deploys Wiki.js on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm delete my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Warning: Persistant Volume Claims for the database are not deleted automatically. They need to be manually deleted

$ kubectl delete pvc/data-wiki-postgresql-0

Configuration

The following table lists the configurable parameters of the Wiki.js chart and their default values.

Parameter Description Default
image.repository Wiki.js image requarks/wiki
image.tag Wiki.js image tag latest
imagePullPolicy Image pull policy IfNotPresent
replicacount Amount of wiki.js service pods to run 1
resources.limits wiki.js service resource limits nil
resources.requests wiki.js service resource requests nil
nodeSelector Node labels for wiki.js pod assignment {}
affinity Affinity settings for wiki.js pod assignment {}
schedulerName Name of an alternate scheduler for wiki.js pod nil
tolerations Toleration labels for wiki.jsk pod assignment []
ingress.enabled Enable ingress controller resource false
ingress.annotations Ingress annotations {}
ingress.hosts List of ingress rules [{"host": "wiki.local", "paths": ["/"]}]
ingress.tls Ingress TLS configuration []
postgresql.enabled Deploy postgres server (see below) true
postgresql.postgresqlDatabase Postgres database name wiki
postgresql.postgresqlUser Postgres username postgres
postgresql.postgresqlHost External postgres host nil
postgresql.postgresqlPassword External postgres password nil
postgresql.existingSecret Provide an existing Secret for postgres nil
postgresql.existingSecretKey The postgres password key in the existing Secret postgresql-password
postgresql.postgresqlPort External postgres port 5432
postgresql.ssl Enable external postgres SSL connection false
postgresql.ca Certificate of Authority path for postgres nil
postgresql.persistence.enabled Enable postgres persistence using PVC true
postgresql.persistence.existingClaim Provide an existing PersistentVolumeClaim for postgres nil
postgresql.persistence.storageClass Postgres PVC Storage Class (example: nfs) nil
postgresql.persistence.size Postgers PVC Storage Request 8Gi

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install --name my-release \
  --set postgresql.persistence.enabled=false \
   . 

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm install --name my-release -f values.yaml . 

Tip: You can use the default values.yaml

PostgresSQL

By default, PostgreSQL is installed as part of the chart.

Using an external PostgreSQL server

To use an external PostgreSQL server, set postgresql.enabled to false and then set postgresql.postgresqlHost and postgresql.postgresqlPassword. To use an existing Secret, set postgresql.existingSecret. The other options (postgresql.postgresqlDatabase, postgresql.postgresqlUser, postgresql.postgresqlPort and postgresql.existingSecretKey) may also want changing from their default values.

To use an SSL connection you can set postgresql.ssl to true and if needed the path to a Certificate of Authority can be set using postgresql.ca to /path/to/ca. Default postgresql.ssl value is false.

If postgresql.existingSecret is not specified, you also need to add the following Helm template to your deployment in order to create the postgresql Secret:

kind: Secret
apiVersion: v1
metadata:
  name: {{ template "wiki.postgresql.secret" . }}
data:
  {{ template "wiki.postgresql.secretKey" . }}: "{{ .Values.postgresql.postgresqlPassword | b64enc }}"

Persistence

Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube. See the Configuration section to configure the PVC or to disable persistence.

Ingress

This chart provides support for Ingress resource. If you have an available Ingress Controller such as Nginx or Traefik you maybe want to set ingress.enabled to true and add ingress.hosts for the URL. Then, you should be able to access the installation using that address.