Remarques :

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 :

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 à :

Prérequis

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.

  1. Ouvrez un terminal sur le bureau Luna.

  2. Clonez le projet linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Accédez au répertoire de travail.

    cd linux-virt-labs/ocne2
    
  4. Installez les collections requises.

    ansible-galaxy collection install -r requirements.yml
    
  5. 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.

  6. 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éfinit ansible_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.

  1. Ouvrez un terminal et connectez-vous via SSH à l'instance ocne.

    ssh oracle@<ip_address_of_node>
    
  2. 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érentiels ock-forge et Hôte de conteneur Oracle pour la configuration Kubernetes (configuration OCK) à partir de GitHub.

  3. Clonez le référentiel ock-forge.

    git clone https://github.com/oracle-cne/ock-forge
    
  4. 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.

  1. Chargez le module de noyau NBD et affectez-lui huit partitions.

    sudo modprobe nbd max_part=8
    
  2. 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.

  1. Créez un répertoire pour le fichier de personnalisation.

    mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
    
  2. 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
    
  3. 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
    
  4. 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

  1. 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.
  2. 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 :

Les étapes suivantes expliquent comment définir votre personnalisation comme valeur par défaut pour tous les clusters Oracle CNE que vous créez.

  1. Créez le répertoire .ocne.

    mkdir /home/oracle/.ocne
    
  2. 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 sur fcos pour être utilisé avec Oracle CNE
    • version: : doit être défini sur 1.5.0 pour être utilisé avec Oracle CNE
    • path: - /etcmyfile.txt (chemin et nom de fichier pour le fichier créé)
    • mode: : définissez la valeur sur 644 (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 GID ocne
  3. Confirmez la création du fichier.

    cat /home/oracle/.ocne/defaults.yaml
    

Testez la nouvelle image OCK créée par OCK-forge.

  1. 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
    
  2. Confirmez la copie de l'image .qcow2.

    sudo ls /var/lib/libvirt/images
    
  3. 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 
    
  4. Vérifiez que le cluster existe.

    ocne cluster list
    
  5. Définissez la variable d'environnement kubeconfig pour le nouveau cluster.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  6. Obtenez la liste des noeuds de cluster.

    kubectl get nodes
    
  7. Connectez-vous au noeud Worker.

    ocne cluster console --direct --node ocne-worker-1
    
  8. 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
    
  9. Vérifiez que le package emacs est installé.

    ls /bin/emacs
    

    Exemple de sortie :

    sh-4.4# ls /bin/emacs
    /bin/emacs
    
  10. Saisissez exit pour quitter le noeud ocne-worker-1.

  11. Connectez-vous au noeud Plan de contrôle.

    ocne cluster console --direct --node ocne-control-plane-1
    
  12. 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
    
  13. 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.

  14. Saisissez exit pour quitter le noeud ocne-control-plane-1.

Suppression du cluster

  1. Supprimer le cluster.

    ocne cluster delete
    
  2. 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.

  1. 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
    
  2. Confirmez la création du fichier.

    cat /home/oracle/myconfig.yaml
    
  3. 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 
    
  4. Définissez la variable d'environnement kubeconfig pour le nouveau cluster.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  5. Obtenez la liste des noeuds de cluster.

    kubectl get nodes
    
  6. Connectez-vous au noeud Worker.

    ocne cluster console --direct --node ocne-worker-1
    
  7. Vérifiez que le fichier myfile.txt existe.

    ls -lsa /etc/myfile.txt
    
  8. Vérifiez que le package emacs est installé.

    ls /bin/emacs
    
  9. Saisissez exit pour quitter le noeud ocne-worker-1.

  10. Connectez-vous au noeud Plan de contrôle.

    ocne cluster console --direct --node ocne-control-plane-1
    
  11. Vérifiez que le fichier myfile.txt existe.

    ls -lsa /etc/myfile.txt
    
  12. 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.

  13. Saisissez exit pour quitter le noeud ocne-control-plane-1.

Suppression du cluster

  1. 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.

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.