如何在 Kubernetes 集群上安装 Ansible AWX
source link: https://www.51cto.com/article/758543.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Ansible AWX 是一个强大的开源工具,用于管理和自动化 IT 基础设施。AWX 为 Ansible 提供图形用户界面,使你可以轻松创建、安排和运行 Ansible 剧本Playbook。
另一方面,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
Install-helm-linux-command-line
步骤 2:安装 AWX chart
在 Kubernetes 上安装 AWX 的最简单方法是使用 AWX Helm “海图chart”。因此,要通过 “海图” 安装 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
helm-install-awx-operator-kubernetes
这将下载 AWX 海图并将其安装在 awx
命名空间中的 Kubernetes 集群上。安装过程可能需要几分钟,请耐心等待。
步骤 3:验证 AWX 操作员安装
安装成功后,你可以通过运行以下命令来验证 AWX 操作员operator
$ sudo kubectl get pods -n awx
你应该看到这样的东西:
awx-operator-pod-status-kubectl
步骤 4: 创建 PV、PVC 并部署 AWX yaml 文件
AWX 需要 postgres 容器荚pod
注意:在本文中,我使用本地文件系统作为持久卷。
$ 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
保存并退出文件。
Postgres-pv-awx-kubernetes
重要说明:确保文件夹 /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
posgres-pvc-awx-kubernetes
要创建 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
Ansible-awx-yaml-file
保存并关闭文件。
执行以下 kubectl
命令来部署 awx 实例:
$ kubectl create -f ansible-awx.yaml
等待几分钟,然后检查 awx
命名空间中的容器荚状态。
$ kubectl get pods -n awx
Ansible-AWX-Pods-Status-Kubernetes
步骤 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 上可用。
Expose-Ansible-AWX-Web-NodePort-Kubernetes
默认情况下,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
AWX-Login-URL-Kubernetes
输入凭据后单击登录。
Ansible-AWX-Web-Dashboard
恭喜! 你已在 Kubernetes 上成功安装 Ansible AWX。你现在可以使用 AWX 来自动化你的 IT 基础架构,并让你作为系统管理员的生活更轻松。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK