Note:

Uso de ock-forge con Oracle Cloud Native Environment

Introducción

La herramienta Creador de imágenes de Oracle Container Host for Kubernetes (OCK Image Builder) crea las imágenes de Oracle Container Host for Kubernetes (OCK) utilizadas en los despliegues de Oracle Cloud Native Environment (CNE de Oracle). El creador de imágenes de OCK ayuda si la imagen de OCK por defecto utilizada por Oracle CNE no cumple sus requisitos como la necesidad:

El creador de imágenes de OCK es una recopilación de scripts de shell, el principal es ock-forge para generar una imagen de formato qcow2 de inicio para crear los nodos de cluster o una imagen de contenedor OSTree que Oracle CNE puede utilizar para actualizar nodos en un contenedor en ejecución.

Objetivos

En este tutorial aprenderá a:

Requisitos

Despliegue de Oracle Cloud Native Environment

Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.

  1. Abra un terminal en el escritorio Luna.

  2. Clone el proyecto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Cambie al directorio de trabajo.

    cd linux-virt-labs/ocne2
    
  4. Instale las recopilaciones necesarias.

    ansible-galaxy collection install -r requirements.yml
    
  5. Aumente el tamaño del volumen de inicio, instale libvirt y utilice 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: El creador de imágenes de OCK funciona mejor en Oracle Linux 9.

  6. Despliegue el entorno de prácticas.

    Instalar con la configuración personalizada.

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

    El entorno de prácticas gratuito necesita la variable adicional local_python_interpreter, que define ansible_python_interpreter para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete de RPM para el SDK para Python de Oracle Cloud Infrastructure, ubicado en los módulos python3.6.

    La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU de Intel u Oracle Linux 9, agregue -e instance_shape="VM.Standard3.Flex" o -e os_version="9" al comando de despliegue.

    Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, se ha completado la instalación de Oracle Cloud Native Environment y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria durante la ejecución del laboratorio.

Instalar el host de contenedor de Oracle para el creador de Kubernetes

Oracle Container Host for Kubernetes Builder (ock-forge) is a command-line tool for building bootable media Oracle Container Host for Kubernetes (OCK) OSTree-based images. ock-forge can generate virtual machine images in qcow2 format, raw disk images, or by writing directly to an existing block device. En este tutorial se muestra cómo crear y utilizar una imagen .qcow2 personalizada.

  1. Abra un terminal y conéctese mediante SSH a la instancia de ocne.

    ssh oracle@<ip_address_of_node>
    
  2. Instale Git y Podman.

    sudo dnf install -y git container-tools
    

    El programa ock-forge requiere Podman y utiliza Git para clonar los repositorios ock-forge y Configuración de host de contenedor de Oracle para Kubernetes (configuración de OCK) de GitHub.

  3. Clone el repositorio ock-forge.

    git clone https://github.com/oracle-cne/ock-forge
    
  4. Clone el repositorio de OCK Configuration.

    ock-forge utiliza la especificación de archivo de árbol de configuración de OCK para OCK para crear una imagen.

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

Creación de una Imagen OCK

A continuación, creará un dispositivo de bloques de red, agregará algunos paquetes de Linux adicionales a la imagen de OCK que creará y, a continuación, utilizará ock-forge para realizar todo el trabajo necesario para generar una imagen de OCK de inicio.

Activación de un dispositivo de bloque de red

