2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

podman play kubeで永続化ストレージを使用する

Posted at

はじめに

CentOS8を動かしてみたらdockerが未サポートで代替として用意されているPodmanを使用してdocker-compose的なことをしたかったのだが、podman-composeは問題が多く開発も止まっている。podman公式でサポートされているkubernetesの設定ファイルを使用してPodを作成する方法があるのだが、いかんせんドキュメントも貧弱で情報が少なすぎた、、、。
ストレージの永続化に結構手間取ったのでその方法をまとめてみました。

何か問題があれば指摘してください。

環境

$ podman -v
podman version 2.0.5

$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

今回動かすもの

podman play kubeコマンドでWordpress+MariaDBを動かし、MariaDBのファイルを永続化してコンテナ再起動後も同じデータが使用できるようなPodの作成を目指します。

結論

kubernetesのvolumeのhostPathを使用する。
Referenceはこちら
$ podman play kube wp-pod.yml

wp-pod.yml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2020-07-01T20:17:42Z"
  labels:
    app: wp-pod
  name: wp-pod
spec:
  containers:
  - name: wptest-web
    env:
    - name: WORDPRESS_DB_NAME
      value: wp
    - name: WORDPRESS_DB_HOST
      value: 127.0.0.1
    - name: WORDPRESS_DB_USER
      value: wordpress
    - name: WORDPRESS_DB_PASSWORD
      value: w0rdpr3ss
    image: docker.io/library/wordpress:latest
    ports:
    - containerPort: 80
      hostPort: 8080
      protocol: TCP
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    workingDir: /var/www/html
  - name: wptest-db
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: myrootpass
    - name: MYSQL_USER
      value: wordpress
    - name: MYSQL_PASSWORD
      value: w0rdpr3ss
    - name: MYSQL_DATABASE
      value: wp
    image: docker.io/library/mariadb:latest
    resources: {}
    volumeMounts:
    - mountPath: /var/lib/mysql
      name: db-volume
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    workingDir: /
  volumes:
  - name: db-volume
    hostPath:
      path: /tmp/mariadb_data
      type: Directory
status: {}
  • 注意点
    フォルダを予め作成しておく必要がある
    今回ならば/tmp/mariadb_data

説明

肝となる設定が以下の2つです

  volumes:
  - name: db-volume
    hostPath:
      path: /tmp/mariadb_data
      type: Directory

こちらのvolumesでVolume名と、パスを設定し、

    volumeMounts:
    - mountPath: /var/lib/mysql
      name: db-volume

コンテナの設定のvolumeMountのところで先ほど作成したVolume名と、コンテナ内の永続化を行いたいパスの指定を行います。

確かめてみよう

http://localhost:8080
でWordpressの初期設定画面が出てくるので初期設定を済ませ、記事を1本適当に作ってみましょう
その後、

$ podman pod stop wp-pod
$ podman pod rm wp-pod

を行ってpodの削除を行いましょう。
その後、

$ podman play kube wp-pod.yml

でもう一度Podの作成を行い
http://localhost:8080
にアクセスして前と同じ記事が出てくるか確認してみましょう

最後に

一度わかるとDocker-composeとそこまで差がなくて大したことがないんですけど、この情報にたどり着くのが現状すごい大変でした。
まだまだバグも多い感じでpodmanのアップデート推奨です

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?