RSS-Kubernetes-Blog
Folgen
Kubernetes v1.34: Verwende einen Init-Container, um App-Umgebungsvariablen zu definieren
Kubernetes verwendet traditionell ConfigMaps und Secrets für Umgebungsvariablen, was Komplexität und zusätzliche API-Aufrufe verursacht. Die separate Verwaltung von Pods und ihren Konfigurationen, insbesondere bei Updates, kann eine Herausforderung darstellen. Dies gilt insbesondere für Vendor-Container, die Umgebungsvariablen benötigen, ohne diese hart zu codieren oder Volume-Mounts zu verwenden.Ein neues Alpha-Feature namens EnvFiles bietet eine alternative Lösung für diese Szenarien. Wenn das EnvFiles-Feature-Gate aktiviert ist, kann das Kubelet Umgebungsvariablen für einen Container direkt aus einer Datei innerhalb eines emptyDir-Volumes laden. Dies eliminiert die Notwendigkeit, die Datei in den Container selbst zu mounten. Die Kernfunktionalität ermöglicht es Kubernetes, eine Datei zu parsen, die oft von einem Init-Container generiert wird, und beim Start Umgebungsvariablen für den Hauptcontainer festzulegen.Die Datei befindet sich in einem emptyDir-Volume, einem temporären Speicher, der für die Lebensdauer des Pods gilt. Der Hauptcontainer muss dieses Volume nicht mounten; das Kubelet übernimmt das Lesen der Datei und das Injizieren der Variablen. Die Definition dieser Variablen beinhaltet die Verwendung des fileKeyRef-Felds in der Pod-Spec, das den Dateipfad und den zu extrahierenden Schlüssel angibt.Das Dateiformat unterstützt eine KEY=VALUE-Syntax, und für diese Alpha-Phase muss es in ein emptyDir-Volume geschrieben werden. Ein Init-Container ist erforderlich, um die Datei in das emptyDir-Volume zu schreiben, aber der Hauptanwendungscontainer benötigt keinen Zugriff auf das Volume. Obwohl dieses Feature sensible Daten verarbeiten kann, ist es wichtig zu beachten, dass Knotenbetreiber mit Dateisystemzugriff diese Daten potenziell aus emptyDir-Volumes abrufen könnten. Daher sind robuste Cluster-Sicherheitsrichtlinien unerlässlich, um Knoten vor unbefugtem Zugriff zu schützen, wenn sensible Informationen gespeichert werden. Dieses EnvFiles-Feature vereinfacht die Erstellung von Anwendungen und ermöglicht neue Anwendungsfälle durch die Reduzierung komplexer Workarounds.