Note :

Utiliser ock-forge avec Oracle Cloud Native Environment

Présentation

L'outil Hôte Oracle Container pour le générateur d'images Kubernetes (OCK Image Builder) crée les images Oracle Container Host for Kubernetes (OCK) utilisées dans les déploiements Oracle Cloud Native Environment (Oracle CNE). OCK Image Builder vous aide si l'image OCK par défaut utilisée par Oracle CNE ne répond pas à vos besoins, par exemple :

OCK Image Builder est une collection de scripts d'interpréteur de commandes, le principal étant ock-forge pour générer une image au format qcow2 amorçable afin de créer les noeuds de grappe ou une image de conteneur OSTree qu'Oracle CNE peut utiliser pour mettre à jour les noeuds d'un conteneur en cours d'exécution.

Objectifs

Dans ce tutoriel, vous apprendrez à :

Préalables

Déployer l'environnement natif Oracle Cloud

Note : Si vous exécutez votre propre location, lisez les préalables du projet linux-virt-labs GitHub README.md et remplissez les conditions requises avant de déployer l'environnement de laboratoire.

  1. Ouvrez un terminal sur le Luna Desktop.

  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 de démarrage, 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 de l'exercice.

    Installer à 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 de laboratoire 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 l'ensemble RPM pour la trousse SDK Oracle Cloud Infrastructure pour Python, située sous les modules python3.6.

    La forme de déploiement par défaut utilise le processeur AMD et Oracle Linux 8. Pour utiliser une unité centrale 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 livre de jeu s'exécute avec succès et atteignez la tâche Mettre en pause. À ce stade du livre de jeu, l'installation d'Oracle Cloud Native Environment est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui imprime les adresses IP publiques et privées des noeuds qu'il déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.

Installer l'hôte Oracle Container pour Kubernetes Builder

L'hôte de conteneur Oracle pour Kubernetes Builder (ock-forge) est un outil de ligne de commande permettant de créer des images basées sur OSTree basées sur Oracle Container Host pour Kubernetes (OCK). 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 traitement par blocs 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 nécessite Podman et utilise Git pour cloner les référentiels ock-forge et Hôte de conteneur Oracle pour la configuration Kubernetes (Configuration d'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 Configuration d'OCK.

    ock-forge utilise la spécification de fichier arborescent de configuration OCK pour la création d'une image.

    cd ock-forge/
    git clone https://github.com/oracle-cne/ock
    
    

Créer une image OCK

Ensuite, vous allez créer un périphérique de traitement par blocs réseau, ajouter des ensembles Linux supplémentaires à l'image OCK que vous allez créer, puis utiliser ock-forge pour effectuer tout le travail requis pour générer une image OCK amorçable.

Activer un appareil par blocs réseau

Le périphérique de traitement par blocs de réseau (NBD) est utilisé par ock-forge pour monter l'image .qcow2 générée afin qu'Oracle CNE puisse créer une grappe Kubernetes.

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

    sudo modprobe nbd max_part=8
    
  2. Vérifiez que les appareils 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 ensembles Linux supplémentaires à ajouter à l'image OCK créée par ock-forge. La spécification treefile 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.

    Note : Vous pouvez ajouter des personnalisations supplémentaires au fichier de configuration Kubernetes pour la compilation Kubernetes ciblée.

    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 s'affiche 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éer 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 de traitement par blocs existant.
    • -D : Chemin d'accès au fichier d'image de disque.
    • -i : Nom d'image de conteneur complet, y compris un marqueur.
    • -C : Répertoire contenant un jeu de configurations rpm-ostree.
    • -c : Répertoire contenant la configuration rpm-ostree à créer.
    • -P : Si cet indicateur est utilisé, le périphérique de traitement par blocs spécifié par -d essuie sa table de partition et le réalimente 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).

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

Modifier l'image OCK

Une fois le processus de création OCK Image 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 système et bien plus encore dans le fichier qcow2 à l'aide des fichiers YAML de configuration Butane conformes au schéma de Butane. Pour plus de détails, consultez la documentation relative au 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 montrent comment définir votre personnalisation comme valeur par défaut pour toutes les grappes CNE Oracle 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ù (voir la documentation en amont pour plus de détails) :

    • variant: - Doit être réglé à fcos pour être utilisé avec Oracle CNE
    • version: - Doit être réglé à 1.5.0 pour être utilisé avec Oracle CNE
    • path: - /etcmyfile.txt (chemin et nom de fichier du fichier créé)
    • mode: - Réglez à : 644 (vous avez lu et écrit que tous les autres utilisateurs ne peuvent que le lire)
    • user: et group: - Affectez la responsabilité du fichier à l'UID et à l'IDG spécifiés. Cet exemple le règle à l'UID et à l'IDG ocne
  3. Confirmez le fichier créé.

    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 l'image .qcow2 copiée.

    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 la grappe existe.

    ocne cluster list
    
  5. Définissez la variable d'environnement kubeconfig pour votre nouvelle grappe.

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

    kubectl get nodes
    
  7. Connectez-vous au noeud de travail.

    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. Confirmez l'ensemble emacs installé.

    ls /bin/emacs
    

    Exemple de sortie :

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

  11. Connectez-vous au noeud du 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. Confirmez l'ensemble emacs installé.

    ls /bin/emacs
    

    Exemple de sortie :

    sh-4.4# ls /bin/emacs
    /bin/emacs
    

    Confirmer que vous avez personnalisé les noeuds de grappe Oracle CNE par défaut en ajoutant un fichier texte (/etc/myfile.txt) et un ensemble (emacs) qui ne sont pas présents par défaut.

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

Supprimer la grappe

  1. Supprimer la grappe.

    ocne cluster delete
    
  2. Supprimez le fichier defaults.yaml.

    rm /home/oracle/.ocne/defaults.yaml
    

Mettre à jour la configuration d'une grappe unique

Vous allez ensuite créer et appliquer un fichier de personnalisation à une seule grappe CNE Oracle.

  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 le fichier créé.

    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 votre nouvelle grappe.

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

    kubectl get nodes
    
  6. Connectez-vous au noeud de travail.

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

    ls -lsa /etc/myfile.txt
    
  8. Confirmez l'ensemble emacs installé.

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

  10. Connectez-vous au noeud du 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. Confirmez l'ensemble emacs installé.

    ls /bin/emacs
    

    Confirmer que vous avez personnalisé les noeuds de grappe Oracle CNE par défaut en ajoutant un fichier texte (/etc/myfile.txt) et un ensemble (emacs) qui ne sont pas présents par défaut.

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

Supprimer la grappe

  1. Supprimer la grappe.

    ocne cluster delete
    

Étapes suivantes

La personnalisation des fichiers d'image OCK d'Oracle CNE vous permet de modifier l'environnement utilisé sur les noeuds de votre grappe Kubernetes CNE Oracle. Poursuivez l'expansion de vos connaissances dans Kubernetes et Oracle Cloud Native Environment en consultant nos autres tutoriels publiés sur le poste de formation Oracle Linux.

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir la documentation sur le produit, visitez Oracle Help Center.