Une problématique récurrente que je rencontre lorsque je monte un nouveau porte-conteneur LXD est la suivante.

Je pars du principe que mon porte-conteneur ne doit rien faire d’autre que porter mes conteneurs, par exemple le haproxy (ou tout autre système de loadbalancing) ne doit pas être installé sur le porte-conteneur mais bien dans un conteneur.

Avant, je redirigeais mes ports (80/3000/443/3306) via iptables, sur le bon conteneur.

J’ai découvert quelque chose de bien plus simple et utilisant LXD.

Le scénario

Imaginons le contexte suivant. Vous venez de déployer un nouveau porte-conteneur, sur lequel vous avez lancé 3 conteneurs :

  • Un haproxy
  • Un mysql/mariadb
  • Un apache/nginx

Vous souhaitez donc que lorsqu’on arrive sur la patte WAN du porte-conteneur sur le port 80, on soit redirigé sur la patte LAN du conteneur haproxy, toujours sur le port 80.

La solution

Je vous la donne tout de go:

lxc config device add mon-conteneur-haproxy mydevice80 proxy listen=tcp:0.0.0.0:80 connect=tcp:localhost:80

Ceci créé une « device » nommée mydevice80 qui sera bindée via un proxy au port 80 du porte-conteneur, sur l’interface 0.0.0.0, soit toutes les interfaces.

On peut bien évidemment limiter à la seule interface voulue en modifiant le paramètre listen.

De ce fait, en arrivant sur le port 80 du porte-conteneur…

Internet -> instance:80 -> monconteneurhaproxy:80

Nous le voyons d’ailleurs dans un affichage des connexions du porte-conteneur:

LISTEN  0        128                                          *:80                  *:*      users:((« lxd »,pid=1554,fd=6),(« lxd »,pid=1554,fd=4))  

Vous pouvez voir les devices d’un conteneur avec la commande suivante :lxc config device show <container>

lxc config device show <container>

Il est à noter que les devices créées sont persistantes au reboot du porte-conteneur.

Vous pouvez retirer ce paramétrage via la modification inverse:

lxc config device remove mon-conteneur-haproxy mydevice80

mon-conteneur-haproxy est le nom de votre conteneur et mydevice80 le nom de la device créée.

Conclusion

J’en profite pour vous souhaiter d’excellentes fêtes de fin d’année, ainsi que de bien débuter 2019.

Et comme dirait un grand homme: « go build » 😉


Laisser un commentaire

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