Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 7. Portar contenedores a OpenShift usando Podman

Este capítulo describe cómo generar descripciones portátiles de contenedores y pods utilizando el formato YAML (\ "YAML Ain't Markup Language"). El YAML es un formato de texto utilizado para describir los datos de configuración.

Los archivos YAML son:

  • Legible.
  • Fácil de generar.
  • Portátil entre entornos (por ejemplo entre RHEL y OpenShift).
  • Es portátil entre los lenguajes de programación.
  • Es cómodo de usar (no es necesario añadir todos los parámetros a la línea de comandos).

Razones para utilizar archivos YAML:

  1. Puede volver a ejecutar un conjunto local orquestado de contenedores y vainas con una entrada mínima requerida que puede ser útil para el desarrollo iterativo.
  2. Puede ejecutar los mismos contenedores y pods en otra máquina. Por ejemplo, para ejecutar una aplicación en un entorno OpenShift y asegurarse de que la aplicación funciona correctamente. Puede utilizar el comando podman generate kube para generar un archivo YAML de Kubernetes. A continuación, puede utilizar el comando podman play para probar la creación de pods y contenedores en su sistema local antes de transferir los archivos YAML generados al entorno Kubernetes u OpenShift. Utilizando el comando podman play, también puede recrear pods y contenedores creados originalmente en entornos OpenShift o Kubernetes.

7.1. Generación de un archivo YAML de Kubernetes con Podman

Este procedimiento describe cómo crear un pod con un contenedor y generar el archivo YAML de Kubernetes utilizando el comando podman generate kube.

Requisitos previos

Procedimiento

  1. Enumerar todos los pods y contenedores asociados a ellos:

    $ podman ps -a --pod
    CONTAINER ID  IMAGE                                       COMMAND    CREATED                 STATUS                     PORTS  NAMES               POD
    5df5c48fea87  registry.access.redhat.com/ubi8/ubi:latest  /bin/bash  Less than a second ago  Up Less than a second ago         myubi               223df6b390b4
    3afdcd93de3e  k8s.gcr.io/pause:3.1                                   Less than a second ago  Up Less than a second ago         223df6b390b4-infra  223df6b390b4
  2. Utilice el nombre o el ID del pod para generar el archivo YAML de Kubernetes:

    $ podman generate kube mypod > mypod.yaml

    Tenga en cuenta que el comando podman generate no refleja los volúmenes lógicos de Logical Volume Manager (LVM) ni los volúmenes físicos que puedan estar adjuntos al contenedor.

  3. Muestra el archivo mypod.yaml:

    $ cat mypod.yaml
    # Generation of Kubernetes YAML is still under development!
    #
    # Save the output of this file and use kubectl create -f to import
    # it into Kubernetes.
    #
    # Created with podman-1.6.4
    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: "2020-06-09T10:31:56Z"
      labels:
    app: mypod
      name: mypod
    spec:
      containers:
      - command:
            - /bin/bash
            env:
            - name: PATH
                  value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
            - name: TERM
                  value: xterm
            - name: HOSTNAME
            - name: container
                  value: oci
            image: registry.access.redhat.com/ubi8/ubi:latest
            name: myubi
            resources: {}
            securityContext:
                  allowPrivilegeEscalation: true
                  capabilities: {}
                  privileged: false
                  readOnlyRootFilesystem: false
            tty: true
            workingDir: /
    status: {}
  4. Para detener la vaina mypod:

    $ podman pod stop mypod
  5. Enumerar todos los pods y contenedores asociados a ellos:

    $ podman ps -a --pod
    CONTAINER ID  IMAGE                               COMMAND    CREATED             STATUS                    PORTS   NAMES               POD ID        PODNAME
    12fc1ada3d4f  registry.redhat.io/ubi8/ubi:latest  /bin/bash  About a minute ago  Exited (0) 7 seconds ago          myubi               8a4e6527ac9d  mypod
    
    8bb1daaf81fe  k8s.gcr.io/pause:3.2                           About a minute ago  Exited (0) 7 seconds ago          8a4e6527ac9d-infra  8a4e6527ac9d  mypod

    Aquí, el pod mypod y el contenedor myubi están en estado "Exited".

  6. Para retirar la vaina mypod:

    $ podman pod rm mypod
    8a4e6527ac9d2276e8a6b9c2670608866dbcb5da3efbd06f70ec2ecc88e247eb

    Tenga en cuenta que al eliminar el pod se eliminan automáticamente todos los contenedores que hay en su interior.

  7. Comprobar que se han retirado todos los contenedores y vainas:

    $ podman ps
    $ podman pod ps

Recursos adicionales