2024.04.11追記
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の「デプロイ」の仕方についてまとめ。
実は https://t.co/hd4qEGJE26 でなくて https://t.co/lvlw5vGZxh のほうに公式の arm64 対応イメージがあるんですが、試されました?
— くろい (@kurokobo) 2024年3月20日
(ぼくは試したことなくて、中のひとがちゃんと動くか気にしてました)
- https://t.co/eHpXDSfre9
- https://t.co/ULPpFup64i
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