原因
現在標準のquay.io/sclorg/postgresql-15-c9s:latestはUID 26で動くので、「UID 26のユーザーがRead/Writeできない領域のボリュームへのバックアップ」が失敗する。
例えば↓のような「rootか特定のUIDでないと書き込めないNFSサーバー領域」とかね。
root@sample-app-85c7f885b4-65n46:~# ls -al /mnt/ total 28 drwxr-xr-x 7 1000 1000 4096 May 28 14:32 . drwxr-xr-x 1 root root 4096 May 28 13:41 .. drwxr-xr-x 2 root root 4096 May 27 08:31 tower-openshift-backup-2024-05-27-083135 drwxr-xr-x 2 root root 4096 May 28 12:48 tower-openshift-backup-2024-05-28-124841 drwxr-xr-x 2 root root 4096 May 28 13:06 tower-openshift-backup-2024-05-28-130641 drwxr-xr-x 2 root root 4096 May 28 13:19 tower-openshift-backup-2024-05-28-131910 drwxr-xr-x 2 root root 4096 May 28 13:48 tower-openshift-backup-2024-05-28-134803
回避策
恒久対策されるまではバックアップとリストアの際は、ファイルシステム側をUID 26で読み書きできるようにするか、UID 0で動作するdocker.ioで公開されているpostgres:15を使用(v2.11くらいまでの従来の構成)すればOK
もしパーミッションの問題なのであれば、修正入るまでは docker 版にするか PV の実ディレクトリを chown 26:0 して chmod 700 するのがひとまずのワークアラウンドです。
— くろい (@kurokobo) 2024年5月28日
修正が入ったら、ぼくの想定だと awxbackup に " postgres_data_volume_init: true" を足す、が恒久策になります。たぶん。
バックアップ/リストアPodでDocker Hubのpostgres:15の指定
postgres:15を使う場合は、AWXBackupとAWXRestoreリソースに(ドキュメントには記載はないけど)postgres_imageとpostgres_image_versionでイメージとタグを指定する。
--- apiVersion: awx.ansible.com/v1beta1 kind: AWXBackup metadata: name: awxbackup-2024-05-28-04 namespace: awx spec: deployment_name: awx backup_pvc: nfs-pv01-claim postgres_image: postgres # これ postgres_image_version: "15" # これ
--- apiVersion: awx.ansible.com/v1beta1 kind: AWXRestore metadata: name: awxrestore namespace: awx spec: deployment_name: awx backup_name: awxbackup-2024-05-28-04 postgres_image: postgres # これ postgres_image_version: "15" # これ
関連情報
調査中に「issueを検索する」まで頭が回らなかったけど、関連情報は以下
バックアップ・リストアのドキュメントは現状以下。
バックアップ時のログ
バックアップ・リストア用のPodはログを出力しないのでkubectl logsを実行してもログを確認できない。
ログを確認するには、OperatorのPodのログを確認すればバックアップ・リストアのためのAnsible Playbookを実行しているログを確認できる。
PVへ書き込み権限が無い場合は下記エラーが出力されている。
--------------------------- Ansible Task StdOut -------------------------------
TASK [Create directory for backup] ********************************
fatal: [localhost]: FAILED! => {"changed": true, "rc": 1, "return_code": 1, "stderr": "mkdir: cannot create directory '/backups/tower-openshift-backup-2024-05-28-135907': Permission denied\n", "stderr_lines": ["mkdir: cannot create directory '/backups/tower-openshift-backup-2024-05-28-135907': Permission denied"], "stdout": "", "stdout_lines": []}
確認バージョン
- AWX Operator: 2.17.0
- AWX: 24.4.0
※ DBにquay.io/sclorg/postgresql-15-c9s:latestを使用しているバージョンは(修正されるまでは)対象になるはず。おそらくOperator 2.12か2.13以降全て。