Changes for page XWiki (Helm)

Last modified by Itzhak Daniel on 2024/04/29 16:35

From version 22.1
edited by Itzhak Daniel
on 2024/04/29 16:35
Change comment: There is no comment for this version
To version 16.1
edited by Itzhak Daniel
on 2024/04/29 00:40
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -12,7 +12,7 @@
12 12  
13 13  == Background ==
14 14  
15 -[[Behemoth LTD>>https://www.behemoth.co.il/]] was in a search for a 'knowledge base' software, a central place to collect and collaborate on documents which hold information, instructions, guides, etc. The requirement was simple, can run on Kubernetes without too much customization, building, testing and other complex CI/CD prerequisite.
15 +[[Behemoth LTD>>https://www.behemoth.co.il/]] was in a search for a 'knowledge base' software, a central place to collect and collaborate on documents which hold information, instructions, guide, etc. The requirement was simple, it required to be able to run on Kubernetes without too much customization, building, testing and other complex CI/CD prerequisite.
16 16  
17 17  Things may change in the future, as Kubernetes becomes the de-facto way to run Apps, so do some homework before continuing, [[Awesome Selfhosted>>https://github.com/awesome-selfhosted/awesome-selfhosted#wikis]].
18 18  
... ... @@ -49,7 +49,7 @@
49 49  git clone --depth 1 --branch master https://github.com/xwiki/xwiki-docker.git
50 50  {{/code}}
51 51  
52 -Once you have the repo locally, modify the [[//Dockerfile//>>attach:Dockerfile]] as shown below:
52 +Once you have the repo locally, modify the //Dockerfile// as shown below:
53 53  
54 54  {{code language="git" title="# Diff"}}
55 55  @@ -89,6 +89,11 @@ COPY xwiki/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
... ... @@ -71,15 +71,15 @@
71 71  
72 72  {{code language="sh" layout="LINENUMBERS" title="# Docker"}}
73 73  cd ./16/mysql-tomcat/
74 -docker build -t behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-3 .
74 +docker build -t behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-2 .
75 75  docker login
76 -docker push behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-3
76 +docker push behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-2
77 77  {{/code}}
78 78  
79 79  {{code language="sh" layout="LINENUMBERS" title="# Podman"}}
80 80  cd ./16/mysql-tomcat/
81 -buildah build -f Dockerfile -t behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-3
82 -podman push --creds=[Username:[Password]] behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-3
81 +buildah build -f Dockerfile -t behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-2
82 +docker push --creds=[Username:[Password]] behemothil/xwiki-mysql-tomcat-nonroot:16.2.0-2
83 83  {{/code}}
84 84  
85 85  === Deploy ===
... ... @@ -86,7 +86,7 @@
86 86  
87 87  We're going to deploy XWiki as a [[statefulset>>https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/]] using [[Helm>>https://helm.sh/]], the Database (MySQL) and the App, each will have a volume to store their information. As I mentioned, in our case, we need to perform several additional steps.
88 88  
89 -After the path/loop devices were created, create the [[PVs>>attach:pv_storage.yaml]] (only if your cluster doesn't know how to provision storage for itself):
89 +After the path/loop devices were created, create the PVs (only if your cluster doesn't know how to provision storage for itself):
90 90  
91 91  {{code language="sh" layout="LINENUMBERS" title="# kubectl stdin"}}
92 92  kubectl create -f - <<EOF
... ... @@ -181,15 +181,15 @@
181 181  Theoretically, if there aren't any breaking changes or prerequisites, you can run:
182 182  
183 183  {{code language="sh" layout="LINENUMBERS" title="# Helm upgrade"}}
184 -helm repo update xwiki-helm
185 185  helm upgrade --namespace behemoth-wiki \
186 186   --values values.yaml \
187 187   behemoth-xwiki xwiki-helm/xwiki
187 +
188 188  {{/code}}
189 189  
190 190  === Uninstall ===
191 191  
192 -To fully remove XWiki from your cluster, use the following commands:
192 +To fully remove XWiki, use the following commands:
193 193  
194 194  {{code language="sh" layout="LINENUMBERS" title="# Uninstalling"}}
195 195  helm uninstall --namespace behemoth-wiki behemoth-xwiki
... ... @@ -207,7 +207,7 @@
207 207  1. [[Github - XWiki Contrib - Helm Charts>>https://github.com/xwiki-contrib/xwiki-helm]]
208 208  1. [[Github - XWiki - Docker>>https://github.com/xwiki/xwiki-docker/]]
209 209  1. [[Docker Hub - XWiki - Official>>https://hub.docker.com/_/xwiki]]
210 -1. [[Docker Hub - Behemoth LTD - Custom XWiki Non-root Image>>https://hub.docker.com/r/behemothil/xwiki-mysql-tomcat-nonroot]]
210 +1. [[Docker Hub - Behemoth LTD - Custom XWiki Non-root Image>>https://hub.docker.com/repository/docker/behemothil/xwiki-mysql-tomcat-nonroot/general]]
211 211  )))
212 212  
213 213  (% class="col-xs-12 col-sm-4" %)
Dockerfile
Size
... ... @@ -1,1 +1,1 @@
1 -6722
1 +6730
Content
... ... @@ -91,7 +91,7 @@
91 91  
92 92  # Added by Behemoth LTD - Apr 28th, 2024
93 93  # Fixing permissions error when using non-root user/group (30001:30001) to start the app
94 -RUN chown -R 30001:30001 /usr/local/tomcat
94 +RUN chown -R 30001:30001 /usr/local/tomcat/webapps
95 95  USER 30001:30001
96 96  
97 97  # At this point the image is done and what remains below are the runtime configuration used by the user to configure
values.yaml
Size
... ... @@ -1,1 +1,1 @@
1 -5.5 KB
1 +4.1 KB
Content
... ... @@ -1,6 +4,3 @@
1 -# Default values for node.
2 -# This is a YAML-formatted file.
3 -# Declare variables to be passed into your templates.
4 4  cluster:
5 5   enabled: false
6 6  
... ... @@ -7,11 +7,8 @@
7 7  image:
8 8   name: xwiki
9 9   pullPolicy: IfNotPresent
10 -## Image Tag useful when externalDB is been used
11 -## https://hub.docker.com/_/xwiki
12 12   name: "behemothil/xwiki-mysql-tomcat-nonroot"
13 - tag: "16.2.0-2"
14 -# tag: '16.2.0-mysql-tomcat'
8 + tag: "16.2.0-1"
15 15  service:
16 16   portName: node
17 17   name: http
... ... @@ -18,11 +18,7 @@
18 18   type: ClusterIP
19 19   externalPort: 80
20 20   internalPort: 8080
21 - # Set an array of externalIPs for the service
22 22   externalIPs: []
23 - # - 10.20.30.40
24 - # - 10.20.30.41
25 - # Reference: https://kubernetes.io/docs/reference/networking/virtual-ips/#session-affinity
26 26   sessionAffinity: ClientIP
27 27  resources:
28 28   limits:
... ... @@ -36,7 +36,6 @@
36 36   - -Xms1024m
37 37   - -Xmx6000m
38 38  
39 -# Enable to choose witch kind of workload will be used: (true) StatefulSet or (false) for Deployment
40 40  workloadStateful: true
41 41  
42 42  securityContext:
... ... @@ -65,36 +65,20 @@
65 65   type: "RuntimeDefault"
66 66   enabled: true
67 67  
68 -##
69 -## MySql chart configuration
70 -##
71 -## https://github.com/bitnami/charts/tree/main/bitnami/mysql
72 -##
73 73  mysql:
74 - ## Whether to deploy a mysql server. Set false for a different database.
75 75   enabled: true
76 76   image:
77 77   tag: "8.0-debian-12"
78 78   pullPolicy: "IfNotPresent"
79 79   auth:
80 - rootPassword: "Wxv11dZmzw4YIozxj1"
81 - username: "xwiki"
82 - password: "3N5NBYnb5VQfDA2gde"
83 - database: "xwiki"
63 + rootPassword: "ROOT_PASSWORD_CHANGEME !!!"
64 + username: "USERNAME_CHANGEME !!!"
65 + password: "USER_PASSWORD_CHANGEME !!!"
66 + database: "DB_NAME_CHANGEME !!!"
84 84   initdbScripts:
85 85   00-init.sql: |
86 86   grant all privileges on *.* to xwiki@'%'
87 87   primary:
88 - # initContainers:
89 - # - name: "fix-non-root-permissions"
90 - # image: "busybox"
91 - # imagePullPolicy: "IfNotPresent"
92 - # command: [ "chown", "-R", "30001:30001", "/opt/bitnami" ]
93 - # volumeMounts:
94 - # - name: conf
95 - # mountPath: /opt/bitnami
96 - # Changed to use UTF8mb4, check future versions if this was already changed.
97 - # TODO: review explicit_defaults_for_timestamp
98 98   configuration: |-
99 99   [mysqld]
100 100   default_authentication_plugin=mysql_native_password
... ... @@ -145,25 +145,12 @@
145 145   seccompProfile:
146 146   type: "RuntimeDefault"
147 147  
148 -mariadb:
149 - enabled: false
150 -
151 -postgresql:
152 - enabled: false
153 -
154 -solr:
155 - enabled: false
156 -
157 -# To use ingress for routing set ingress.enabled value to true and istio.enabled value to false
158 158  ingress:
159 159   enabled: true
160 160   className: nginx
161 161   annotations:
162 162   kubernetes.io/ingress.class: nginx
163 -# nginx.ingress.kubernetes.io/whitelist-source-range: "152.67.64.124/32, 178.255.149.139/32"
164 164   cert-manager.io/cluster-issuer: letsencrypt-prod
165 - # kubernetes.io/tls-acme: "true"
166 - # ingress.kubernetes.io/rewrite-target: /
167 167   hosts:
168 168   - host: wiki.behemoth.co.il
169 169   paths:
... ... @@ -174,9 +174,6 @@
174 174   hosts:
175 175   - wiki.behemoth.co.il
176 176  
177 -istio:
178 - enabled: false
179 -
180 180  persistence:
181 181   enabled: true
182 182   storageClass: "behemoth-xwiki-www"
... ... @@ -184,19 +184,6 @@
184 184   - ReadWriteOnce
185 185   size: "5Gi"
186 186  
187 -podDisruptionBudget:
188 - enabled: false
189 -
190 -glowroot:
191 - enabled: false
192 -
193 -logback:
194 - enabled: false
195 -
196 -autoscaling:
197 - enabled: false
198 -
199 -# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
200 200  probes:
201 201   startup:
202 202   enabled: true
... ... @@ -216,7 +216,6 @@
216 216   initialDelaySeconds: 30
217 217   timeoutSeconds: 3
218 218   periodSeconds: 30
219 - # 5 minutes
220 220   failureThreshold: 10
221 221   successThreshold: 1
222 222   readiness:
... ... @@ -227,13 +227,9 @@
227 227   initialDelaySeconds: 30
228 228   timeoutSeconds: 3
229 229   periodSeconds: 30
230 - # 5 minutes
231 231   failureThreshold: 10
232 232   successThreshold: 1
233 233  
234 -infinispan:
235 - enabled: false
236 -
237 237  prometheus:
238 238   javaagent:
239 239   # https://github.com/prometheus/jmx_exporter
... ... @@ -240,3 +240,23 @@
240 240   # Enable to download and use this agent
241 241   enabled: true
242 242  
182 +podDisruptionBudget:
183 + enabled: false
184 +
185 +solr:
186 + enabled: false
187 +istio:
188 + enabled: false
189 +
190 +glowroot:
191 + enabled: false
192 +
193 +logback:
194 + enabled: false
195 +
196 +autoscaling:
197 + enabled: false
198 +
199 +infinispan:
200 + enabled: false
201 +