zaki work log

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

(4/11追記) arm64版AWXをデプロイするだけなら自前のビルドは全く不要になってる件の補足とまとめ

2024.04.11追記

forum.ansible.com

AWX 24.2.0とAWX Operator 2.15.0がリリースされ、GitHub Container Registryにしかなかったarm64版awxイメージがquay.ioからもpullできるようになりました。

image repository tag
awx-operator quay.io/ansible/awx-operator 2.12.1以降
awx quay.io/ansible/awx 24.2.0以降
awx-ee quay.io/ansible/awx-ee 23.9.0以降

kustomizationとAWXリソースもかなりシンプルに記述できます。
というよりarm64版特有の記述がゼロになりました。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  # Find the latest tag here: https://github.com/ansible/awx-operator/releases
  - github.com/ansible/awx-operator/config/default?ref=2.15.0

# Set the image tags to match the git version from above
images:
  - name: quay.io/ansible/awx-operator
    newTag: 2.15.0

# Specify a custom namespace in which to install AWX
namespace: awx

AWX Operatorの2.15.0を使うと、awxとawx-eeはarm64版のある24.2.0がデフォルトで使用されます。

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-sample
  namespace: awx
spec:
  service_type: LoadBalancer
  loadbalancer_port: 8080

まとめ

必要なイメージは2024.03.21時点で以下のものがarm64対応してるのでこれ使えばおk

image repository tag デフォルト?
awx-operator quay.io/ansible/awx-operator:2.13.1 2.12.1以降 / latest /devel デフォルト
awx ghcr.io/ansible/awx devel 要指定
awx-ee quay.io/ansible/awx-ee 23.9.0 / 24.0.0 / latest デフォルト

本文

昨日書いたエントリで「awx-eeはarm版があるのでawxとawx-operatorだけビルドすればいい」とまとめてたけど、記事を見てくれた方からGitHub Container Registryに実は公式のarm64版イメージあるよと教えてもらって動作確認も手元でできたので、改めて2024年3月21日(JST)時点でのarm64版AWXの「デプロイ」の仕方についてまとめ。

kustomization

kustomization.yamlファイルはだいたい次のような感じ。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - github.com/ansible/awx-operator/config/default?ref=2.13.1
  #- github.com/ansible/awx-operator/config/default?ref=devel

 Set the image tags to match the git version from above
images:
- name: quay.io/ansible/awx-operator
  newTag: 2.13.1

namespace: awx

GitHubマニフェストは最新タグの2.13.1でも動くし、develでもOK
(他は未確認)

イメージについてはよくよく確認すると、Operatorも実はquayに上がってるイメージはバージョン2.12.1からarm64対応していた。
タグ一覧をみたときにタックスくんアイコンが並んでるものがマルチアーキテクチャ対応しているみたい。

なのでOperatorのバージョン(イメージタグ)は現在最新の2.13.1を指定していれば問題ないし、未指定の場合はlatestになるけどこれもarm64対応しているのでimages指定はまるっと無くても動く。

awx

AWXカスタムリソースについては、デフォルトではquayからawx本体をpullするけどこれはarm64対応していないので、ghcrからpullする指定が必須。
ただし2024.03.21時点ではghcrのイメージでもarm64対応しているのはdevelタグのイメージのみ。(latest/24.0.0のイメージはamd64のみ…そのうちマルチアーキテクチャ対応するかもだけど)

なのでこんな感じ。(service_type以下は環境にあわせる)

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-sample
  namespace: awx
spec:
  image: ghcr.io/ansible/awx
  image_version: devel
  service_type: LoadBalancer
  loadbalancer_port: 8080

これで無事にAWXをarm64アーキテクチャクラスタ上にデプロイでき、ジョブテンプレートも動作する。
めでたしめでたし🎉


AWXカスタムリソースでイメージの指定をしなかったら以下のようにエラーになる。

ubuntu@oci-l-a1-ubuntu:~/awx-ghcr$ kubectl get pod -n awx
NAME                                              READY   STATUS                  RESTARTS   AGE
awx-operator-controller-manager-8f8f4df5d-hpf4z   2/2     Running                 0          22m
awx-sample-postgres-15-0                          1/1     Running                 0          19m
awx-sample-task-cdd7d55d4-9t8hf                   0/4     Init:ImagePullBackOff   0          19m
awx-sample-web-56d647cc67-g8ztx                   1/3     ImagePullBackOff        0          19m

get eventするとこの通りプラットフォームアンマッチのエラーを確認できる。

19m         Warning   Failed                            pod/awx-sample-task-cdd7d55d4-9t8hf                          Failed to pull image "quay.io/ansible/awx:24.0.0": rpc error: code = NotFound desc = failed to pull and unpack image "quay.io/ansible/awx:24.0.0": no match for platform in manifest: not found