Nota

Usa ock-forge con Oracle Cloud Native Environment

Introduzione

Lo strumento Host Oracle Container per Kubernetes Image Builder (OCK Image Builder) crea le immagini Oracle Container Host for Kubernetes (OCK) utilizzate nelle distribuzioni di Oracle Cloud Native Environment (Oracle CNE). OCK Image Builder aiuta se l'immagine OCK predefinita utilizzata da Oracle CNE non soddisfa i requisiti richiesti:

OCK Image Builder è una raccolta di script shell, il principale è ock-forge per generare un'immagine di formato qcow2 avviabile per creare i nodi cluster o un'immagine contenitore OSTree che Oracle CNE può utilizzare per aggiornare i nodi in un contenitore in esecuzione.

Obiettivi

In questo tutorial imparerai a:

Prerequisiti

Distribuire Oracle Cloud Native Environment

Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di esercitazione pratica.

  1. Aprire un terminale sul Luna Desktop.

  2. Duplica il progetto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Passare alla directory di lavoro.

    cd linux-virt-labs/ocne2
    
  4. Installare le raccolte richieste.

    ansible-galaxy collection install -r requirements.yml
    
  5. Aumenta le dimensioni del volume di avvio, installa libvirt e usa 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
    

    Nota: OCK Image Builder funziona meglio su Oracle Linux 9.

  6. Implementa l'ambiente di laboratorio.

    Eseguire l'installazione utilizzando la configurazione personalizzata.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
    

    L'ambiente di laboratorio gratuito richiede la variabile aggiuntiva local_python_interpreter, che imposta ansible_python_interpreter per le riproduzioni in esecuzione su localhost. Questa variabile è necessaria perché l'ambiente installa il pacchetto RPM per l'SDK Oracle Cloud Infrastructure per Python, situato sotto i moduli python3.6.

    La forma di distribuzione predefinita utilizza la CPU AMD e Oracle Linux 8. Per utilizzare una CPU Intel o Oracle Linux 9, aggiungere -e instance_shape="VM.Standard3.Flex" o -e os_version="9" al comando di distribuzione.

    Importante: attendere la corretta esecuzione della guida e raggiungere il task di sospensione. In questa fase della guida, l'installazione di Oracle Cloud Native Environment è stata completata e le istanze sono pronte. Prendi nota della riproduzione precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce e qualsiasi altra informazione di distribuzione necessaria durante l'esecuzione del laboratorio.

Installa host Oracle Container per Kubernetes Builder

Oracle Container Host for Kubernetes Builder (ock-forge) è uno strumento della riga di comando per la creazione di immagini basate su OSTree Oracle Container Host for Kubernetes (OCK). ock-forge può generare immagini di macchine virtuali in formato qcow2, immagini di dischi raw o scrivendo direttamente su un dispositivo a blocchi esistente. Questa esercitazione descrive come creare e utilizzare un'immagine .qcow2 personalizzata.

  1. Aprire un terminale e connettersi tramite SSH all'istanza ocne.

    ssh oracle@<ip_address_of_node>
    
  2. Installare Git e Podman.

    sudo dnf install -y git container-tools
    

    Il programma ock-forge richiede Podman e utilizza Git per duplicare i repository ock-forge e Oracle Container Host for Kubernetes Configuration(OCK Configuration) da GitHub.

  3. Clonare il repository ock-forge.

    git clone https://github.com/oracle-cne/ock-forge
    
  4. Clonare il repository ConfigurazioneOCK.

    ock-forge utilizza la specifica del file della struttura di configurazione OCK per OCK per creare un'immagine.

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

Creare un'immagine OCK

Successivamente, creerai un dispositivo a blocchi di rete, aggiungi alcuni pacchetti Linux aggiuntivi all'immagine OCK che creerai e quindi utilizzerai ock-forge per eseguire tutto il lavoro necessario per generare un'immagine OCK avviabile.

Attivazione di un dispositivo a blocchi di rete

