La documentation c'est bon, mangez en :)
Wiki.js est un wiki moderne qui bien que toujours en développement propose déjà de nombreuses fonctionnalités. L’interface est claire est rapide d’utilisation. Malheureusement la documentation ne propose pas encore de fichier YML pour le déployer sur Kubernetes.
On commence par créer un namespace dédié à notre wiki
apiVersion: v1
kind: Namespace
metadata:
name: wikijs
labels:
name: wikijs
J’ai choisi de le configurer avec MariaDB et un stockage sur un volume local.
---
apiVersion: v1
kind: Service
metadata:
name: mariadb
namespace: wikijs
spec:
selector:
app: mariadb
ports:
- name: mariadb
protocol: TCP
port: 3306
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mariadb
namespace: wikijs
labels:
app: mariadb
spec:
selector:
matchLabels:
app: mariadb
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb:10.4
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mariadb-secret
key: ROOT_PASSWORD
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: mariadb-secret
key: DATABASE
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mariadb-secret
key: USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mariadb-secret
key: PASSWORD
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mariadb-storage
mountPath: /var/lib/mysql
volumes:
- name: mariadb-storage
hostPath:
path: /var/wikijs
type: Directory
Nous allons maintenant configurer Wiki.js. À noter, le paramètre imagePullPolicy configuré à Always afin de toujours récupérer la dernière version de l’image.
---
apiVersion: v1
kind: Service
metadata:
name: "wikijs"
namespace: wikijs
spec:
ports:
- name: http
port: 3000
selector:
app: "wikijs"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wikijs
namespace: wikijs
labels:
app: wikijs
spec:
selector:
matchLabels:
app: wikijs
template:
metadata:
labels:
app: wikijs
spec:
containers:
- name: wikijs
image: requarks/wiki:beta
imagePullPolicy: Always
env:
- name: DB_TYPE
value: "mariadb"
- name: DB_HOST
value: "mariadb"
- name: DB_PORT
value: "3306"
- name: DB_NAME
valueFrom:
secretKeyRef:
name: mariadb-secret
key: database
- name: DB_USER
valueFrom:
secretKeyRef:
name: mariadb-secret
key: USER
- name: DB_PASS
valueFrom:
secretKeyRef:
name: mariadb-secret
key: PASSWORD
ports:
- containerPort: 3000
name: http
Il ne nous manque plus que le fichier de configuration de MariaDB qui contient la nom de la base de données, l’utilisateur et les mots de passe.
apiVersion: v1
kind: Secret
metadata:
name: mariadb-secret
namespace: wikijs
type: Opaque
data:
ROOT: cGFzc3dvcmQ=
DATABASE: d2lraWpz
USER: d2lraWpz
PASSWORD: cGFzc3dvcmQ=
N’oubliez pas de changer au moins les mots de passe (ROOT et PASSWORD), ils doivent être encodés en base 64. Pour générer la chaîne de caractères en base64, sur GNU/Linux or sur Mac :
echo -n 'votrechaine' | base64
Mettez tout dans un fichier YML (wikijs.yml dans l’exemple) et déployez
kubectl apply -f wikijs.yml
Votre wiki est maintenant accessible à l’adresse http://wikijs.wikijs.svc.cluster.local:3000, il ne vous reste plus qu’à configurer votre reverse proxy (par exemple Nginx) pour y accéder.