Kubernetes: proxy requests without additional pods

Sometimes you need to provide a legacy access to various downloads or proxy some requests to a different endpoint, that might not be running in your cluster. One can natively redirect such requests with having to add additional deployments / containers to your Kubernetes cluster. There is a special type of Kubernete’s service object that simply points any traffic to that external DNS name. This isn’t really document all too well but eventually you will find enough issues and pointers to frankenstein a solution together. For anybody else looking on how to do this correctly, here is run down with nginx-ingress-controller:0.19.0 that worked for me. First we create a normal ingress object, that allows us to terminate the SSL and look into the path of the HTTP request and decide if this is a request that is relevant to be proxied.  apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx kubernetes.io/tls-acme: “true” nginx.ingress.kubernetes.io/rewrite-target: “<your-bucket-namespace>” nginx.ingress.kubernetes.io/secure-backends: “true” name: artifacts spec: rules: – host: downloads.example.com http: paths: – path: “/artifacts/” backend: serviceName: proxy-artifacts servicePort: 443 tls: – secretName: tls hosts: – downloads.example.com Lets quickly take a look at what is going on here. We first configure our Ingress Controller to use nginx and […]

The road to Kubernetes

I finally wanted to setup my own kubernetes cluster as everyone I talk to, said its the hottest shit. I’m using three VMs, hosted at Netcup running the latest Debian 9 Stretch build. I’ve installed most basic tools for me and also already set up docker using this amazing ansible role. Make sure to disable any swap you have configured – kubelet will not start otherwise. The documentation on how to install things is pretty good, but I’ve missed some details, that I banged my head on, so I will copy most snippets over for future reference. Keep in mind, that this might have already changed and is no longer working at the time you read this. First install all needed CLI tools on each of the three hosts: apt-get update && apt-get install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add – cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl Start the systemd Service for kubelet, our kubernetes manager – also on every node. systemctl enable kubelet && systemctl start kubelet Now the docs are a bit unspecific, but here’s a command to set the correct cgroup on Debian 9.   […]

Bachelor thesis published

So in the last four months (October 2015 to January 2016) I had the pleasure to work with the team of students at Texas A&M university. I got to experience a whole different culture of studying and learning – a different approach to tackle the issues of the future.

Compared to German universities, Americans have adopted a class like education even in higher education. While we at the TUM have to aggregate and learn most of the material ourselves, students at A&M tend to get the content and materials prepared in form of text books.

My main goal was to work on my bachelor thesis though, where I looked at a new way to develop web applications using Meteor and Angular to integrate wearables into the web-experience.

You can download the thesis here. It’s also on the website of the “Lehrstuhl für Betriebssysteme”.

Featured on Codementor – 25 PHP Interview Questions

I’m glad to be part of the amazing community at codementor.io. In the past years I’ve been able to talk and help many different people with a range of problems. Often some hints and good advice was enough to point them in the right direction and I really enjoy teaching other people. Codementor recently approached me and asked me if I could contribute some questions from my experience in the last years to their blog post “25 PHP Interview Questions”. I’m happy they found my suggestions useful and featured me in that article! Hope it helps some developers that are just getting to know the world of PHP and all its hiccups. Don’t forget to check out my profile on codementor!

Der Erfolg von Cities: Skylines

Nachdem das Sim City von EA so ein Flopp war, ergab sich eine große Marktlücke. Mit Aktionen wie ‘nur Online spielbar’ und limitierter Spielfläche, die eher sehr mager war, hat man einfach nicht bei den Spielern Punkten können. Zwar wurden viele Dinge verbessert, aber gewisse Trade-Offs gemacht, welche das Spiel nicht zu einem Kassenschlager gemacht hat, obwohl die Vorfreude und Hoffnungen im Vorfeld enorm waren. Colosssal Order, hat in dem Moment die Ohren offen gehalten und mit dem Vorgänger Cities in Motion, der eher in Richtung von Transport Tyccon geht, eine solide Basis für ein Sim City gehabt. Folgende Punkte waren die größten Kritiken am alten Spiel: Online Zwang Limitierte Städte Größen Crappy traffic management City Interaktion ist zwar ein nettes Feature, aber keiner hat lust den Kontext zu wechseln und komplett von null anzufangen. Geld aus der Tasche ziehen mit DLC, der ein paar Wochen nach der Veröffentlichung verfügbar war Das Problem dabei ist folgendes: Gamer die solche Sims bzw. Strategie spiele zocken, sind Gelegenheitsspieler. Es geht nicht darum, immer die neueste Version zu spielen, sondern das Spiel muss gut und flüssig funktionieren. Der Trick mit DLC und Jährlich ‘neuer’ Shooter Edition (Siehe Call of Duty und Konsorten), funktioniert bei […]

