RcodeZero DNS & Kubernetes – ein eingespieltes Team
30.09.2019 16:04

Kubernetes – was und wozu?
Kubernetes ist eine Orchestrierungsplattform für Anwendungen auf der Basis von Containern, erledigt also das automatisierte Ausrollen, Skalieren und Warten von Anwendungscontainern auf verteilten Hosts. Die Open-Source-Plattform wurde ursprünglich von Google entwickelt und dann an die Cloud Native Computing Foundation (CNCF) gespendet. Kubernetes hat sich mittlerweile zum de facto Standard für das Deployment von Containerbasierenden Anwendungen sowohl in privaten als auch öffentlichen Cloudumgebungen entwickelt und wird von führenden Cloud-Plattformen wie Microsoft Azure, IBM Bluemix, Red Hat Open Shift und Oracle OCI unterstützt. 

 

Was sind die Vorteile von Containern?
Im Vergleich zu herkömmlichen, ressourcen-intensiven virtuellen Maschinen sind Container eine sehr leichtgewichtige Möglichkeit, um Anwendungen samt ihren Abhängigkeiten zu verpacken und schnell bereitzustellen. Das minimiert den Overhead und ermöglicht eine bessere Verteilung und Nutzung von Ressourcen - Werden für ein Service vorübergehend zusätzliche Kapazitäten benötigt, so kann temporär die benötigte Menge (auch automatisch) hinzugefügt werden. Dies spart Kosten, da die Infrastruktur besser ausgelastet wird. Ebenso ist man weniger vom konkreten Anbieter der Infrastruktur abhängig, und kann mit wenig Aufwand zu einem anderen Cloud-Anbieter oder auf die eigene Infrastruktur wechseln.

 

 

Kubernetes im Einsatz bei nic.at
Unsere Research & Development Abteilung betreibt einen internen fünf-Knoten-Cluster, der primär für Data-Science-Arbeiten sowie die Entwicklung möglicher neuer Dienste eingesetzt wird. Kubernetes ermöglicht es, die (Microservice-) Anwendungen so zu gestalten bzw. zu entwickeln, dass der spätere Übergang zu einem produktiven Betrieb sehr erleichtert wird.

 

 

ExternalDNS – DNS-Einträge automatisieren
ExternalDNS ist eine Erweiterungs-Komponente für Kubernetes, die es erlaubt, DNS-Einträge für in Kubernetes bereitgestellte Dienste beim jeweiligen Provider automatisiert einzutragen. Wird in Kubernetes ein Dienst mittels LoadBalancer (Ingress Controller) öffentlich bereitgestellt, so wird eine zufällige IP-Adresse vergeben, die dann in die Domain eingetragen werden muss – ExternalDNS erledigt das automatisch.

 

 

Vorteile von ExternalDNS für den Anwender
Mit ExternalDNS geschieht die Konfigurationen von DNS-Einträgen und automatisch bei der Anlage der entsprechenden Ressourcen. Diese Automatisierung erspart manuelle Arbeit, ist weniger fehleranfällig, und reduziert die Anzahl der Schritte beim Deployment von Services. ExternalDNS wird bereits von mehreren Unternehmen im produktiven Betrieb eingesetzt, wie etwa Zalando.

 

 

RcodeZero DNS Provider für Kubernetes
Mit ExternalDNS konnte man schon bisher eine Reihe von DNS-Providern ansprechen – beispielsweise AWS Route 53, Google Cloud DNS und Cloudflare. Seit Anfang 2019 ist auch für RcodeZero DNS ein Provider für RcodeZero verfügbar. Das von nic.at Research & Development erstellte Modul ist seit Version 0.5 in ExternalDNS enthalten. Damit kann RcodeZero DNS (vorausgesetzt, ein aktiver Account ist vorhanden) – zusammen mit ExternalDNS für die automatisierte Verwaltung der Einträge von Kubernetes-Ressourcen verwendet werden. Dazu muss nur ein API-Token im RcodeZero Dashboard (https://my.rcodezero.at/enableapi ) generiert werden, dieses wird in ExternalDNS konifguriert und das Provisionieren der DNS-Einträge erfolgt ab sofort automatisch. ExternalDNS speichert zu den erzeugten Einträge benötigte Metadaten als TXT-Einträge in der DNS-Zone ab. Da diese Einträge u.U. interne Infrastrukturinformationen enthalten können, welche nicht öffentlich verfügbar sein sollte, bietet der RcodeZero Provider die Möglichkeit dieses mittels AES Verfahrens verschlüsselt abzulegen. Damit ist die Vertaulichkeit der Daten gewährleistet.

 

 

Weitere Integrationsmöglichkeiten
Auch für die populäre Bibliothek „libcloud“ hat nic.at inzwischen einen Treiber für RcodeZero DNS erstellt – die Nutzung geschieht hier ähnlich bei ExternalDNS über das REST-basierte API. In Arbeit ist die Integration in „acme.sh“ – mit dieser Software ist es dann möglich, Let’s Encrypt-Zertifikate automatisch auch über das DNS zu bestätigen.