Skip to content

Geht’s auch einfach? – AWX 19 auf K3s installieren

Seit der Version 18 von AWX ist eine Installation nicht mehr auf einem “lokalen” Docker Host unterstützt. Stattdessen soll AWX über den AWX Operator auf Kubernetes installiert werden. Da jetzt nicht jeder einen Kubernetes Cluster sein Eigen nennt, habe ich die Installation von AWX 19.2.2 auf einem K3s Host durchgeführt.

Im Gegensatz zu Kubernetes bildet K3s viele Funktionalitäten von Kubernetes auf einer einzelnen Maschine ab. In meinem Fall läuft K3s auf einer Ubuntu 20.04 VM in meinem Homelab. Folgend zeige ich euch, wie ihr K3s und AWX 19.2.2 installiert.

Zunächst installieren wir Curl und im Anschluss laden wir uns damit K3s herunter und installieren es.

sudo apt install curl

curl -sfL https://get.k3s.io | sudo bash -

Den Status des Kubernetes / K3s Clusters prüfen wir nach der Installation.

root@vmkubernetes:~# kubectl get nodes
 NAME           STATUS   ROLES                  AGE    VERSION
 vmkubernetes   Ready    control-plane,master   142m   v1.21.2+k3s1

root@vmkubernetes:~# kubectl version --short
 Client Version: v1.21.2+k3s1
 Server Version: v1.21.2+k3s1

Um das Deployment des AWX-Operators in den Kubernetes Cluster durchzuführen, führen wir folgenden Befehl aus. In meinem Fall ist die aktuelleste Version des AWX-Operators 0.12.0. Welches die aktuellste Version ist, könnt ihr hier erfahren.

kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/0.12.0/deploy/awx-operator.yaml

Nach wenigen Minuten sollte die Abfrage der Kubernetes Pods folgende Ausgabe anzeigen:

root@vmkubernetes:~# kubectl get pods
 NAME                            READY   STATUS    RESTARTS   AGE
 awx-operator-545497f7d5-qmwtq   1/1     Running   0          21s

Jetzt nutzen wir ein Manifest um dem AWX-Operator mitzuteilen, in welcher Konfiguration wir AWX installiert haben möchten. In meinem Beispiel sieht das Manifest awx_19.yml so aus. Weitere Optionen die ihr im Manifest angeben könnt (z.B. ein Passwort des Admin Benutzers) könnt ihr in der offiziellen Dokumentation nachlesen.

---
 apiVersion: awx.ansible.com/v1beta1
 kind: AWX
 metadata:
   name: awx
 spec:
   service_type: nodeport
   projects_persistence: true
   projects_storage_access_mode: ReadWriteOnce

Nun wenden wir die Manifest Datei mit kubectl an.

kubectl apply -f awx_19.yml

Nun heißt es wieder einige Minuten warten. Irgendwann sollte eure Ausgabe dann so aussehen.

root@vmkubernetes:~# kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator"

 NAME                   READY   STATUS    RESTARTS   AGE
 awx-postgres-0         1/1     Running   0          24s
 awx-84bf6b6c4f-xhc2t   4/4     Running   0          12s

Abschließend lassen wir uns noch die URL zum AWX Container und das Password des admin Benutzers anzeigen.

root@vmkubernetes:~# kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator"
 NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
 awx-postgres   ClusterIP   None                    5432/TCP       2m
 awx-service    NodePort    10.43.153.151           80:32032/TCP   2m

root@vmkubernetes:~# kubectl get secret awx-admin-password -o jsonpath="{.data.password}" | base64 --decode
VdJC1YiXKm8OGPNOpWVojUamKQBZmwfd

Also greifen wir auf die IP Adresse des K3s Hosts mit dem in der oberen Ausgabe angegebenem Port 32032 zu. In meinem Fall ist das http://192.168.2.113:32032

Mit dem Benuzter admin und dem Passwort von Oben können wir uns anmelden.

Wen nun noch den dynamischen Port ändern möchte, kann den Kubernetes Service mit folgendem Kommando editieren.

kubectl edit svc awx-service
...
  ports:
  - name: http
    nodePort: 32000
    port: 80
    protocol: TCP
    targetPort: 8052
...

Philip

Update 06.07.2021: Leider musste ich feststellen, dass ich nach dem Neustart der Kubernetes VM die AWX Seite nicht mehr aufrufen konnte. Ich bekomme auf der Webseite keinen Fehler angezeigt. Schaue ich jedoch in das Logfile des Deployments, kann ich sehen, dass der Webseiten Container keine Dateien (Bilder, Seiten usw.) mehr finden kann.

kubectl logs -f deployments/awx awx-web

...
2021/07/05 22:58:16 [error] 25#0: *3 open() "/var/lib/awx/public/static/js/2.53c634ac.chunk.js" failed (2: No such file or directory), client: 10.42.0.1, server: , request: "GET /static/js/2.53c634ac.chunk.js HTTP/1.1", host: "vmkubernetes.home.lab:32032", referrer: "http://vmkubernetes.home.lab:32032/" 10.42.0.1 - - [05/Jul/2021:22:58:16 +0000] "GET /static/js/main.6ab990a9.chunk.js HTTP/1.1" 404 564 "http://vmkubernetes.home.lab:32032/" "Mozilla/5.0 (X11; CrOS armv7l 13597.84.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.187 Safari/537.36" "-" 2021/07/05 22:58:16 [error] 25#0: *1 open() "/var/lib/awx/public/static/js/main.6ab990a9.chunk.js" failed (2: No such file or directory), client: 10.42.0.1, server: , request: "GET /static/js/main.6ab990a9.chunk.js HTTP/1.1", host: "vmkubernetes.home.lab:32032", referrer: "http://vmkubernetes.home.lab:32032/"

Interessanterweise passiert das nur, wenn ich die VM tatsächlich reboote. Wenn ich sie herunterfahre und neu starte, funktioniert alles ohne Probleme.

Update 20.08.2021: Nach dem Update von AWX auf 19.3.0 und einem Update von K3S auf 1.21.3+k3s1 ist das Problem der nicht verfügbaren AWX Seite nach einem Reboot nicht mehr vorhanden.

Leave a Reply

Your email address will not be published. Required fields are marked *