Encoding videos for streaming on an Android device

I’ve been getting random hickups in playback when including a video in a webview on Android Kitkat (4.4.4). So I’ve been on this issue for quite some time now and couldn’t figure out why I was getting these messages in the verbose logcat: 2987-2998/com.xxx W/MediaPlayer﹕ info/warning (703, 38137) 2987-2987/com.xxx I/MediaPlayer﹕ Info (700,595) 2987-2998/com.xxx W/MediaPlayer﹕ info/warning (701, 0) 2987-2998/com.xxx W/MediaPlayer﹕ info/warning (702, 0) Especially the 700 error was what I focused on, cause it made no sense really. I’ve used Handbrake to encode the videos and selected the “android” preset. Unfortunately they’ve set the profile to ‘main’ instead of the suggested ‘baseline’ profile which is recommended. Took me a while to figure this out and including a lot of trial and error =/ Working now, anyways. Read more on the optimal settings here….

Serving files with access control (Apache/PHP)

When serving files over PHP often people end up using an incorrect implementation which is open to attacks or has really bad performance (especially with big files). Well you shouldn’t reinvent the wheel every time! When you are using Apache in the first place, why do you need to re-implement the feature, that Apache is best at? To avoid having to deal with complicated RFCs for HTTP Ranges and Caching use the Apache Module called xsendfile. Some apt magic and you are up an running: apt-get install libapache2-mod-xsendfile service apache2 restart Then add this to your vhost configuration: XSendFile on XSendFilePath /var/atis/Storage All set! To send a file via. PHP simply do this: header(‘X-Sendfile: ‘ . $file); header(‘Content-Type: ‘ . contentType($file)); header(‘Content-Disposition: inline;’); (Make sure you have a function to determine the contenttype of your file)    

Degeneration der Spieleindustrie

Seit Farmville auf Facebook haben Spiele mit der Pay2Win (oder auch Free2Play gennant) einen regelrechten Boom hingelegt. Man wird durch einen stetigen Fluss an Lob und Erfolgsgefühle dazu getrieben, weiter in ein Spiel mit echtem Geld zu investieren. Als erstes weit verbreitetes Spiel hat dies vor einigen Jahren Farmville gemacht. Durch geschicktes einsetzen von Sperrzeiten, welche mit Spielwährungen verkürzt oder gar entfernt werden konnten, schaffte man Reize Geld auszugeben. Dies war erstmalig so Erfolgreich, weil man ja bekanntlich “mit seinen Freunden gemeinsam” gespielt hat und somit des Nachbars Neid einen noch mehr befriedigt hat. Durch die Umwandlung von echtem Geld in Spielgeld den Bezug zur Wertigkeit. Dies haben bereits viele andere Anbieter von digitalen Gütern kapiert, wie etwa Microsoft in deren Xbox Universum. Vor allem junge Leute sind durch Virtuelle Währungen eher dazu verleitet dieses auszugeben. Am Ende des Tages ist es der Spieler der draufzahlt. Waren Spiele früher noch durch deren Spielkomplexität und nicht durch deren Aussehen erfolgreich, reicht es heute einen Vogel nur einfaches Clicken/Berühren fliegen zu lassen. Verglichen mit Spielen wie Eve Online oder den frühen RPG Spielen, sind die heutigen neuen Spiele darauf optimiert, ein stetiges Gefühl von Erfolg zu vermitteln.    Was erzielt man mit […]