A Traefik Hackaethon

Mis a jours le 27 Oct 2020 à 16:00 · 619 mots · Lecture en 3 minutes golang hackathon traefik fun

The beginning of a long story

At The root of this story, I, one of the author (Tom Moulard). I used Traefik for my home server configuration and I was looking for an internship. On my journey, I stumbled upon a Traefik Hackaethon, a fun project with a cash prize and mainly goodies \o/

Looking for a team, I looked for some of the best student to come working with me. And I found:

We are a team of EPITA student in the TCOM major, and we are all working as teachers assistants to prepare and teach practical courses on our fields of studies.

We had a master plan to have fun in this hackaethon. First we build a “small” plugin to warm up on Tuesday and then the big project to really have fun during those three days.

The plan:

TuesdayWarm up and try a simple plugin
WednesdayImplement all main features
ThursdayGo full hardcore and fix every bug

During this time, we even did some gophers (Go mascots) for each of us.

Tom MoulardClément DavidMartin HuvelleAlexandre Bossut-Lasry

Day 1, The warm up.

We had a demo from Kevin Crawley a few days prior the Tuesday.

It was a demo on how to add a Header on a request. Thus, starting from there, managing headers was an easy task for us. Therefore we made htransformation.

htranformation github card

By the end of the day, we published the plugin on traefik pilot.

Day 2, Some dark times

Wednesday morning, the dark time of our hackatheon. We needed an idea, not only an idea that would be fun (believe me we had a lot) but one that would be useful ! We had a lot of chat with one of the organizer (Thank you Santo for all of your help, support and motivation !). After a lot of “Santo! We got an idea !!!” and a “Yeah that’s sounds fun but what would be the purpose of this?” we finally extract the idea of “fail2ban” integration.

To be sure that no one had did this, as usual we check github, traefik etc. Nothing, until we check discord, our future teammate Mike had the same idea. So we decided to team up (We didn’t know how much it would be a good idea) !

Day 3, A happy ending

After a lot of hours, thinking about the design and coding every piece of the plugin, combine every part we each created. We had one last bug, we tried everything, review every lines with differents people at each time. Last helping call, we ask the discord about our issue, of course after few second we post, we managed to solve it and of course the patch was “use caps for your config variables”. Typical, we even stumbled upon this reflection for the first plugin.

The plugin worked, all of the tests displayed “PASSED”, we did it !

The last job we had was to push the plugin Fail2Ban on traefik pilot.

Fail2ban github card

We were proud and we learn a lot in a very short period of time but what we didn’t know was the next mail which arrived at midnight the next day. I looked quickly thinking it was a simple mail which thanks us to participate but the mention “I would like to proudly announce that you have won FIRST PLACE!!” did not sound usual for a “thanks for your participation” kind of mail.

Wrapping up

We’d like to thanks Traefik for organizing this amazing event ! And EPITA for providing the structure to hold us during theses difficult times.

Thanks to this experience, we became Traefik Ambassador !

We are Traefik Ambassador

Image de l'auteur Tom Moulard

L'auteur:  Tom Moulard

Depuis mon enfance, je suis captivé par les articles de science et de technologie. Un jour, j'ai décidé de faire partie de ce monde : j'ai pris ma calculatrice programmable (une TI-82 stat).... La suite, sur mon site

Image de l'auteur Martin Huvelle

L'auteur:  Martin Huvelle

J'ai toujours été obsédé par l'idée de créer, d'arriver à concrétiser sous n'importe quel format possible les idées qui émergent dans ma tête. L'informatique m'a permis d'étendre les possibilités, de régler des problèmes concrets, d'avoir un coup d'avance.

Vous avez vu une erreur ? Quelque chose ne va pas ? Vous pouvez contribuer à cette page sur GitHub ou laisser un commentaire en dessous. Merci d'être passé par là :)