|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev. |
Richtlinien in Go schreiben
|
Die Unterstützung von Go für WebAssembly entwickelt sich schnell weiter. Diese Seite wurde zuletzt im Dezember 2023 überarbeitet. |
Der offizielle Go-Compiler kann WebAssembly-Binärdateien erzeugen, die außerhalb eines Browsers ausgeführt werden können, seit v1.21.
Es gibt einen weiteren Go-Compiler, der WebAssembly-Binärdateien erstellen kann, die von SUSE Security Admission Controller verwendet werden können. Dieses Compiler-Projekt ist TinyGo:
TinyGo bringt die Programmiersprache Go in eingebettete Systeme und ins moderne Web, indem es einen neuen Compiler auf Basis von LLVM erstellt.
Sie können TinyGo-Programme auf über 94 verschiedenen Mikrocontroller-Boards wie dem BBC micro:bit und dem Arduino Uno kompilieren und ausführen.
TinyGo kann auch WebAssembly (Wasm)-Code erzeugen, der sehr kompakt ist. Sie können Programme für Webbrowser kompilieren, sowie für Server- und Edge-Computing-Umgebungen, die die WebAssembly System Interface (WASI)-Familie von Schnittstellen unterstützen.
Das Admission Controller Projekt schlägt derzeit aus zwei Gründen die Verwendung von TinyGo vor:
-
Binärdateien sind kleiner
-
Unterstützung für waPC durch die Möglichkeit, Funktionen zur Laufzeit zu exportieren
TinyGo-Einschränkungen
TinyGo unterstützt noch nicht alle Go-Funktionen,
siehe die TinyGo-Sprachunterstützung Seite, um den aktuellen Projektstatus zu sehen.
Derzeit ist die größte Einschränkung das Fehlen eines vollständig unterstützten reflect Pakets.
Das bedeutet, dass offizielle Kubernetes Go API-Typen (z.B.: k8s.io/api/core/v1) nicht kompiliert werden.
Admission Controller Richtlinien müssen JSON-Daten verarbeiten, wie z. B. Richtlinieneinstellungen und die von Kubernetes empfangene Anfrage.
Trotz der aktuellen Einschränkungen von TinyGo ist es immer noch einfach, Admission Controller Validierungsrichtlinien damit zu schreiben.
Werkzeuge
Das Schreiben von Admission Controller Richtlinien erfordert eine Version von TinyGo, die größer als v0.28.1 ist.
Verwenden Sie jedoch die neueste Version für die besten Ergebnisse.
|
Die Verwendung älterer Versionen von TinyGo führt zu Laufzeitfehlern aufgrund der begrenzten Unterstützung für Go-Reflexion. |
Diese Go-Bibliotheken sind nützlich, wenn Sie eine Admission Controller Richtlinie schreiben:
-
Admission Controller Go SDK: Bietet Strukturen und Funktionen, die die Menge an notwendigem Code reduzieren. Es bietet auch Testhelfer an.
-
Kubernetes Go-Typen: Die offiziellen Kubernetes Go-Typen können nicht mit TinyGo verwendet werden. Dieses Modul bietet alle Kubernetes-Typen auf eine TinyGo-freundliche Weise an.
-
gjson: Dies bietet eine Abfragesprache für eine schnelle Navigation von JSON-Dokumenten und Datenabruf. Diese Bibliothek verwendet nicht das
encoding/jsonPaket, das von Go’sstdlibbereitgestellt wird, daher ist sie mit TinyGo verwendbar. -
mapset: Bietet eine Go-Implementierung der Set-Datenstruktur. Diese Bibliothek reduziert die Menge an Code, die geschrieben werden muss, da Operationen wie Set
union,intersection,differencehäufige Operationen in Admission Controller-Richtlinien sind.
Zuletzt bietet das Admission Controller Projekt ein Go-Richtlinien-Templateprojekt, das Sie verwenden können, um Admission Controller Go-Richtlinien zu erstellen.
TinyGo-Abhängigkeiten beziehen
Der einfachste Weg, TinyGo zu erhalten, ist die Verwendung der Upstream-Container-Images. Offizielle Releases sind hier, während Builds aus dem Entwicklungszweig automatisch hier bereitgestellt werden.
Falls erforderlich, versuchen Sie die Einstiegsseite von TinyGo für weitere Informationen.
Voraussetzungen für das Tutorial
Während dieses Tutorials benötigen Sie diese Werkzeuge auf Ihrem Entwicklungsrechner:
-
Docker oder eine andere Container-Engine: wird verwendet, um die WebAssembly-Richtlinie zu erstellen. Sie werden den Compiler verwenden, der im offiziellen TinyGo-Container-Image enthalten ist.
-
bats: wird verwendet, um die Tests zu schreiben und deren Ausführung zu automatisieren.
-
kwctl: CLI-Tool, das von Admission Controller bereitgestellt wird, um seine Richtlinien außerhalb von Kubernetes auszuführen, unter anderem. Es ist in diesem Abschnitt der Dokumentation behandelt.