Kubernetes et Emby Server

Preparation

Passer 32Go de la ZFS de Proxmox au ubuntu qui host kubernetes

Dans TrueNas exposer /mnt/Magneto/9-VideoClub en SMB

Passer la carte Graphic a ubuntu

Installation filesystem

installation de Cifs et edition de fstab pour monter automatiquement le share truenas

sudo apt install cifs-utils
sudo nano /etc/fstab

//192.168.1.46/9-VideoClub /Videoclub cifs uid=0,credentials=/home/david/.smb,iocharset=utf8,noperm 0 0

Cree une partion sur le disk de 32Go provenant de Proxmox via fdisk , formater en ext4 et monter cette partion sur le filesystem /usr/kubedata

sudo nano /etc/fstab

/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part1 /usr/kubedata ext4 defaults    0 0

deployement

La commande docker avec le filesystem preparé

sudo docker run -d \
    --name embyserver \
    --volume /usr/kubedata/embyserver/config:/config \
    --volume /Videoclub:/mnt/videoclub \
    --net=host \
    --device /dev/dri:/dev/dri \
    --publish 8096:8096 \
    --publish 8920:8920 \
    --env UID=1000 \
    --env GID=100 \
    --env GIDLIST=100 \
    emby/embyserver:latest

traduction en kubernetes deploy :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: embyserver 
  namespace: default
  labels:
    app: emby
spec:
  replicas: 1
  selector:
    matchLabels:
      app: emby
  template:
    metadata:
      labels:
        run: embyserver 
        app: emby
    spec:
      containers:
      - name: embyserver 
        image: emby/embyserver:latest
        env:
          - name: "UID"
            value: "1000"
          - name: "GID"
            value: "100" 
          - name: "GIDLIST"
            value: "100" 
        ports:
        - containerPort: 8096
          name: emby-http
        - containerPort: 8920
          name: emby-https
        volumeMounts:
        - mountPath: /config
          name: emby-config
        - mountPath: /mnt/videoclub
          name: emby-media
      volumes:
      - name: emby-media
        hostPath:
          type: Directory
          path: /Videoclub
      - name: emby-config
        hostPath:
          type: DirectoryOrCreate
          path: /usr/kubedata/embyserver/config
---
apiVersion: v1
kind: Service
metadata:
  name: emby
spec:
  selector:
    app: emby
  ports:
    - name: "http"
      port: 8096
      targetPort: 8096
    - name: "https"
      port: 8920
      targetPort: 8920
  type: NodePort

puis on recupere le recupere le port d’exposition

kubectl get all --all-namespaces | grep emby

resultat le dashboard est accecible https://<master-ip>:30647

Reflexion Data Pool

je poursuis la reflexion sur la repartition de disques.

Je m’arrete sur une repartition de ce type:

1-Serveur

dataset regroupant tout ce qui concerne le serveur

  • Le system (proxmox / ubuntu serveur / kubernetes / true nas)
  • les params (docker / vm)

2-NetLife

replication des site web et depot de données sur le Net

5-Documents

tout les documents , creation , code source , modele , papier , reference . regroupé dans 4 categorie

  • Active : projet/repertoire qui sont en cours
  • Retention : projet/repertoire consultable ou de reference
  • Archive : n’est plus utilisé mais encore conserver (repertoire zipper)
  • IceStorage : conservation long repertoire zipper

8-Photo

Toutes les photos , y compris le dataset 00-CheckIn on sont rassemble en automatique les photo des telephone

9-VideoClub

  • cyclops/1-Serveur
  • cyclops/1-Serveur/10-System
  • cyclops/1-Serveur/20-Param
  • cyclops/2-NetLife
  • cyclops/2-NetLife/50-WebSite
  • cyclops/2-NetLife/60-Git
  • diablo/5-Documents
  • diablo/5-Documents/10-Active
  • diablo/5-Documents/50-Rentention
  • diablo/5-Documents/80-Archive
  • diablo/5-Documents/90-IceStorage
  • diablo/8-Photo
  • diablo/8-Photo/00-CheckIn
  • diablo/8-Photo/50-Phototheque
  • magneto/9-VideoClub
  • magneto/9-VideoClub/10-Film
  • magneto/9-VideoClub/20-Film_Vf
  • magneto/9-VideoClub/30-Series
  • magneto/9-VideoClub/40-Anime
  • magneto/9-VideoClub/90-Insanity

Reorg DataPool

Sur les 5 disk , 3 sont interne et 2 sont en USB

sudo fdisk -l | grep "Disk /"
sudo blkid -o list

Les 2 usb (500 et 300 Go) serve de tempon pour reorganiser le system de fichier.

Comme je n’ai que des disques unique je ne fais pas de redondance (Raid)

Diablo 1To

0,850 Redondance

  • 0.500 Backup Photo
  • 0.003 Backup Git
  • 0.100 ~Backup System
  • 0.050 ~Backup SiteWeb
  • 0,200 ~Backup DataPool

0,150 IceStorage

  • 0.020 ~IceStorage

Magneto 2To

VideoClub

  • 1.160 Videoclub
  • 0.168 VideoclubSerie
  • 0.013 VideoclubAnime
  • 0.306 VideoClubVF

Cyclops 4To

DataPool

  • 0.004 Mediarack
  • 0.011 Home_Desk
  • 0.111 Locker
  • 0.002 Office
  • 0.009 Kitchen
  • 0,014 OldMail
  • 0.030 ~DeportEspaceProjet
  • 0.200 ~PhotoCheckIn

Configurer TrueNas

Une fois l’installation de TrueNAs términé , a partir de la console du PVE , on attache les disques necessaire pour TrueNas “/etc/pve/qemu-server/<VMID>. conf”

qm set 102 -scsi1 /dev/disk/by-id/ata-WDC_WD10EZRX-00D8PB0_WD-WCC4M0EE37RE
qm set 102 -scsi2 /dev/disk/by-id/ata-WDC_WD20EZRX-22D8PB0_WD-WCC4M7UHY201
qm set 102 -scsi5 /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5HL7SHY-part1
qm set 102 -scsi6 /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5HL7SHY-part2

On se connecter a la webinterface

installation disque/pool

Il faut des disque sans données pour crée une Pool de disque ZFS (tout les disques doivent etre de la meme taille

Tout mes diques sont differents , jutilise donc 2 mes disques Usb de secours pour initialiser 2 Pool (un par disque) un de 500 g0 et un de 300 go

Les donnes des disques seront effacer

Si les zfs existe deja on peut le importer

Creation des Datasets

On edite les permissions et il faut editer via ACL en utilisant le preset “OPEN”

Le proprietaire et ROOT et dans GROUP {un groupe a definir}

Creation user

On creé un user avec “Microsoft Account” et “Samba Authentification” et dans le groupe auxliaire “wheel” et {un groupe a definir}

Creation Share

Netwok Configuration

Il faut parametre la gateaway etait le rputer de la box et les namespaces etait le serveur dns de mon providers

Debugging

Pour faciliter le debug , j’active la console gui et le niveau debug