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 kubepara generar un archivo YAML de Kubernetes. A continuación, puede utilizar el comandopodman playpara 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 Copiar enlaceEnlace copiado en el portapapeles!
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 223df6b390b4Utilice el nombre o el ID del pod para generar el archivo YAML de Kubernetes:
$ podman generate kube mypod > mypod.yamlTenga en cuenta que el comando
podman generateno 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 mypodEnumerar 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 mypodAquí, el pod
mypody el contenedormyubiestán en estado "Exited".Para retirar la vaina
mypod:$ podman pod rm mypod 8a4e6527ac9d2276e8a6b9c2670608866dbcb5da3efbd06f70ec2ecc88e247ebTenga 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.