2年前にKubernetesで動くAWXをarmアーキテクチャのホストで動かそうとした際には、armプラットフォーム用のコンテナイメージが何一つ用意されてなく全部自前でビルドしてた。が、2024年現在、状況が結構変わってかなり簡単になってたので、今時点でどうすればarmプラットフォームにイメージビルドおよびAWXをデプロイできるかをまとめた。
2年前(しかも同じ3月20日だ笑)の状況は以下。
現状ではawx-eeイメージのarmプラットフォーム版が公開されているため、awxとawx-operatorの2つのイメージをビルドすればOK
※追記
ツイッター(現𝕏)でコメントを頂いて、awxもawx-operatorも、QuayではなくGitHub Container Registryで公式arm64版イメージが公開されているとのこと。
実際に試すと動いた(awxはdevelタグ使用)ので、自前でビルドする必要は一切なくなったっぽい。ありがたい…
実は https://t.co/hd4qEGJE26 でなくて https://t.co/lvlw5vGZxh のほうに公式の arm64 対応イメージがあるんですが、試されました?
— くろい (@kurokobo) 2024年3月20日
(ぼくは試したことなくて、中のひとがちゃんと動くか気にしてました)
- https://t.co/eHpXDSfre9
- https://t.co/ULPpFup64i
※※ さらにデプロイのみの件をまとめ
以下はせっかくなのでawxとawx-operatorに関して、投稿時のものをとりあえずそのまま。。
そしてこの2つのイメージは依存関係の多かったawx-eeとは異なり、それぞれ単体でビルドすればよく、コマンドもmake
だけなので、かなり楽。
イメージビルド
awx-operator
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
以前ブログにまとめたときは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-operatorとawxのみイメージ指定すればOK
AWXのデプロイ自体は以下も参照。
現在の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日でちょっとビビった(笑)