Il dispositivo NBD (Network Block Device) viene utilizzato da ock-forge per eseguire il MOUNT dell'immagine .qcow2 generata in modo che Oracle CNE possa creare un cluster Kubernetes.

  1. Caricare il modulo kernel NBD e assegnarvi otto partizioni.

    sudo modprobe nbd max_part=8
    
  2. Confermare la presenza di dispositivi NBD.

    ls -l /dev/nbd*
    

    Output di esempio:

    [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
    

Personalizzare la build dell'immagine OCK

È possibile definire pacchetti Linux aggiuntivi da aggiungere all'immagine OCK creata da ock-forge. La specifica del file della struttura utilizzata da OCK-forge si trova nel repository GitHub Configurazione BLOC.

  1. Creare una directory per il file di personalizzazione.

    mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
    
  2. Creare un file di personalizzazione per installare i pacchetti Vim ed Emacs.

    cat << EOF | tee /home/oracle/ock-forge/ock/configs/config-1.31/custom/myconfig.yaml > /dev/null
    packages:
    - vim
    - emacs
    EOF
    
  3. Includere il file di personalizzazione nel file manifest.yaml.

    Nota: è possibile aggiungere eventuali personalizzazioni aggiuntive al file di configurazione Kubernetes per la build Kubernetes di destinazione.

    sed -i '23i - custom/myconfig.yaml' /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
    
  4. Verificare che il nuovo file di personalizzazione venga visualizzato nella sequenza di generazione dell'immagine OCK definita nel file manifest.yaml.

    cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
    

    Output di esempio:

    [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
    

Creare l'immagine OCK

  1. Usare ock-forge per creare l'immagine 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
    

    dove:

    • -d: il percorso di un dispositivo a blocchi esistente.
    • -D: il percorso del file immagine del disco.
    • -i: un nome di immagine contenitore completamente qualificato, inclusa una tag.
    • -C: una directory contenente un set di configurazioni rpm-ostree.
    • -c: una directory contenente la configurazione rpm-ostree da creare.
    • -P: se utilizzato, questo flag fa sì che il dispositivo a blocchi specificato da -d cancelli la tabella delle partizioni e la ripopoli con la geometria predefinita.
  2. Premere Invio per accettare il registro contenitore predefinito (container-registry.oracle.com/ock-builder:latest).

    Nota: il completamento del processo di creazione richiede circa 30 minuti.

    Output di esempio:

    [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
    

Modificare l'immagine OCK

Al termine del processo di creazione dell'immagine OCK, è possibile creare utenti, creare file, configurare la rete, definire unità systemd e molto altro ancora nel file qcow2 utilizzando i file YAML di configurazione Butane conformi allo schema di Butane. Per ulteriori informazioni, fare riferimento alla documentazione Butane a monte.

Successivamente, creerai un file YAML conforme al butano per creare un file di testo e impostare un nuovo utente.

Uso di una configurazione predefinita

È possibile applicare le personalizzazioni in uno dei due modi indicati di seguito.

I passaggi seguenti illustrano come rendere la personalizzazione predefinita per tutti i cluster Oracle CNE creati.

  1. Creare la directory .ocne.

    mkdir /home/oracle/.ocne
    
  2. Aggiungere il file 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
    

    Dove (per ulteriori dettagli, vedere la documentazione a monte):

    • variant:: deve essere impostato su fcos per essere utilizzato con Oracle CNE.
    • version:: deve essere impostato su 1.5.0 per essere utilizzato con Oracle CNE.
    • path:: /etcmyfile.txt (il percorso e il nome file per il file creato)
    • mode:: impostare su: 644 (è possibile leggere e scrivere solo gli altri utenti possono leggerlo)
    • user: & group:: assegnare la proprietà del file all'UID e al GID specificati. In questo esempio viene impostato su UID e GID ocne
  3. Confermare il file creato.

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

Eseguire il test della nuova immagine OCK creata da OCK-forge.

  1. Copiare l'immagine .qcow2 nell'installazione di Oracle CNE.

    sudo cp /home/oracle/ock-forge/out/1.31/boot.qcow2 /var/lib/libvirt/images/boot.qcow2-1.31
    
  2. Confermare la copia dell'immagine .qcow2.

    sudo ls /var/lib/libvirt/images
    
  3. Avviare Oracle CNE utilizzando l'immagine .qcow2.

    ocne cluster start --version 1.31 -n 1 -w 1 -u false
    

    Output di esempio:

    [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. Confermare l'esistenza del cluster.

    ocne cluster list
    
  5. Impostare la variabile di ambiente kubeconfig per il nuovo cluster.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  6. Ottenere una lista dei nodi del cluster.

    kubectl get nodes
    
  7. Connettersi al nodo Lavoratore.

    ocne cluster console --direct --node ocne-worker-1
    
  8. Verificare che il file myfile.txt esista.

    ls -lsa /etc/myfile.txt
    

    Output di esempio:

    sh-4.4# ls -lsa /etc/myfile.txt
    4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:51 /etc/myfile.txt
    
  9. Confermare l'installazione del pacchetto emacs.

    ls /bin/emacs
    

    Output di esempio:

    sh-4.4# ls /bin/emacs
    /bin/emacs
    
  10. Digitare exit per uscire dal nodo ocne-worker-1.

  11. Connettersi al nodo Piano di controllo.

    ocne cluster console --direct --node ocne-control-plane-1
    
  12. Verificare che il file myfile.txt esista.

    ls /etc/myfile.txt
    

    Output di esempio:

    sh-4.4# ls -lsa /etc/myfile.txt
    4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:50 /etc/myfile.txt
    
  13. Confermare l'installazione del pacchetto emacs.

    ls /bin/emacs
    

    Output di esempio:

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

    Confermare di aver personalizzato i nodi cluster Oracle CNE predefiniti aggiungendo un file di testo (/etc/myfile.txt) e un pacchetto (emacs) non presenti per impostazione predefinita.

  14. Digitare exit per uscire dal nodo ocne-control-plane-1.

Rimuovi cluster

  1. Elimina il cluster.

    ocne cluster delete
    
  2. Eliminare il file defaults.yaml.

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

Aggiornare la configurazione di un singolo cluster

Successivamente, verrà creato e applicato un file di personalizzazione a un singolo cluster Oracle CNE.

  1. Creare un file di configurazione.

    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. Confermare il file creato.

    cat /home/oracle/myconfig.yaml
    
  3. Avviare Oracle CNE utilizzando l'immagine .qcow2.

    ocne cluster start -u false -c /home/oracle/myconfig.yaml
    

    Output di esempio:

    [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. Impostare la variabile di ambiente kubeconfig per il nuovo cluster.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  5. Ottenere una lista dei nodi del cluster.

    kubectl get nodes
    
  6. Connettersi al nodo Lavoratore.

    ocne cluster console --direct --node ocne-worker-1
    
  7. Verificare che il file myfile.txt esista.

    ls -lsa /etc/myfile.txt
    
  8. Confermare l'installazione del pacchetto emacs.

    ls /bin/emacs
    
  9. Digitare exit per uscire dal nodo ocne-worker-1.

  10. Connettersi al nodo Piano di controllo.

    ocne cluster console --direct --node ocne-control-plane-1
    
  11. Verificare che il file myfile.txt esista.

    ls -lsa /etc/myfile.txt
    
  12. Confermare l'installazione del pacchetto emacs.

    ls /bin/emacs
    

    Confermare di aver personalizzato i nodi cluster Oracle CNE predefiniti aggiungendo un file di testo (/etc/myfile.txt) e un pacchetto (emacs) non presenti per impostazione predefinita.

  13. Digitare exit per uscire dal nodo ocne-control-plane-1.

Rimuovi cluster

  1. Elimina il cluster.

    ocne cluster delete
    

Passi successivi

La personalizzazione dei file immagine OCK Oracle CNE consente di modificare l'ambiente utilizzato sui nodi cluster Kubernetes Oracle CNE. Continua a espandere le tue conoscenze in Kubernetes e Oracle Cloud Native Environment guardando gli altri tutorial pubblicati su Oracle Linux Training Station.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.