如何在 Kubernetes 集群上安裝 Ansible AWX
在本文中,我們將逐步向你展示如何在 Kubernetes(k8s)集群上安裝 Ansible AWX。
Ansible AWX 是一個強大的開源工具,用於管理和自動化 IT 基礎設施。AWX 為 Ansible 提供圖形用戶界面,使你可以輕鬆創建、安排和運行 Ansible 劇本 。
另一方面,Kubernetes 是一種流行的容器編排平台,廣泛用於部署和管理容器化應用。
先決條件:
- Kubernetes 集群
- Kubectl
- 具有 sudo 許可權和集群管理員許可權的普通用戶
- 互聯網連接
步驟 1:安裝 Helm
如果你的系統上安裝了 Helm,則在命令下運行以進行安裝,
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod +x get_helm.sh
$ ./get_helm.sh
$ helm version
步驟 2:安裝 AWX chart
在 Kubernetes 上安裝 AWX 的最簡單方法是使用 AWX Helm 「 海圖 」。因此,要通過 「海圖」 安裝 AWX,首先使用以下 helm
命令添加倉庫。(LCTT 譯註:Kubernetes 生態中大量使用了和航海有關的比喻,因此本文在翻譯時也採用了這些比喻)
$ helm repo add awx-operator https://ansible.github.io/awx-operator/
"awx-operator" has been added to your repositories
$
注意:如果你之前已經添加過此倉庫,請在命令下運行以獲取最新版本的軟體包。
$ helm repo update
要通過 Helm 安裝 awx-operator,請運行:
$ helm install ansible-awx-operator awx-operator/awx-operator -n awx --create-namespace
這將下載 AWX 海圖並將其安裝在 awx
命名空間中的 Kubernetes 集群上。安裝過程可能需要幾分鐘,請耐心等待。
步驟 3:驗證 AWX 操作員安裝
安裝成功後,你可以通過運行以下命令來驗證 AWX 操作員 狀態:
$ sudo kubectl get pods -n awx
你應該看到這樣的東西:
步驟 4: 創建 PV、PVC 並部署 AWX yaml 文件
AWX 需要 postgres 容器莢 的持久卷。那麼,讓我們首先為本地卷創建一個存儲類。
注意:在本文中,我使用本地文件系統作為持久卷。
$ vi local-storage-class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
namespace: awxprovisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
保存並關閉文件,然後運行:
$ kubectl create -f local-storage-class.yaml
$ kubectl get sc -n awx
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION
local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer false
$
接下來使用以下 pv.yaml
文件創建持久卷(PV):
$ vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv
namespace: awx
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
local:
path: /mnt/storage
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-worker
保存並退出文件。
重要說明:確保文件夾 /mnt/storage
存在於工作節點上,如果不存在,則在工作節點上使用 mkdir
命令創建它。在我們的例子中,工作節點是 k8s-worker
。
執行下面的命令在 awx
命名空間中創建 postgres-pv
。
$ kubectl create -f pv.yaml
成功創建 PV 後,使用 pvc.yaml
文件創建 PersistentVolumeClaim:
$ vi pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-13-ansible-awx-postgres-13-0
namespace: awx
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
要創建 PVC,請運行以下 kubectl
命令:
$ kubectl create -f pvc.yaml
使用下面的命令驗證 PV 和 PVC 的狀態:
$ kubectl get pv,pvc -n awx
現在,我們都準備好部署 AWX 實例了。創建一個包含以下內容的 ansible-awx.yaml
文件:
$ vi ansible-awx.yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: ansible-awx
namespace: awx
spec:
service_type: nodeport
postgres_storage_class: local-storage
保存並關閉文件。
執行以下 kubectl
命令來部署 awx 實例:
$ kubectl create -f ansible-awx.yaml
等待幾分鐘,然後檢查 awx
命名空間中的容器莢狀態。
$ kubectl get pods -n awx
步驟 5:訪問 AWX Web 界面
要訪問 AWX Web 界面,你需要創建一個公開 awx-web 部署的服務:
$ kubectl expose deployment ansible-awx-web --name ansible-awx-web-svc --type NodePort -n awx
此命令將創建一個 NodePort
服務,該服務將 AWX Web 容器的埠映射到 Kubernetes 節點上的埠。你可以通過運行以下命令找到埠號:
$ kubectl get svc ansible-awx-web-svc -n awx
這將輸出如下內容:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ansible-awx-web-svc NodePort 10.99.83.248 <none> 8052:32254/TCP 82s
在此示例中,Web 服務在埠 32254 上可用。
默認情況下,admin 用戶是 Web 界面的 admin
,密碼在 <resourcename>-admin-password
機密信息中。要檢索管理員密碼,請運行:
$ kubectl get secrets -n awx | grep -i admin-password
ansible-awx-admin-password Opaque 1 109m
$
$ kubectl get secret ansible-awx-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode ; echo
l9mWcIOXQhSKnzZQyQQ9LZf3awDV0YMJ
$
你現在可以打開 Web 瀏覽器並進入 http://<node-ip>:<node-port>/
來訪問 AWX Web 界面。在上面的示例中,URL 是:
http://192.168.1.223:3225
輸入憑據後單擊登錄。
恭喜! 你已在 Kubernetes 上成功安裝 Ansible AWX。你現在可以使用 AWX 來自動化你的 IT 基礎架構,並讓你作為系統管理員的生活更輕鬆。
(題圖:MJ/bfd354aa-2ee5-4555-98b8-ac5207cbeabe)
via: https://www.linuxtechi.com/install-ansible-awx-on-kubernetes-cluster/
作者:Pradeep Kumar 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive