Red Hat Training

A Red Hat training course is available for RHEL 8

13장. Podman을 사용하여 OpenShift로 컨테이너 이식

YAML("YAML Ain't Markup Language") 형식을 사용하여 컨테이너 및 Pod에 대한 이식 가능한 설명을 생성할 수 있습니다. YAML은 구성 데이터를 설명하는 데 사용되는 텍스트 형식입니다.

YAML 파일은 다음과 같습니다.

  • 읽기 가능.
  • 손쉬운 생성.
  • 환경 간에 이식 가능(예: RHEL과 OpenShift 사이의).
  • 프로그래밍 언어 간 이식성.
  • 를 편리하게 사용할 수 있습니다(명령줄에 모든 매개 변수를 추가할 필요가 없음).

YAML 파일을 사용하는 이유:

  1. 반복적 개발에 유용할 수 있는 최소한의 입력으로 로컬 오케스트레이션된 컨테이너 및 Pod 세트를 다시 실행할 수 있습니다.
  2. 다른 머신에서 동일한 컨테이너 및 포드를 실행할 수 있습니다. 예를 들어 OpenShift 환경에서 애플리케이션을 실행하고 애플리케이션이 올바르게 작동하는지 확인하려면 다음을 수행합니다. podman generate kube 명령을 사용하여 Kubernetes YAML 파일을 생성할 수 있습니다. 그런 다음 podman play 명령을 사용하여 생성된 YAML 파일을 Kubernetes 또는 OpenShift 환경으로 전송하기 전에 로컬 시스템에서 Pod 및 컨테이너 생성을 테스트할 수 있습니다. podman play 명령을 사용하여 OpenShift 또는 Kubernetes 환경에서 원래 생성된 포드 및 컨테이너를 재생성할 수도 있습니다.
참고

podman kube play 명령은 Kubernetes YAML 기능의 하위 집합을 지원합니다. 자세한 내용은 지원되는 YAML 필드의 지원 매트릭스 를 참조하십시오.

13.1. Podman을 사용하여 Kubernetes YAML 파일 생성

하나의 컨테이너가 있는 Pod를 생성하고 podman generate kube 명령을 사용하여 Kubernetes YAML 파일을 생성할 수 있습니다.

사전 요구 사항

  • container-tools 모듈이 설치되어 있습니다.
  • 포드가 생성되었습니다. 자세한 내용은 Pod 생성 섹션을 참조하십시오.

절차

  1. 연결된 모든 Pod 및 컨테이너를 나열합니다.

    $ 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. Pod 이름 또는 ID를 사용하여 Kubernetes YAML 파일을 생성합니다.

    $ podman generate kube mypod > mypod.yaml

    podman generate 명령은 컨테이너에 연결될 수 있는 LVM(논리 볼륨 관리자) 논리 볼륨 또는 물리 볼륨을 반영하지 않습니다.

  3. 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: {}

추가 리소스