CI Jobs auf eigener Kubernetes Infrastruktur laufen zu lassen ist heutzutage relativ einfach. Die Kubernetes Integrationen für Github Actions1 oder Gitlab CI beispielsweise können innerhalb weniger Minuten aufgesetzt werden. Und wenn sollte das nicht ausreichen, bleibt immer noch Jenkins. Für Letzteres existiert inzwischen sogar ein nativer Kubernetes Operator!
Das Endprodukt vieler CI Pipelines sind Container Images. In vielen CI Umgebungen ist deshalb Docker bereits vorinstalliert. Laufen die CI Jobs bereits in Containern kommt meist Docker in Docker zum Einsatz....
Die Verwaltung hardwarebezogener Aspekte von Kubernetes-Clustern gestaltet sich oft schwierig. Der Zugriff auf Host-Hardware erfordert meist zusätzliche Kernelmodule und eine tiefe Integration in oder sogar Modifikation der Container Runtime. Gleichzeitig kommen und gehen Nodes, aber Provisioning-Tools wie coreos/ignition oder canonical/cloud-init können diese teils komplexen Modifikationen nur unzureichend abdecken. Noch schwieriger wird es bei spezialisierten Container-Betriebssystemen wie Fedora/RedHat CoreOS und Flatcar aufgrund ihrer weitgehend unveränderlichen oder flüchtigen Dateisysteme. Oftmals scheint der Einsatz einer zusätzlichen IT-Automatisierungslösung wie Ansible oder Chef notwendig....