MediaWiki
Una forma de documentar prácticamente cualquier cosa es utilizar una Wiki, estas son prácticamente una hoja en blanco donde podemos construir las plantillas que queramos, con un buscador de serie y capacidad para editar.
De entre todas las Wikis disponibles, MediaWiki es la utilizada en la Wikipedia. Esto no la convierte en la mejor, pero la gente la conoce así que es más sencillo empezar.
Además, dispone de una lista bastante ampliar de plugins para adaptar a lo que necesitemos.
Requisitos
MediaWiki requiere de MariaDB. Se utilizará el existente en vez de que proviene el Helm.
Los datos y plugins se almacenan en un volumen de Longhorn. Tanto la instalación de plugis como la configuración (que se encuentra en el fichero LocalSettings.php
) requieren modificar los datos directamente en el volumen, pero Longhorn no tiene una forma propia para "acceder" a los ficheros. A esto se añade que los contenedores de Bitnami no permiten el uso de debug
o attach
para acceder al volumen. Esto nos da la opción de añadir un sidecar en el despliegue o crear un contenedor temporal con acceso al mismo volumen, siendo más sencilla la segunda opción.
Despliegue
Más detalles en Artifact Hub.
Añadimos el repositorio.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Creamos un volumen independiente del despliegue.
vi mediawiki-pvc.yaml
Este volumen tiene que permitir ser accedido desde diferentes pods.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mediawiki
spec:
accessModes:
- ReadWriteMany
storageClassName: longhorn
resources:
requests:
storage: 2Gi
Definimos el fichero de propiedades.
vi mediawiki-values.yaml
Configuramos MediaWiki, SMTP y MariaDB externo.
mediawikiUser: admin
mediawikiPassword: "admindamin"
mediawikiEmail: [email protected]
mediawikiName: My Wiki
mediawikiHost: "wiki.domain.cat"
allowEmptyPassword: no
smtpHost: "smtp-relay.email-relay-mngmt"
smtpPort: "25"
persistence:
enabled: true
existingClaim: mediawiki
service:
type: ClusterIP
ingress:
enabled: true
ingressClassName: nginx-extranet
hostname: wiki.domain.cat
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 256m
mariadb:
enabled: false
externalDatabase:
host: database.domain.intranet
port: 3306
user: user
password: password
database: wiki
La contraseña debe tener 8 caracteres o más. Si no es correcta, el proceso se quedará atascado en la tarea de instalación.
Si hemos configurado el SMTP, añadimos el acceso.
vi mediawiki-allow-relay.yaml
Abrimos acceso al nuevo servicio en su namespace.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-mediawiki
namespace: email-relay-mngmt
spec:
podSelector:
matchLabels:
app.kubernetes.io/instance: smtp-relay
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: mediawiki
podSelector:
matchLabels:
app.kubernetes.io/instance: mediawiki
ports:
- protocol: TCP
port: 25
Aplicamos todos los cambios.
kubectl create namespace mediawiki
kubectl apply -f mediawiki-pvc.yaml -n mediawiki
helm install mediawiki bitnami/mediawiki -f mediawiki-values.yaml -n mediawiki
kubectl apply -f mediawiki-allow-relay.yaml
Configuración
Tanto la configuración como los plugins requieren acceso al volumen para modificar y subir nuevos ficheros. Para facilitar el proceso, se crea un pod temporal con acceso al mismo volumen, y en este se instalará cualquier herramienta que necesitemos.
Definimos el pod.
vi mediawiki-pod.yaml
El pod es un nginx con base Debian y acceso root. Esto nos da un pod que se mantiene activo, con capacidad para instalar y acceso al volumen en /data/mediawiki
.
apiVersion: v1
kind: Pod
metadata:
name: temp
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: storage
mountPath: /data
volumes:
- name: storage
persistentVolumeClaim:
claimName: mediawiki
Desplegamos el pod.
kubectl apply -f mediawiki-pod.yaml -n mediawiki
Una vez desplegamos, accedemos al pod e instalamos cualquier editor.
kubectl exec -it -n mediawiki temp -- /bin/bash
Recordar borrarlo tras terminar la configuración.
LocalSettings.php
El fichero maestro de configuración es el LocalSettings.php
. Según lo que queramos configurar habrá que ajustar unas partes u otras.
Esta es una lista de links hacia la documentación de los más típicos:
- Logos
- Favicon
- Cambiar extensiones soportadas para subir
- Permisos de usuarios
- Iniciar plugins
- Plugin: Editor
Algunos cambios requieren reiniciar el pod de MediaWiki.
La lista de plugins activos se muestra en la pantalla de versión:
https://wiki.domain.cat/wiki/Special:Version
Algunos plugins requieren actualizar el sistema, por ejemplo, para crear nuevas tablas en la base de datos. Tras activar el plugin se debe acceder al pod de MediaWiki y lanzar el siguiente comando:
php /opt/bitnami/mediawiki/maintenance/update.php