Remarques :
- Ce tutoriel est disponible dans un environnement d'atelier gratuit fourni par Oracle.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Utilisez ock-forge avec Oracle Cloud Native Environment
Introduction
L'outil Hôte de conteneur Oracle pour le générateur d'images Kubernetes (OCK Image Builder) crée les images OCK (Oracle Container Host for Kubernetes) utilisées dans les déploiements Oracle Cloud Native Environment (Oracle CNE). OCK Image Builder permet de déterminer si l'image OCK par défaut utilisée par Oracle CNE ne répond pas à vos besoins, par exemple :
- Disposition de partition différente de l'image OCK standard.
- Packages supplémentaires ou pilotes de périphérique manquants.
OCK Image Builder est un ensemble de scripts shell, le principal étant ock-forge
pour générer une image de format qcow2 amorçable afin de créer les noeuds de cluster ou une image de conteneur OSTree qu'Oracle CNE peut utiliser pour mettre à jour les noeuds dans un conteneur en cours d'exécution.
Objectifs
Dans ce tutoriel, vous allez apprendre à :
- Installer, configurer et utiliser
ock-forge
pour créer une image OCK personnalisée - Créer un cluster Oracle CNE à l'aide de l'image OCK personnalisée
- Inclure les modifications
extraIgnitionInline:
apportées à l'image OCK en tant que valeur par défaut pour tous les clusters créés ou lorsqu'elles sont utilisées avec un cluster individuel
Prérequis
-
Minimum d'une instance Oracle Linux 9
-
Oracle Linux doit être installé et configuré sur chaque système avec :
- Compte utilisateur Oracle (utilisé pendant l'installation) avec accès sudo
- SSH basé sur une clé, également appelé SSH sans mot de passe, entre les hôtes
- Environnement libvirt KVM fonctionnel.
Déploiement d'Oracle Cloud Native Environment
Remarque : en cas d'exécution dans votre propre location, lisez le projet linux-virt-labs
GitHub README.md et respectez les prérequis avant de déployer l'environnement d'atelier.
-
Ouvrez un terminal sur le bureau Luna.
-
Clonez le projet
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Accédez au répertoire de travail.
cd linux-virt-labs/ocne2
-
Installez les collections requises.
ansible-galaxy collection install -r requirements.yml
-
Augmentez la taille du volume d'initialisation, installez libvirt et utilisez Oracle Linux 9.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ocne" type: "server" instance_ocpus: 8 instance_memory: 128 boot_volume_size_in_gbs: 256 ocne_type: "libvirt" install_ocne_rpm: true update_all: true os_version: "9" EOF
Remarque : OCK Image Builder fonctionne mieux sur Oracle Linux 9.
-
Déployez l'environnement d'exercice.
Installation à l'aide de la configuration personnalisée.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
L'environnement d'exercice gratuit nécessite la variable supplémentaire
local_python_interpreter
, qui définitansible_python_interpreter
pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe le package RPM pour le kit SDK Oracle Cloud Infrastructure pour Python, situé sous les modules python3.6.La forme de déploiement par défaut utilise la CPU AMD et Oracle Linux 8. Pour utiliser une CPU Intel ou Oracle Linux 9, ajoutez
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
à la commande de déploiement.Important : attendez que le playbook s'exécute correctement et atteignez la tâche de pause. A ce stade du manuel, l'installation d'Oracle Cloud Native Environment est terminée et les instances sont prêtes. Notez la lecture précédente, qui imprime les adresses IP publiques et privées des noeuds qu'elle déploie, ainsi que toute autre information de déploiement nécessaire lors de l'exécution de l'exercice.
Installation d'un hôte Oracle Container pour Kubernetes Builder
Oracle Container Host for Kubernetes Builder (ock-forge
) est un outil de ligne de commande permettant de créer des images OSTree basées sur Oracle Container Host for Kubernetes (OCK) de média amorçable. ock-forge
peut générer des images de machine virtuelle au format qcow2, des images de disque brut ou en écrivant directement sur un périphérique de bloc existant. Ce tutoriel explique comment créer et utiliser une image .qcow2 personnalisée.
-
Ouvrez un terminal et connectez-vous via SSH à l'instance ocne.
ssh oracle@<ip_address_of_node>
-
Installez Git et Podman.
sudo dnf install -y git container-tools
Le programme
ock-forge
requiert Podman et utilise Git pour cloner les référentielsock-forge
et Hôte de conteneur Oracle pour la configuration Kubernetes (configuration OCK) à partir de GitHub. -
Clonez le référentiel
ock-forge
.git clone https://github.com/oracle-cne/ock-forge
-
Clonez le référentiel OCK Configuration.
ock-forge
utilise la spécification de fichier arborescent de configuration OCK pour OCK afin de créer une image.cd ock-forge/ git clone https://github.com/oracle-cne/ock
Créer une image OCK
Vous allez ensuite créer un périphérique en mode bloc réseau, ajouter des packages Linux supplémentaires à l'image OCK que vous allez créer, puis utiliser ock-forge
pour effectuer tout le travail nécessaire à la génération d'une image OCK amorçable.
Activation d'un périphérique en mode bloc réseau
Le dispositif de blocs réseau (NBD) est utilisé par ock-forge
pour monter l'image .qcow2 générée afin qu'Oracle CNE puisse créer un cluster Kubernetes.
-
Chargez le module de noyau NBD et affectez-lui huit partitions.
sudo modprobe nbd max_part=8
-
Confirmez que les dispositifs NBD sont présents.
ls -l /dev/nbd*
Exemple de sortie :
[oracle@ocne ~]$ ls -l /dev/nbd* brw-rw----. 1 root disk 43, 0 Jan 15 13:55 /dev/nbd0 brw-rw----. 1 root disk 43, 16 Jan 15 13:55 /dev/nbd1 brw-rw----. 1 root disk 43, 160 Jan 15 13:55 /dev/nbd10 brw-rw----. 1 root disk 43, 176 Jan 15 13:55 /dev/nbd11 brw-rw----. 1 root disk 43, 192 Jan 15 13:55 /dev/nbd12 brw-rw----. 1 root disk 43, 208 Jan 15 13:55 /dev/nbd13 brw-rw----. 1 root disk 43, 224 Jan 15 13:55 /dev/nbd14 brw-rw----. 1 root disk 43, 240 Jan 15 13:55 /dev/nbd15 brw-rw----. 1 root disk 43, 32 Jan 15 13:55 /dev/nbd2 brw-rw----. 1 root disk 43, 48 Jan 15 13:55 /dev/nbd3 brw-rw----. 1 root disk 43, 64 Jan 15 13:55 /dev/nbd4 brw-rw----. 1 root disk 43, 80 Jan 15 13:55 /dev/nbd5 brw-rw----. 1 root disk 43, 96 Jan 15 13:55 /dev/nbd6 brw-rw----. 1 root disk 43, 112 Jan 15 13:55 /dev/nbd7 brw-rw----. 1 root disk 43, 128 Jan 15 13:55 /dev/nbd8 brw-rw----. 1 root disk 43, 144 Jan 15 13:55 /dev/nbd9
Personnaliser la création d'image OCK
Vous pouvez définir des packages Linux supplémentaires à ajouter à l'image OCK créée par ock-forge
. La spécification de fichier arborescent utilisée par OCK-forge se trouve dans le référentiel GitHub OCK Configuration.
-
Créez un répertoire pour le fichier de personnalisation.
mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
-
Créez un fichier de personnalisation pour installer les packages Vim et Emacs.
cat << EOF | tee /home/oracle/ock-forge/ock/configs/config-1.31/custom/myconfig.yaml > /dev/null packages: - vim - emacs EOF
-
Incluez le fichier de personnalisation dans le fichier
manifest.yaml
.Remarque : vous pouvez ajouter des personnalisations supplémentaires au fichier de configuration Kubernetes pour le build Kubernetes ciblé.
sed -i '23i - custom/myconfig.yaml' /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
-
Vérifiez que le nouveau fichier de personnalisation apparaît dans la séquence de création d'image OCK définie dans le fichier
manifest.yaml
.cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
Exemple de sortie :
[oracle@ocne ock-forge]$ cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml ref: ock automatic-version-prefix: "1.31" documentation: false boot-location: modules machineid-compat: false ... ... include: - base.yaml - ux.yaml - ocne.yaml - removals.yaml - config.yaml - custom/myconfig.yaml ... ... modules: enable: - container-tools:ol8 - virt:kvm_utils3
Création de l'image OCK
-
Utilisez
ock-forge
pour créer l'image qcow2.sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P
Où :
-d
: chemin d'accès à un périphérique en mode bloc existant.-D
: chemin d'accès au fichier image disque.-i
: nom d'image de conteneur qualifié complet, avec une balise.-C
: répertoire contenant un ensemble de configurations rpm-ostree.-c
: répertoire contenant la configuration rpm-ostree à créer.-P
: si cet indicateur est utilisé, l'unité de blocs indiquée par -d efface sa table de partition et la remplit à nouveau avec la géométrie par défaut.
-
Appuyez sur Entrée pour accepter le registre de conteneurs par défaut (
container-registry.oracle.com/ock-builder:latest
).Remarque : le processus de création prend environ 30 minutes.
Exemple de sortie :
[oracle@ocne ock-forge]$ sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P + [[ -z '' ]] + [[ -z '' ]] + IGNITION_PROVIDER=qemu + [[ -n out/1.31/boot.qcow2 ]] ++ realpath -m out/1.31/boot.qcow2 + DISK=/home/oracle/ock-forge/out/1.31/boot.qcow2 ... ... + podman image exists ock-builder:latest + podman pull ock-builder:latest ? Please select an image: ▸ container-registry.oracle.com/ock-builder:latest docker.io/library/ock-builder:latest
Modification de l'image OCK
Une fois le processus de création d'image OCK terminé, il est possible de créer des utilisateurs, de créer des fichiers, de configurer le réseau, de définir des unités systemd et bien plus encore dans le fichier qcow2 à l'aide de fichiers YAML de configuration Butane conformes au schéma de Butane. Pour plus d'informations, reportez-vous à la documentation Butane en amont.
Ensuite, vous allez créer un fichier YAML conforme à Butane pour créer un fichier texte et configurer un nouvel utilisateur.
Utilisation d'une configuration par défaut
Vous pouvez appliquer des personnalisations de l'une des deux manières suivantes :
- Utilisez-le comme valeur par défaut pour tous les clusters Oracle CNE que vous créez.
- Pour appliquer une configuration sur mesure à un cluster CNE Oracle unique.
Les étapes suivantes expliquent comment définir votre personnalisation comme valeur par défaut pour tous les clusters Oracle CNE que vous créez.
-
Créez le répertoire
.ocne
.mkdir /home/oracle/.ocne
-
Ajoutez le fichier
defaults.yaml
.cat << EOF | tee /home/oracle/.ocne/defaults.yaml > /dev/null extraIgnitionInline: | variant: fcos version: 1.5.0 storage: files: - path: /etc/myfile.txt contents: inline: Hello, world! mode: 0644 user: id: 1000 group: id: 1001 EOF
Où (pour plus de détails, reportez-vous à la documentation en amont) :
variant:
: doit être défini surfcos
pour être utilisé avec Oracle CNEversion:
: doit être défini sur1.5.0
pour être utilisé avec Oracle CNEpath:
-/etcmyfile.txt
(chemin et nom de fichier pour le fichier créé)mode:
: définissez la valeur sur644
(vous avez lu et écrit que tout le monde peut uniquement le lire)user:
&group:
: affectez la propriété du fichier à l'UID et au GID indiqués. Cet exemple le définit sur l'UID et le GIDocne
-
Confirmez la création du fichier.
cat /home/oracle/.ocne/defaults.yaml
Testez la nouvelle image OCK créée par OCK-forge.
-
Copiez l'image .qcow2 dans l'installation Oracle CNE.
sudo cp /home/oracle/ock-forge/out/1.31/boot.qcow2 /var/lib/libvirt/images/boot.qcow2-1.31
-
Confirmez la copie de l'image .qcow2.
sudo ls /var/lib/libvirt/images
-
Démarrez Oracle CNE à l'aide de l'image .qcow2.
ocne cluster start --version 1.31 -n 1 -w 1 -u false
Exemple de sortie :
[oracle@ocne ock-forge]$ ocne cluster start --version 1.31 -n 1 -w 1 -u false INFO[2025-04-14T13:47:36Z] Creating new Kubernetes cluster with version 1.31 named ocne INFO[2025-04-14T13:48:34Z] Waiting for the Kubernetes cluster to be ready: ok INFO[2025-04-14T13:48:35Z] Installing core-dns into kube-system: ok INFO[2025-04-14T13:48:36Z] Installing kube-proxy into kube-system: ok INFO[2025-04-14T13:48:39Z] Installing kubernetes-gateway-api-crds into kube-system: ok INFO[2025-04-14T13:48:39Z] Installing flannel into kube-flannel: ok INFO[2025-04-14T13:48:40Z] Installing ui into ocne-system: ok INFO[2025-04-14T13:48:41Z] Installing ocne-catalog into ocne-system: ok INFO[2025-04-14T13:48:41Z] Kubernetes cluster was created successfully INFO[2025-04-14T13:48:41Z] Post install information: To access the cluster from the VM host: copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there To access the cluster from this system: use /home/oracle/.kube/kubeconfig.ocne.local To access the UI, first do kubectl port-forward to allow the browser to access the UI. Run the following command, then access the UI from the browser using via https://localhost:8443 kubectl port-forward -n ocne-system service/ui 8443:443 Run the following command to create an authentication token to access the UI: kubectl create token ui -n ocne-system
-
Vérifiez que le cluster existe.
ocne cluster list
-
Définissez la variable d'environnement
kubeconfig
pour le nouveau cluster.export KUBECONFIG=$(ocne cluster show -C ocne)
-
Obtenez la liste des noeuds de cluster.
kubectl get nodes
-
Connectez-vous au noeud Worker.
ocne cluster console --direct --node ocne-worker-1
-
Vérifiez que le fichier
myfile.txt
existe.ls -lsa /etc/myfile.txt
Exemple de sortie :
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:51 /etc/myfile.txt
-
Vérifiez que le package
emacs
est installé.ls /bin/emacs
Exemple de sortie :
sh-4.4# ls /bin/emacs /bin/emacs
-
Saisissez
exit
pour quitter le noeudocne-worker-1
. -
Connectez-vous au noeud Plan de contrôle.
ocne cluster console --direct --node ocne-control-plane-1
-
Vérifiez que le fichier
myfile.txt
existe.ls /etc/myfile.txt
Exemple de sortie :
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:50 /etc/myfile.txt
-
Vérifiez que le package
emacs
est installé.ls /bin/emacs
Exemple de sortie :
sh-4.4# ls /bin/emacs /bin/emacs
Vérifiez que vous avez personnalisé les noeuds de cluster Oracle CNE par défaut en ajoutant un fichier texte (
/etc/myfile.txt
) et un package (emacs
) qui ne sont pas présents par défaut. -
Saisissez
exit
pour quitter le noeudocne-control-plane-1
.
Suppression du cluster
-
Supprimer le cluster.
ocne cluster delete
-
Supprimez le fichier
defaults.yaml
.rm /home/oracle/.ocne/defaults.yaml
Mise à jour de la configuration d'un cluster unique
Ensuite, vous allez créer et appliquer un fichier de personnalisation à un seul cluster Oracle CNE.
-
Créez un fichier de configuration.
cat << EOF | tee /home/oracle/myconfig.yaml > /dev/null provider: libvirt headless: true name: ocne kubernetesVersion: 1.31 controlPlaneNodes: 1 workerNodes: 1 extraIgnitionInline: | variant: fcos version: 1.5.0 storage: files: - path: /etc/myfile.txt contents: inline: Hello, world! mode: 0644 user: id: 1000 group: id: 1001 EOF
-
Confirmez la création du fichier.
cat /home/oracle/myconfig.yaml
-
Démarrez Oracle CNE à l'aide de l'image .qcow2.
ocne cluster start -u false -c /home/oracle/myconfig.yaml
Exemple de sortie :
[oracle@ocne ~]$ ocne cluster start -u false -c /home/oracle/myconfig.yaml INFO[2025-04-15T18:07:00Z] Creating new Kubernetes cluster with version 1.31 named ocne INFO[2025-04-15T18:08:14Z] Waiting for the Kubernetes cluster to be ready: ok INFO[2025-04-15T18:08:16Z] Installing core-dns into kube-system: ok INFO[2025-04-15T18:08:16Z] Installing kube-proxy into kube-system: ok INFO[2025-04-15T18:08:19Z] Installing kubernetes-gateway-api-crds into kube-system: ok INFO[2025-04-15T18:08:20Z] Installing flannel into kube-flannel: ok INFO[2025-04-15T18:08:20Z] Installing ocne-catalog into ocne-system: ok INFO[2025-04-15T18:08:20Z] Kubernetes cluster was created successfully INFO[2025-04-15T18:08:20Z] Post install information: To access the cluster from the VM host: copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there To access the cluster from this system: use /home/oracle/.kube/kubeconfig.ocne.local
-
Définissez la variable d'environnement
kubeconfig
pour le nouveau cluster.export KUBECONFIG=$(ocne cluster show -C ocne)
-
Obtenez la liste des noeuds de cluster.
kubectl get nodes
-
Connectez-vous au noeud Worker.
ocne cluster console --direct --node ocne-worker-1
-
Vérifiez que le fichier
myfile.txt
existe.ls -lsa /etc/myfile.txt
-
Vérifiez que le package
emacs
est installé.ls /bin/emacs
-
Saisissez
exit
pour quitter le noeudocne-worker-1
. -
Connectez-vous au noeud Plan de contrôle.
ocne cluster console --direct --node ocne-control-plane-1
-
Vérifiez que le fichier
myfile.txt
existe.ls -lsa /etc/myfile.txt
-
Vérifiez que le package
emacs
est installé.ls /bin/emacs
Vérifiez que vous avez personnalisé les noeuds de cluster Oracle CNE par défaut en ajoutant un fichier texte (
/etc/myfile.txt
) et un package (emacs
) qui ne sont pas présents par défaut. -
Saisissez
exit
pour quitter le noeudocne-control-plane-1
.
Suppression du cluster
-
Supprimer le cluster.
ocne cluster delete
Etapes suivantes
La personnalisation des fichiers image OCK Oracle CNE vous permet de modifier l'environnement utilisé sur les noeuds de cluster Kubernetes Oracle CNE. Continuez à développer vos connaissances sur Kubernetes et Oracle Cloud Native Environment en consultant nos autres tutoriels publiés sur le centre de formation Oracle Linux.
Liens connexes
- Documentation Oracle Cloud Native Environment
- Parcours Oracle Cloud Native Environment
- Centre de formation Oracle Linux
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Use ock-forge with Oracle Cloud Native Environment
G33066-01
Copyright ©2025, Oracle and/or its affiliates.