2.6. Constructions d'images personnalisées avec Buildah
Avec OpenShift Container Platform 4.12, un docker socket ne sera pas présent sur les nœuds hôtes. Cela signifie que l'option mount docker socket d'une construction personnalisée n'est pas garantie pour fournir un socket docker accessible pour une utilisation dans une image de construction personnalisée.
Si vous avez besoin de cette capacité pour construire et pousser des images, ajoutez l'outil Buildah à votre image de construction personnalisée et utilisez-le pour construire et pousser l'image dans votre logique de construction personnalisée. Voici un exemple d'exécution de constructions personnalisées à l'aide de Buildah.
L'utilisation de la stratégie de construction personnalisée nécessite des autorisations que les utilisateurs normaux n'ont pas par défaut, car elle permet à l'utilisateur d'exécuter du code arbitraire à l'intérieur d'un conteneur privilégié fonctionnant sur le cluster. Ce niveau d'accès peut être utilisé pour compromettre le cluster et ne doit donc être accordé qu'à des utilisateurs disposant de privilèges administratifs sur le cluster.
2.6.1. Conditions préalables Copier lienLien copié sur presse-papiers!
- Examiner comment accorder des autorisations de construction personnalisée.
2.6.2. Création d'artefacts de construction personnalisés Copier lienLien copié sur presse-papiers!
Vous devez créer l'image que vous souhaitez utiliser comme image de construction personnalisée.
Procédure
En partant d'un répertoire vide, créez un fichier nommé
Dockerfile
avec le contenu suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le même répertoire, créez un fichier nommé
dockerfile.sample
. Ce fichier est inclus dans l'image de construction personnalisée et définit l'image produite par la construction personnalisée :FROM registry.access.redhat.com/ubi8/ubi RUN touch /tmp/build
FROM registry.access.redhat.com/ubi8/ubi RUN touch /tmp/build
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le même répertoire, créez un fichier nommé
build.sh
. Ce fichier contient la logique qui est exécutée lors de l'exécution de la version personnalisée :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.3. Construire une image personnalisée du constructeur Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser OpenShift Container Platform pour construire et pousser des images de constructeur personnalisées à utiliser dans une stratégie personnalisée.
Conditions préalables
- Définissez toutes les données qui seront utilisées pour créer votre nouvelle image de constructeur personnalisé.
Procédure
Définissez un objet
BuildConfig
qui construira votre image de constructeur personnalisée :oc new-build --binary --strategy=docker --name custom-builder-image
$ oc new-build --binary --strategy=docker --name custom-builder-image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Depuis le répertoire dans lequel vous avez créé votre image de compilation personnalisée, exécutez la compilation :
oc start-build custom-builder-image --from-dir . -F
$ oc start-build custom-builder-image --from-dir . -F
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Une fois la construction terminée, votre nouvelle image de constructeur personnalisé est disponible dans votre projet dans une balise de flux d'images nommée
custom-builder-image:latest
.
2.6.4. Utiliser l'image personnalisée du constructeur Copier lienLien copié sur presse-papiers!
Vous pouvez définir un objet BuildConfig
qui utilise la stratégie personnalisée en conjonction avec votre image de constructeur personnalisé pour exécuter votre logique de construction personnalisée.
Conditions préalables
- Définir toutes les entrées requises pour la nouvelle image du constructeur personnalisé.
- Créez votre image de constructeur personnalisée.
Procédure
Créez un fichier nommé
buildconfig.yaml
. Ce fichier définit l'objetBuildConfig
qui est créé dans votre projet et exécuté :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom de votre projet.
Créer le site
BuildConfig
:oc create -f buildconfig.yaml
$ oc create -f buildconfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un fichier nommé
imagestream.yaml
. Ce fichier définit le flux d'images vers lequel la compilation poussera l'image :kind: ImageStream apiVersion: image.openshift.io/v1 metadata: name: sample-custom spec: {}
kind: ImageStream apiVersion: image.openshift.io/v1 metadata: name: sample-custom spec: {}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le flux d'images :
oc create -f imagestream.yaml
$ oc create -f imagestream.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez votre construction personnalisée :
oc start-build sample-custom-build -F
$ oc start-build sample-custom-build -F
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque la construction s'exécute, elle lance un pod qui exécute l'image du constructeur personnalisé qui a été construite précédemment. Le pod exécute la logique
build.sh
qui est définie comme le point d'entrée de l'image du constructeur personnalisé. La logiquebuild.sh
invoque Buildah pour construire le sitedockerfile.sample
qui a été intégré dans l'image de construction personnalisée, puis utilise Buildah pour pousser la nouvelle image vers le sitesample-custom image stream
.