Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev.

Rédaction de stratégies en Go

Le support de Go pour WebAssembly évolue rapidement. Cette page a été révisée pour la dernière fois en décembre 2023.

Le compilateur Go officiel peut produire des binaires WebAssembly, pour une exécution en dehors d’un navigateur, depuis la version v1.21.

Il existe un autre compilateur Go qui peut construire des binaires WebAssembly utilisables par SUSE Security Admission Controller. Ce projet de compilateur est TinyGo:

TinyGo apporte le langage de programmation Go aux systèmes embarqués et au web moderne en créant un nouveau compilateur basé sur LLVM.

Vous pouvez compiler et exécuter des programmes TinyGo sur plus de 94 cartes de microcontrôleurs différentes telles que le BBC micro:bit et l’Arduino Uno.

TinyGo peut également produire du code WebAssembly (Wasm) qui est très compact en taille. Vous pouvez compiler des programmes pour les navigateurs web, ainsi que pour les environnements de calcul serveur et edge computing qui prennent en charge la famille d’interfaces WebAssembly System Interface (WASI).

Le projet Admission Controller suggère actuellement d’utiliser TinyGo pour deux raisons :

  • les binaires sont plus petits

  • support pour waPC grâce à la capacité d’exporter des fonctions vers le composant d’exécution

Limitations de TinyGo

TinyGo ne prend pas encore en charge toutes les fonctionnalités de Go, consultez la page de support du langage TinyGo pour voir l’état actuel du projet. Actuellement, sa plus grande limitation est l’absence d’un paquet reflect entièrement pris en charge. Cela signifie que les types d’API Go Kubernetes officiels (par exemple : k8s.io/api/core/v1) ne se compilent pas.

Les stratégies Admission Controller doivent traiter des données JSON telles que les paramètres de stratégie et la demande reçue par Kubernetes.

Malgré les limitations actuelles de TinyGo, il est toujours facile d’écrire des stratégies de validation Admission Controller avec cet outil.

Outils

L’écriture de stratégies Admission Controller nécessite une version de TinyGo supérieure à v0.28.1. Cependant, utilisez la dernière version pour obtenir les meilleurs résultats.

L’utilisation de versions plus anciennes de TinyGo entraîne des erreurs d’exécution en raison du support limité pour la réflexion Go.

Ces bibliothèques Go sont utiles lors de l’écriture d’une stratégie Admission Controller :

  • Admission Controller SDK Go : Fournit des structures et des fonctions réduisant la quantité de code nécessaire. Elle fournit également des helpers de test.

  • types Go Kubernetes : Les types Go officiels de Kubernetes ne peuvent pas être utilisés avec TinyGo. Ce module fournit tous les types Kubernetes d’une manière compatible avec TinyGo.

  • gjson : Cela fournit un langage de requête pour une navigation rapide dans les documents JSON et la récupération de données. Cette bibliothèque n’utilise pas le paquet encoding/json fourni par le stdlib de Go, donc elle est utilisable avec TinyGo.

  • mapset : Fournit une implémentation Go de la structure de données Set. Cette bibliothèque réduit la quantité de code à écrire, car des opérations telles que Set union, intersection, difference sont des opérations courantes dans les stratégies Admission Controller.

Enfin, le projet Admission Controller fournit un projet de stratégie Go template que vous pouvez utiliser pour créer des stratégies Go Admission Controller.

Obtenir les dépendances de TinyGo

Le moyen le plus simple d’obtenir TinyGo est d’utiliser les images de conteneur en amont. Les versions officielles sont ici, tandis que les builds de la branche de développement sont automatiquement poussés ici.

Si nécessaire, consultez la page de prise en main de TinyGo pour plus d’informations.

Prérequis du tutoriel

Au cours de ce tutoriel, vous aurez besoin de ces outils sur votre machine de développement :

  • docker ou un autre moteur de conteneurs : utilisé pour construire la stratégie WebAssembly. Vous utiliserez le compilateur fourni avec l’image de conteneur officielle TinyGo.

  • bats : utilisé pour écrire les tests et automatiser leur exécution.

  • kwctl : Outil CLI fourni par Admission Controller pour exécuter ses stratégies en dehors de Kubernetes, entre autres actions. C’est couvert dans cette section de la documentation.