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:
- 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.
-
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 comandopodman 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 comandopodman 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
- El pod ha sido creado. Para más detalles, consulte Creación de pods.
Procedimiento
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
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.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: {}
Para detener la vaina
mypod
:$ podman pod stop mypod
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 contenedormyubi
están en estado "Exited".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.
Comprobar que se han retirado todos los contenedores y vainas:
$ podman ps $ podman pod ps
Recursos adicionales
-
La página de manual
podman-generate-kube
. - Podman: Managing pods and containers in a local container runtime, por Brent Baude.