zaki work log

作業ログやら生活ログやらなんやら

AWXのバックアップ・リストアが付属のpostgresql-15-c9s:latestでうまくいかないときのワークアラウンド

原因

現在標準の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

バックアップ/リストアPodでDocker Hubのpostgres:15の指定

postgres:15を使う場合は、AWXBackupとAWXRestoreリソースに(ドキュメントには記載はないけど)postgres_imagepostgres_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を検索する」まで頭が回らなかったけど、関連情報は以下

github.com

github.com

github.com

バックアップ・リストアのドキュメントは現状以下。

github.com

github.com

バックアップ時のログ

バックアップ・リストア用の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以降全て。