ock-forge utiliza el dispositivo de bloque de red (NBD) para montar la imagen .qcow2 generada para que Oracle CNE pueda crear un cluster de Kubernetes.

  1. Cargue el módulo de núcleo NBD y asígnele ocho particiones.

    sudo modprobe nbd max_part=8
    
  2. Confirme que los dispositivos NBD estén presentes.

    ls -l /dev/nbd*
    

    Salida de ejemplo:

    [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
    

Personalización de la Creación de Imágenes de OCK

Puede definir paquetes de Linux adicionales para agregarlos a la imagen de OCK creada por ock-forge. La especificación de archivo de árbol que utiliza OCK-forge está en el repositorio GitHub OCK Configuration.

  1. Cree un directorio para el archivo de personalización.

    mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
    
  2. Cree un archivo de personalización para instalar los paquetes Vim y Emacs.

    cat << EOF | tee /home/oracle/ock-forge/ock/configs/config-1.31/custom/myconfig.yaml > /dev/null
    packages:
    - vim
    - emacs
    EOF
    
  3. Incluya el archivo de personalización en el archivo manifest.yaml.

    Nota: Puede agregar personalizaciones adicionales al archivo de configuración de Kubernetes para la creación de Kubernetes de destino.

    sed -i '23i - custom/myconfig.yaml' /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
    
  4. Confirme que el nuevo archivo de personalización aparece en la secuencia de creación de imagen de OCK definida en el archivo manifest.yaml.

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

    Salida de ejemplo:

    [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
    

Creación de la Imagen OCK

  1. Utilice ock-forge para crear la imagen 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
    

    Dónde:

    • -d: ruta de acceso a un dispositivo de bloques existente.
    • -D: ruta al archivo de imagen de disco.
    • -i: nombre de imagen de contenedor totalmente cualificado, incluida una etiqueta.
    • -C: directorio que contiene un juego de configuraciones rpm-ostree.
    • -c: directorio que contiene la configuración rpm-ostree que se va a crear.
    • -P: si se utiliza, este indicador hace que el dispositivo de bloques especificado por -d borre su tabla de particiones y la vuelva a rellenar con la geometría por defecto.
  2. Pulse Intro para aceptar el registro de contenedor por defecto (container-registry.oracle.com/ock-builder:latest).

    Nota: El proceso de creación tarda aproximadamente 30 minutos en completarse.

    Salida de ejemplo:

    [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
    

Modificar la imagen de OCK

Una vez finalizado el proceso de creación de la imagen de OCK, es posible crear usuarios, crear archivos, configurar la red, definir unidades systemd y mucho más en el archivo qcow2 mediante los archivos YAML de configuración de Butane que cumplen con el esquema de Butane. Para obtener más información, consulte la documentación de Butane ascendente.

A continuación, creará un archivo YAML compatible con Butane para crear un archivo de texto y configurar un nuevo usuario.

Uso de una configuración predeterminada

Puede aplicar personalizaciones de una de las dos formas siguientes:

En los siguientes pasos se muestra cómo convertir la personalización en el valor por defecto para todos los clusters de CNE de Oracle que cree.

  1. Convierta el directorio .ocne.

    mkdir /home/oracle/.ocne
    
  2. Agregue el archivo 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
    

    Dónde (consulte la documentación upstream para obtener más información):

    • variant:: se debe definir en fcos para su uso con Oracle CNE
    • version:: se debe definir en 1.5.0 para su uso con Oracle CNE
    • path:: /etcmyfile.txt (la ruta de acceso y el nombre de archivo para el archivo creado)
    • mode:: se define en 644 (ya ha leído y escrito que todos los demás solo pueden leerlo)
    • user: y group:: asigne la propiedad del archivo al UID y el GID especificados. En este ejemplo se define en el UID y el GID ocne
  3. Confirme el archivo creado.

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

Pruebe la nueva imagen de OCK creada por OCK-forge.

  1. Copie la imagen .qcow2 en la instalación de CNE de Oracle.

    sudo cp /home/oracle/ock-forge/out/1.31/boot.qcow2 /var/lib/libvirt/images/boot.qcow2-1.31
    
  2. Confirme la imagen .qcow2 copiada.

    sudo ls /var/lib/libvirt/images
    
  3. Inicie Oracle CNE mediante la imagen .qcow2.

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

    Salida de ejemplo:

    [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. Confirme que el cluster existe.

    ocne cluster list
    
  5. Defina la variable de entorno kubeconfig para el nuevo cluster.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  6. Obtenga una lista de sus nodos de cluster.

    kubectl get nodes
    
  7. Conéctese al nodo Worker.

    ocne cluster console --direct --node ocne-worker-1
    
  8. Confirme que existe el archivo myfile.txt.

    ls -lsa /etc/myfile.txt
    

    Salida de ejemplo:

    sh-4.4# ls -lsa /etc/myfile.txt
    4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:51 /etc/myfile.txt
    
  9. Confirme el paquete emacs instalado.

    ls /bin/emacs
    

    Salida de ejemplo:

    sh-4.4# ls /bin/emacs
    /bin/emacs
    
  10. Escriba exit para salir del nodo ocne-worker-1.

  11. Conéctese al nodo Plano de control.

    ocne cluster console --direct --node ocne-control-plane-1
    
  12. Confirme que existe el archivo myfile.txt.

    ls /etc/myfile.txt
    

    Salida de ejemplo:

    sh-4.4# ls -lsa /etc/myfile.txt
    4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:50 /etc/myfile.txt
    
  13. Confirme el paquete emacs instalado.

    ls /bin/emacs
    

    Salida de ejemplo:

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

    Confirmar que ha personalizado los nodos de cluster de Oracle CNE por defecto agregando un archivo de texto (/etc/myfile.txt) y un paquete (emacs) que no están presentes por defecto.

  14. Escriba exit para salir del nodo ocne-control-plane-1.

Eliminación del cluster

  1. Suprimir el cluster.

    ocne cluster delete
    
  2. Suprima el archivo defaults.yaml.

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

Actualización de la configuración de un único cluster

A continuación, creará y aplicará un archivo de personalización a un único cluster de CNE de Oracle.

  1. Cree un archivo de configuración.

    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. Confirme el archivo creado.

    cat /home/oracle/myconfig.yaml
    
  3. Inicie Oracle CNE mediante la imagen .qcow2.

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

    Salida de ejemplo:

    [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. Defina la variable de entorno kubeconfig para el nuevo cluster.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  5. Obtenga una lista de sus nodos de cluster.

    kubectl get nodes
    
  6. Conéctese al nodo Worker.

    ocne cluster console --direct --node ocne-worker-1
    
  7. Confirme que existe el archivo myfile.txt.

    ls -lsa /etc/myfile.txt
    
  8. Confirme el paquete emacs instalado.

    ls /bin/emacs
    
  9. Escriba exit para salir del nodo ocne-worker-1.

  10. Conéctese al nodo Plano de control.

    ocne cluster console --direct --node ocne-control-plane-1
    
  11. Confirme que existe el archivo myfile.txt.

    ls -lsa /etc/myfile.txt
    
  12. Confirme el paquete emacs instalado.

    ls /bin/emacs
    

    Confirmar que ha personalizado los nodos de cluster de Oracle CNE por defecto agregando un archivo de texto (/etc/myfile.txt) y un paquete (emacs) que no están presentes por defecto.

  13. Escriba exit para salir del nodo ocne-control-plane-1.

Eliminación del cluster

  1. Suprimir el cluster.

    ocne cluster delete
    

Pasos Siguientes

La personalización de los archivos de imagen OCK de CNE de Oracle permite modificar el entorno utilizado en los nodos de cluster de Kubernetes de CNE de Oracle. Continúe ampliando sus conocimientos sobre Kubernetes y Oracle Cloud Native Environment consultando nuestros otros tutoriales publicados en Oracle Linux Training Station.

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.