第13章 Podman を使用した OpenShift へのコンテナーの移植
YAML (YAML Ain't Markup Language) 形式を使用して、コンテナーおよび Pod の移植可能な記述を生成できます。YAML は、設定データの記述に使用されるテキスト形式です。
YAML ファイルは以下のとおりです。
- 読み取り可能
- 生成が簡単
- 環境間の移植性 (RHEL と OpenShift の間など)
- プログラミング言語間で移植が可能
- 使いやすい (全パラメーターをコマンドラインに追加する必要はない)。
YAML ファイルを使用する理由:
- 必要最小限の入力でオーケストレーションされたコンテナーおよび Pod のローカルオーケストレーションセットを再実行でき、反復型開発に役立ちます。
-
同じコンテナーおよび Pod を別のマシンで実行できます。たとえば、OpenShift 環境でアプリケーションを実行し、アプリケーションが正常に機能していることを確認します。
podman generate kube
コマンドを使用して、Kubernetes YAML ファイルを生成できます。次に、podman play
コマンドを使用して、生成された YAML ファイルを Kubernetes または OpenShift 環境に転送する前に、ローカルシステムで Pod およびコンテナーの作成をテストできます。podman play
コマンドを使用して、OpenShift または Kubernetes 環境で作成された Pod およびコンテナーを再作成することもできます。
注記
podman kube play
コマンドは、Kubernetes YAML 機能のサブセットをサポートします。詳細は、サポートされる YAML フィールドのサポートマトリックス を参照してください。
13.1. Podman を使用した Kubernetes YAML ファイルの生成
この手順では、1 つのコンテナーで Pod を作成し、podman generate kube
コマンドを使用して Kubernetes YAML ファイルを生成する方法を説明します。
前提条件
-
containers-tool
メタパッケージがインストールされている。 - Pod が作成されている。詳細は、Pod の作成 を参照してください。
手順
関連付けられている全 Pod およびコンテナーをリスト表示します。
$ podman ps -a --pod CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD 5df5c48fea87 registry.access.redhat.com/ubi9/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
Pod 名または ID を使用して Kubernetes YAML ファイルを生成します。
$ podman generate kube mypod > mypod.yaml
podman generate
コマンドは、コンテナーに接続されている論理ボリュームマネージャー (LVM) の論理ボリュームまたは物理ボリュームへは反映されないので注意してください。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/ubi9/ubi:latest name: myubi resources: {} securityContext: allowPrivilegeEscalation: true capabilities: {} privileged: false readOnlyRootFilesystem: false tty: true workingDir: / status: {}
関連情報
-
podman-generate-kube
の man ページ - Podman:Managing pods and containers in a local container runtime