Changes for page XWiki (Helm)
Last modified by Itzhak Daniel on 2024/04/29 16:35
From version 12.1
edited by Itzhak Daniel
on 2024/04/29 00:08
on 2024/04/29 00:08
Change comment:
Uploaded new attachment "pv_storage.yaml", version 1.1
To version 9.1
edited by Itzhak Daniel
on 2024/04/28 21:16
on 2024/04/28 21:16
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 2 removed)
Details
- Page properties
-
- Content
-
... ... @@ -30,7 +30,7 @@ 30 30 31 31 === Note about Storage === 32 32 33 -Behemoth LTD is running an on-prem Kubernetes solution, we (currently) don't have any shared storage solution ([[ceph>>https://docs.ceph.com/]], [[nfs>>https://github.com/kubernetes-csi/csi-driver-nfs]], [[...>>https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner]]) , which require two things from us:33 +Behemoth LTD is running an on-prem Kubernetes solution, we (currently?) don't have any shared storage solution ([[ceph>>https://docs.ceph.com/]], [[nfs>>https://github.com/kubernetes-csi/csi-driver-nfs]], [[...>>https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner]]) , which require two things: 34 34 35 35 1. Creating the path/loop device prior of creating PV. 36 36 1. The PV is manually created. ... ... @@ -84,70 +84,7 @@ 84 84 85 85 === Deploy === 86 86 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 - 89 -After the path/loop devices were created, create the PVs: 90 - 91 -{{code language="sh" layout="LINENUMBERS" title="# kubectl stdin"}} 92 -kubectl create -f - <<EOF 93 ---- 94 -kind: PersistentVolume 95 -apiVersion: v1 96 -metadata: 97 - name: behemoth-xwiki-db 98 - namespace: behemoth-wiki 99 - labels: 100 - type: behemoth-xwiki-db 101 -spec: 102 - storageClassName: behemoth-xwiki-db 103 - capacity: 104 - storage: 5Gi 105 - accessModes: 106 - - ReadWriteOnce 107 - hostPath: 108 - path: "/mnt/kubenernetes/behemoth-xwiki/db" 109 - nodeAffinity: 110 - required: 111 - nodeSelectorTerms: 112 - - matchExpressions: 113 - - key: kubernetes.io/hostname 114 - operator: In 115 - values: 116 - - k8s-uk-2 117 - 118 ---- 119 -kind: PersistentVolume 120 -apiVersion: v1 121 -metadata: 122 - name: behemoth-xwiki-www 123 - namespace: behemoth-wiki 124 - labels: 125 - type: behemoth-xwiki-www 126 -spec: 127 - storageClassName: behemoth-xwiki-www 128 - capacity: 129 - storage: 5Gi 130 - accessModes: 131 - - ReadWriteOnce 132 - hostPath: 133 - path: "/mnt/kubenernetes/behemoth-xwiki/www" 134 - nodeAffinity: 135 - required: 136 - nodeSelectorTerms: 137 - - matchExpressions: 138 - - key: kubernetes.io/hostname 139 - operator: In 140 - values: 141 - - k8s-uk-2 142 -EOF 143 -{{/code}} 144 - 145 -This will create 2 PVs that we'll use later. Notice //nodeAffinity//, linking the deployment to a specific node (the pods can run only at that location, as the PV is defined only there). 146 - 147 -Download the Charts and Values file: 148 - 149 - 150 - 87 +We're going to deploy XWiki as a [[statefulset>>https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/]], the Database (MySQL) and the App, each will have a volume to store their content. 151 151 ))) 152 152 153 153 (% class="col-xs-12 col-sm-4" %)
- Dockerfile
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.itzhak - Size
-
... ... @@ -1,1 +1,0 @@ 1 -6.6 KB - Content
-
... ... @@ -1,122 +1,0 @@ 1 -# --------------------------------------------------------------------------- 2 -# See the NOTICE file distributed with this work for additional 3 -# information regarding copyright ownership. 4 -# 5 -# This is free software; you can redistribute it and/or modify it 6 -# under the terms of the GNU Lesser General Public License as 7 -# published by the Free Software Foundation; either version 2.1 of 8 -# the License, or (at your option) any later version. 9 -# 10 -# This software is distributed in the hope that it will be useful, 11 -# but WITHOUT ANY WARRANTY; without even the implied warranty of 12 -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 -# Lesser General Public License for more details. 14 -# 15 -# You should have received a copy of the GNU Lesser General Public 16 -# License along with this software; if not, write to the Free 17 -# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 18 -# 02110-1301 USA, or see the FSF site: http://www.fsf.org. 19 -# --------------------------------------------------------------------------- 20 -FROM tomcat:9-jre17 21 - 22 -# ____ ____ ____ ____ _ __ _ 23 -# |_ _||_ _||_ _| |_ _|(_) [ | _ (_) 24 -# \ \ / / \ \ /\ / / __ | | / ] __ 25 -# > `' < \ \/ \/ / [ | | '' < [ | 26 -# _/ /'`\ \_ \ /\ / | | | |`\ \ | | 27 -# |____||____| \/ \/ [___][__| \_][___] 28 - 29 -LABEL org.opencontainers.image.authors='XWiki Development Team <committers@xwiki.org>' 30 -LABEL org.opencontainers.image.url='https://hub.docker.com/_/xwiki' 31 -LABEL org.opencontainers.image.documentation='https://hub.docker.com/_/xwiki' 32 -LABEL org.opencontainers.image.source='https://github.com/xwiki/xwiki-docker.git' 33 -LABEL org.opencontainers.image.vendor='xwiki.org' 34 -LABEL org.opencontainers.image.licenses='LGPL-2.1' 35 - 36 -# Note: when using docker-compose, the ENV values below are overridden from the .env file. 37 - 38 -# Install LibreOffice + other tools 39 -# Note that procps is required to get ps which is used by JODConverter to start LibreOffice 40 -RUN apt-get update && \ 41 - apt-get --no-install-recommends -y install \ 42 - curl \ 43 - libreoffice \ 44 - unzip \ 45 - procps && \ 46 - rm -rf /var/lib/apt/lists/* 47 - 48 -# Install XWiki as the ROOT webapp context in Tomcat 49 -# Create the Tomcat temporary directory 50 -# Configure the XWiki permanent directory 51 -ENV XWIKI_VERSION="16.2.0" 52 -ENV XWIKI_URL_PREFIX "https://maven.xwiki.org/releases/org/xwiki/platform/xwiki-platform-distribution-war/${XWIKI_VERSION}" 53 -ENV XWIKI_DOWNLOAD_SHA256 7d355ae1c88691b19af9658e3f042083d57c08d5e52e1ade25536536ad72fb3f 54 -RUN rm -rf /usr/local/tomcat/webapps/* && \ 55 - mkdir -p /usr/local/tomcat/temp && \ 56 - mkdir -p /usr/local/xwiki/data && \ 57 - curl -fSL "${XWIKI_URL_PREFIX}/xwiki-platform-distribution-war-${XWIKI_VERSION}.war" -o xwiki.war && \ 58 - echo "$XWIKI_DOWNLOAD_SHA256 xwiki.war" | sha256sum -c - && \ 59 - unzip -d /usr/local/tomcat/webapps/ROOT xwiki.war && \ 60 - rm -f xwiki.war 61 - 62 -# Copy the JDBC driver in the XWiki webapp 63 -# We take the database driver version from the Maven Central repository since we want to control the version 64 -# used and have it being consistent with what is tested in the CI. 65 -ENV MYSQL_JDBC_VERSION="8.3.0" 66 -ENV MYSQL_JDBC_SHA256="94e7fa815370cdcefed915db7f53f88445fac110f8c3818392b992ec9ee6d295" 67 -ENV MYSQL_JDBC_PREFIX="https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${MYSQL_JDBC_VERSION}" 68 -ENV MYSQL_JDBC_ARTIFACT="mysql-connector-j-${MYSQL_JDBC_VERSION}.jar" 69 -ENV MYSQL_JDBC_TARGET="/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/${MYSQL_JDBC_ARTIFACT}" 70 -RUN curl -fSL "${MYSQL_JDBC_PREFIX}/${MYSQL_JDBC_ARTIFACT}" -o $MYSQL_JDBC_TARGET && \ 71 - echo "$MYSQL_JDBC_SHA256 $MYSQL_JDBC_TARGET" | sha256sum -c - 72 - 73 -# Configure Tomcat. For example set the memory for the Tomcat JVM since the default value is too small for XWiki 74 -COPY tomcat/setenv.sh /usr/local/tomcat/bin/ 75 - 76 -# Setup the XWiki Hibernate configuration 77 -COPY xwiki/hibernate.cfg.xml /usr/local/tomcat/webapps/ROOT/WEB-INF/hibernate.cfg.xml 78 - 79 -# Set a specific distribution id in XWiki for this docker packaging. 80 -RUN sed -i 's/<id>org.xwiki.platform:xwiki-platform-distribution-war/<id>org.xwiki.platform:xwiki-platform-distribution-docker/' \ 81 - /usr/local/tomcat/webapps/ROOT/META-INF/extension.xed 82 - 83 -# Add scripts required to make changes to XWiki configuration files at execution time 84 -# Note: we don't run CHMOD since 1) it's not required since the executabe bit is already set in git and 2) running 85 -# CHMOD after a COPY will sometimes fail, depending on different host-specific factors (especially on AUFS). 86 -COPY xwiki/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh 87 - 88 -# Make the XWiki directory (the permanent directory is included in it) persist on the host (so that it's not recreated 89 -# across runs) 90 -VOLUME /usr/local/xwiki 91 - 92 -# Added by Behemoth LTD - Apr 28th, 2024 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/webapps 95 -USER 30001:30001 96 - 97 -# At this point the image is done and what remains below are the runtime configuration used by the user to configure 98 -# the container that will be created out of the image. Namely the user can override some environment variables with 99 -# docker run -e "var1=val1" -e "var2=val2" ... 100 -# The supported environment variables that can be overridden are: 101 -# - DB_USER: the name of the user configured for XWiki in the DB. Default is "xwiki". This is used to configure 102 -# xwiki's hibernate.cfg.xml file. 103 -# - DB_PASSWORD: the password for the user configured for XWiki in the DB. Default is "xwiki". This is used to 104 -# configure xwiki's hibernate.cfg.xml file. 105 -# - DB_DATABASE: the name of the database to use. Default is "xwiki". This is used to configure xwiki's 106 -# hibernate.cfg.xml file. 107 -# - DB_HOST: The name of the host (or docker container) containing the database. Default is "db". This is used to 108 -# configure xwiki's hibernate.cfg.xml file. 109 -# - CONTEXT_PATH: The name of the context path under which XWiki will be deployed in Tomcat. If not specified then it'll 110 -# be deployed as ROOT. 111 -# - JDBC_PARAMS: Replaces the default JDBC parameters with the passed ones. 112 - 113 -# Example: 114 -# docker run -it -e "DB_USER=xwiki" -e "DB_PASSWORD=xwiki" <imagename> 115 - 116 -# Starts XWiki by starting Tomcat. All options passed to "docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]" 117 -# are also passed to docker-entrypoint.sh. If "xwiki" is passed then XWiki will be configured the first time the 118 -# container executes and Tomcat will be started. If some other parameter is passed then it'll be executed to comply 119 -# with best practices defined at https://github.com/docker-library/official-images#consistency. 120 -ENTRYPOINT ["docker-entrypoint.sh"] 121 -CMD ["xwiki"] 122 -
- pv_storage.yaml
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.itzhak - Size
-
... ... @@ -1,1 +1,0 @@ 1 -999 bytes - Content
-
... ... @@ -1,50 +1,0 @@ 1 ---- 2 -kind: PersistentVolume 3 -apiVersion: v1 4 -metadata: 5 - name: behemoth-xwiki-db 6 - namespace: behemoth-wiki 7 - labels: 8 - type: behemoth-xwiki-db 9 -spec: 10 - storageClassName: behemoth-xwiki-db 11 - capacity: 12 - storage: 5Gi 13 - accessModes: 14 - - ReadWriteOnce 15 - hostPath: 16 - path: "/mnt/kubenernetes/behemoth-xwiki/db" 17 - nodeAffinity: 18 - required: 19 - nodeSelectorTerms: 20 - - matchExpressions: 21 - - key: kubernetes.io/hostname 22 - operator: In 23 - values: 24 - - k8s-2 25 - 26 ---- 27 -kind: PersistentVolume 28 -apiVersion: v1 29 -metadata: 30 - name: behemoth-xwiki-www 31 - namespace: behemoth-wiki 32 - labels: 33 - type: behemoth-xwiki-www 34 -spec: 35 - storageClassName: behemoth-xwiki-www 36 - capacity: 37 - storage: 5Gi 38 - accessModes: 39 - - ReadWriteOnce 40 - hostPath: 41 - path: "/mnt/kubenernetes/behemoth-xwiki/www" 42 - nodeAffinity: 43 - required: 44 - nodeSelectorTerms: 45 - - matchExpressions: 46 - - key: kubernetes.io/hostname 47 - operator: In 48 - values: 49 - - k8s-2 50 -