zaki work log

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

[追記あり] 2024年3月現在のAWXのarm64ビルドの状況 (AWX 24.0.0 / Operator 2.13.1)

2年前にKubernetesで動くAWXarmアーキテクチャのホストで動かそうとした際には、armプラットフォーム用のコンテナイメージが何一つ用意されてなく全部自前でビルドしてた。が、2024年現在、状況が結構変わってかなり簡単になってたので、今時点でどうすればarmプラットフォームにイメージビルドおよびAWXをデプロイできるかをまとめた。

2年前(しかも同じ3月20日だ笑)の状況は以下。

zaki-hmkc.hatenablog.com

現状ではawx-eeイメージのarmプラットフォーム版が公開されているため、awxawx-operatorの2つのイメージをビルドすればOK

※追記
ツイッター(現𝕏)でコメントを頂いて、awxawx-operatorも、QuayではなくGitHub Container Registryで公式arm64版イメージが公開されているとのこと。
実際に試すと動いた(awxはdevelタグ使用)ので、自前でビルドする必要は一切なくなったっぽい。ありがたい…

※※ さらにデプロイのみの件をまとめ

zaki-hmkc.hatenablog.com

以下はせっかくなのでawxとawx-operatorに関して、投稿時のものをとりあえずそのまま。。


そしてこの2つのイメージは依存関係の多かったawx-eeとは異なり、それぞれ単体でビルドすればよく、コマンドもmakeだけなので、かなり楽。

イメージビルド

awx-operator

github.com

2年前と変わらず、Makefileがあるのでこれを使ってビルドする。

git clone https://github.com/ansible/awx-operator.git -b 2.13.1
cd awx-operator

パラメタは基本的に不要で、以下はビルドするイメージの名前を設定してる(イメージのpush用)。

make docker-build IMG=zakihmkc/awx-operator:2.13.1

awx

github.com

以前ブログにまとめたときはMakefileはあるけど使い方が分からなかったということがあったので再検証。
結果としては、awx-kube-buildをターゲットにビルドすればOKだった。
ただし各パラメタはちゃんと設定してあげないとエラーになるので注意。

git clone https://github.com/ansible/awx.git -b 24.0.0
cd awx
make awx-kube-build VERSION=24.0.0 SETUPTOOLS_SCM_PRETEND_VERSION=24.0.0 DEV_DOCKER_TAG_BASE=zakihmkc COMPOSE_TAG=24.0.0

Makefileを見ればわかるけど、ビルドされたイメージは$(DEV_DOCKER_TAG_BASE)/awx:$(COMPOSE_TAG)という名前になる。この例だとzakihmkc/awx:24.0.0

AWXデプロイ

awx-eeはquayにあるものがそのまま使えるので、awx-operatorawxのみイメージ指定すればOK

AWXのデプロイ自体は以下も参照。

zaki-hmkc.hatenablog.com

現在のAWX Operator 2.13.1だと、PostgreSQLが15になって、初回起動時はmigrationのPodが起動するようになってる。

kustomization.yaml

awx-operatorのイメージを自前のイメージになるような変更を定義する。

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.13.1

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

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

awx.yaml

awxのイメージとバージョン(タグ)を指定する。

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: arm-awx
  namespace: awx
spec:
  service_type: LoadBalancer
  loadbalancer_port: 8080
  image: zakihmkc/awx
  image_version: 24.0.0

アクセスすればこの通りポテト。

環境

ビルド環境

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"

$ uname -m
aarch64

$ docker --version
Docker version 25.0.5, build 5dc9bcc

実行環境

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"

$ uname -m
aarch64

 k3s --version
k3s version v1.28.7+k3s1 (051b14b2)
go version go1.21.7

armプラットフォームでのビルドとデプロイ、これだけで良くなったのはだいぶ気軽に使えるようになって良いね。 Docker Hubにはイメージ置いてるので、上のマニフェストですぐ使えるようにしてある。


2年前のAWXのarm64ビルドの記事も3月20日でちょっとビビった(笑)