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:

  1. 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.
  2. 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 kube para gerar um arquivo Kubernetes YAML. Depois, você pode usar o comando podman play para 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 comando podman 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

Procedimento

  1. 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
  2. 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 generate não reflete nenhum volume lógico do Logical Volume Manager (LVM) ou volumes físicos que possam estar presos ao contêiner.

  3. 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: {}
  4. Para parar a cápsula mypod:

    $ podman podman stop mypod
  5. 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 mypod e o recipiente myubi estão em status de "Exilados".

  6. 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.

  7. Para verificar se todos os recipientes e cápsulas foram removidos:

    $ podman ps
    $ podman pod ps

Recursos adicionais