Red Hat Training
A Red Hat training course is available for RHEL 8
Capítulo 7. Portando containers para OpenShift usando Podman
Este capítulo descreve como gerar descrições portáteis de recipientes e cápsulas usando o formato YAML (YAML Ain't Markup Language). O YAML é um formato de texto usado para descrever os dados de configuração.
Os arquivos da YAML são:
- Legível.
- Fácil de gerar.
- Portátil entre ambientes (por exemplo, entre RHEL e OpenShift).
- Portátil entre linguagens de programação.
- Conveniente de usar (não há necessidade de adicionar todos os parâmetros à linha de comando).
Razões para usar os arquivos YAML:
- Você pode executar novamente um conjunto orquestrado local de recipientes e cápsulas com o mínimo de entradas necessárias, o que pode ser útil para o desenvolvimento iterativo.
-
Você pode operar os mesmos recipientes e cápsulas em outra máquina. Por exemplo, para executar uma aplicação em um ambiente OpenShift e para garantir que a aplicação esteja funcionando corretamente. Você pode usar o comando
podman generate kubepara gerar um arquivo Kubernetes YAML. Depois, você pode usar o comandopodman playpara testar a criação de pods e containers em seu sistema local antes de transferir os arquivos YAML gerados para o ambiente Kubernetes ou OpenShift. Usando o comandopodman play, você também pode recriar os pods e containers originalmente criados em ambientes OpenShift ou Kubernetes.
7.1. Geração de um arquivo Kubernetes YAML usando Podman
Este procedimento descreve como criar uma cápsula com um recipiente e gerar o arquivo Kubernetes YAML usando o comando podman generate kube.
Pré-requisitos
- A cápsula foi criada. Para obter detalhes, consulte Criando cápsulas.
Procedimento
Liste todas as cápsulas e recipientes associados a elas:
$ 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
Use o nome ou ID da cápsula para gerar o arquivo Kubernetes YAML:
$ podman gera kube mypod > mypod.yaml
Observe que o comando
podman generatenão reflete nenhum volume lógico do Logical Volume Manager (LVM) ou volumes físicos que possam estar presos ao contêiner.Exibir o arquivo
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 parar a cápsula
mypod:$ podman podman stop mypod
Liste todas as cápsulas e recipientes associados a elas:
$ 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
Aqui, a cápsula
mypode o recipientemyubiestão em status de "Exilados".Para remover a cápsula
mypod:$ podman pod rm mypod 8a4e6527ac9d2276e8a6b9c2670608866dbcb5da3efbd06f70ec2ecc88e247eb
Note que a remoção da cápsula remove automaticamente todos os recipientes dentro dela.
Para verificar se todos os recipientes e cápsulas foram removidos:
$ podman ps $ podman pod ps
Recursos adicionais
-
A página do homem
podman-generate-kube. - Podman: Artigo de Brent Baude sobre agestão de cápsulas e recipientes em um contêiner local em tempo real.