Previous Article Next Article Wiki.js et Kubernetes
Posted in Site Système

Wiki.js et Kubernetes

Wiki.js et Kubernetes Posted on 4 juillet 2019Leave a comment
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.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *