Skip to content

Ubuntu 22.04.4LTS へ k3s で AWX Operator を起動する

Ubuntu 22.04.4LTS へ K3s を使って AWX Operator を起動する手順をメモしておきます。 以下のメモも参考にします。

検証環境

対象 バージョン
Ubuntu 22.04.4LTS
k3s v1.28.8+k3s1 (653dd61a)
kustomize 5.4.1

k3s と kustomize のインストール

k3s と kustomize をインストールしておきます。

1
2
3
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644 && \
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash && \
mv kustomize /usr/local/bin/

実行したホストがノード登録されました。

1
2
3
# k3s kubectl get node
NAME        STATUS   ROLES                  AGE   VERSION
localhost   Ready    control-plane,master   24m   v1.28.8+k3s1

awx 名前空間の定義

AWX Operator の構築手順は Basic Install に記載されています。 予め、AWX Operator または Releases いずれかのページで最新のバージョンを確認しておきます。 現時点では 2.14.0 でした。

file

先に確認したバージョン情報も加味した上で以下の内容にしました。 異なるバージョンの AWX Operator をインストールしたい場合は、バージョン部分を修正します。

kustomization.yaml
1
2
3
4
5
6
7
8
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - github.com/ansible/awx-operator/config/default?ref=2.14.0
images:
  - name: quay.io/ansible/awx-operator
    newTag: 2.14.0
namespace: awx

マニフェストを適用します。

kustomize build . | kubectl apply -f -

これで awx 名前空間が定義されました。 kubectl get pods -n awx で確認出来ます。

1
2
3
# kubectl get pods -n awx
NAME                                               READY   STATUS              RESTARTS   AGE
awx-operator-controller-manager-6458cd4798-nlvpl   0/2     ContainerCreating   0          7s

AWX Operator の構築

AWS Operator を起動する為に .yaml ファイルを修正します。 kustomization.yaml には resources の定義に awx-demo.yaml を追加します。

kustomization.yaml
1
2
3
4
5
6
7
8
9
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - github.com/ansible/awx-operator/config/default?ref=2.14.0
  - awx-demo.yaml
images:
  - name: quay.io/ansible/awx-operator
    newTag: 2.14.0
namespace: awx

AWX Operator の起動に必要な .yaml ファイルのサンプルは awx-operator / awx-demo.yml にあります。 今回はポート番号の指定を加え、以下の内容で awx-demo.yaml というファイルを新規作成しました。

awx-demo.yaml
1
2
3
4
5
6
7
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
spec:
  service_type: nodeport
  nodeport_port: 30080

マニフェストを再適用します。

kustomize build . | kubectl apply -f -

コンテナが起動します。 但し、AWX Operator はそこそこ重く、起動に時間がかかります…

1
2
3
# kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx
NAME                     READY   STATUS    RESTARTS   AGE
awx-demo-postgres-15-0   1/1     Running   0          23s

私の環境では必要なコンテナが全て Running 状態になるまで 5 から 6 分かかりました。

1
2
3
4
5
# kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx
NAME                             READY   STATUS    RESTARTS   AGE
awx-demo-postgres-15-0           1/1     Running   0          6m58s
awx-demo-web-fc74f65b9-gtf8l     3/3     Running   0          6m11s
awx-demo-task-5b784cd899-zkwj6   4/4     Running   0          6m10s

AWX Operator へのログイン

AWX Operator の管理者 (admin ユーザ) 初期パスワードは kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode で確認出来ます。 実際の実行例は以下の通りです。

1
2
# kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode
1234567890ABCDEF1234567890ABCDEF

初期パスワードを確認したら Web ブラウザで http://ADDRESS:30080 へアクセスすると以下のように表示されます。 ユーザには admin を、パスワードには確認した初期パスワードでログイン出来ます。

file

正しくログイン出来れば以下のような画面が表示されます。

file

AWX Operator が Listen しているポートの確認

今回は AWX Operator が Listen するポート番号をマニフェスト内で指定しています。 もし値を指定しなかった場合は kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator" -n awx でポート番号を確認することが出来ます。

1
2
3
4
# kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator" -n awx
NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
awx-demo-postgres-15   ClusterIP   None           <none>        5432/TCP       17m
awx-demo-service       NodePort    10.43.209.47   <none>        80:30080/TCP   16m