Instalar awx-operator en k3s
Esto es una pequeña guía de cómo instalar awx utilizando awx-operator en k3s.
Los pasos los adapté de esta guía de linuxtechi
El requisito previo es tener k3s y helm instalado en nuestra máquina, si no sabes como, me preguntas por X
Como primer paso agregamos el repositorio de awx-operator a helm:
helm repo add awx-operator https://ansible.github.io/awx-operator/
Luego, instalamos el operador en nuestro cluster k3s, utilizando helm
helm install ansible-awx-operator awx-operator/awx-operator -n awx --create-namespace
Validamos que el pod del operador (que luego nos instalará los componentes que necesitemos) se encuentre en estado Running:
pulpo@pop-os:~$ kubectl get pods -n awx | grep opera
awx-operator-controller-manager-6569d67f4c-x5dbp 2/2 Running 5 (72m ago) 24h
Dado que k3s ya viene con un storage class por defecto para crear volúmenes dentro de la máquina donde se esté ejecutando, el siguiente paso es simplemente definir un volume claim, y un custom resource definition (si queremos explorar la lista completa de los crds de awx instalados podemos ejecutar kubectl get crds awxs.awx.ansible.com -o yaml; para nuestro caso de uso vamos a crear un archivo yaml con el siguiente contenido:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-13-ansible-awx-postgres-13-0
namespace: awx
spec:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: ansible-awx
namespace: awx
spec:
service_type: nodeport
postgres_storage_class: local-path
En mi caso le di un nombre al yaml, y luego lo apliqué contra el cluster ejecutando kubectl apply -f awx_manifest_for_operator.yaml
Después de unos momentos, el namespace awx deberá tener los pods en ejecución:
pulpo@pop-os:~$ kubectl get pods -n awx
NAME READY STATUS RESTARTS AGE
awx-operator-controller-manager-6569d67f4c-x5dbp 2/2 Running 5 (79m ago) 24h
ansible-awx-postgres-13-0 1/1 Running 0 55m
ansible-awx-task-6b4b565686-cbdg5 4/4 Running 0 54m
ansible-awx-web-799c7f78b5-dwr7k 3/3 Running 0 52m
Finalmente, exponemos el deployment de awx
kubectl expose deployment ansible-awx-web --name ansible-awx-web-svc --type NodePort -n awx
Obtenemos la password de admin que está guardada en un secreto de kubernetes:
kubectl get secret ansible-awx-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode ; echo
Y accedemos al puerto que haya creado el deployment (si no lo sabemos, lo obtenemos listando los svc):
pulpo@pop-os:~$ kubectl get svc -n awx ansible-awx-web-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ansible-awx-web-svc NodePort 10.43.66.87 <none> 8052:30087/TCP 53m
