21 декабря 2022 г.
1083

Установка AWX operator в кластер kubernetes

Подготовка

AWX - это проект, позволяющий выполнять сценарии ansible используя web-интерфейс.

Сначала нужно установить Kustomize на master-server кластера, для этого выполнить команду
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
Создать файл ns-awx.yaml с содержимым
# namespace для awx
kind: Namespace
apiVersion: v1
metadata:
  name: awx
Создать файл pv-awx.yaml с содержимым
# PersistentVolume, в котором будет хранится база данных awx
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-volume-1
  labels:
    type: local
  namespace: awx
spec:
  capacity:
    storage: 8Gi
  accessModes:
    - ReadWriteOnce
  claimRef:
      namespace: awx
      name: postgres-13-awx-demo-postgres-13-0    #имя пода с postgres, резервирует хранилище только для этого пода
  hostPath:
    path: "/mnt/data/pg13"    #каталог в котором будут хранится данные на ноде
Создать файл kustomization.yaml со следующим содержимым
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - github.com/ansible/awx-operator/config/default?ref=1.1.2
  - awx-demo.yaml

images:
  - name: quay.io/ansible/awx-operator
    newTag: 1.1.2

namespace: awx
Вместо 1.1.2 указать последнюю версию отсюда https://github.com/ansible/awx-operator/releases.
В том же каталоге создать файл awx-demo.yaml с содержимым
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
spec:
  service_type: nodeport

Разворот

Namespace
kubectl apply -f ns-awx.yaml
PersistentVolume
kubectl apply -f pv-awx.yaml
Установка awx, указывается каталог с файлами kustomization.yaml и awx-demo.yaml.
kubectl apply -k ~/kustomization --kubeconfig /etc/kubernetes/admin.conf
Для удаления вместо apply подставить delete, выполняя команды в обратном порядке
Если разворот завис, возможно, не может загрузится образ awx-ee на slave-node и нужно загрузить вручную выполнив на слейве команду
docker pull quay.io/ansible/awx-ee:latest

Открыть панель управления можно по адресу http://ip-node:30080.

При развертывании создается секрет, по умолчанию пользователь admin, а пароль находится в секрете awx-demo-admin-password его можно получить командой
kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode

После входа в панель управления AWX можно сменить пароль. Для этого в правом верхнем углу нажать на имя пользователя, затем User Details, в открывшемся окне нажать на кнопку Edit, ввести новый пароль. После этого можно будет входить под этим паролем.

Если панель управления awx не открывается, можно посмотреть логи контейнеров командой
kubectl logs pod/awx-demo-78f476bdb-lzps5 -c awx-demo-web -n awx
Вторая половина названия под будет отличаться.
Если есть ошибки вида:
[wait-for-migrations] Waiting for database migrations...
[wait-for-migrations] Attempt 1 of 30
[wait-for-migrations] Waiting 0.5 seconds before next attempt
[wait-for-migrations] Attempt 2 of 30
[wait-for-migrations] Waiting 1 seconds before next attempt
[wait-for-migrations] Attempt 3 of 30
Нужно выполнить awx-manage migrate --noinput на поде awx-demo-78f476bdb-lzps5 (вторая половина названия будет отличаться), в контейнере awx-demo-web, для этого можно выполнить команду
kubectl -n awx exec -it awx-demo-78f476bdb-lzps5 -c awx-demo-web -- awx-manage migrate --noinput