AWX 部署

基础环境

需要一个 K8S 集群,执行 kubectl 的节点需要安装 helm,提前准备存储,这里使用 NFS。

Helm 配置

添加 repo

[root@base-k8s-master-1 ~]# helm repo add awx-operator \
    https://ansible-community.github.io/awx-operator-helm/
"awx-operator" has been added to your repositories

查看 value

[root@base-k8s-master-1 ~]# helm show values awx-operator > awx-helm-value.yml
[root@base-k8s-master-1 ~]# cat awx-helm-value.yml
AWX:
  # enable use of awx-deploy template
  enabled: false
  name: awx
  spec:
    admin_user: admin

  # configurations for external postgres instance
  postgres:
    enabled: false
    host: Unset
    port: 5678
    dbName: Unset
    username: admin
    # for secret management, pass in the password independently of this file
    # at the command line, use --set AWX.postgres.password
    password: redhat
    sslmode: prefer
    type: unmanaged
  service:
    type: NodePort
    port: 30001

先最简单部署,不做修改。

安装 AWX Operator

[root@base-k8s-master-1 ~]# kubectl create namespace awx
namespace/awx created
[root@base-k8s-master-1 ~]# helm install awx-operator awx-operator/awx-operator \
    -n awx --values awx-helm-value.yml
NAME: awx-operator
LAST DEPLOYED: Sat Feb  1 00:34:09 2025
NAMESPACE: awx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
AWX Operator installed with Helm Chart version 2.19.1

检查 AWX Operator 状态。

[root@base-k8s-master-1 ~]# kubectl get pod -n awx
NAME                                               READY   STATUS    RESTARTS   AGE
awx-operator-controller-manager-7f755f5f8d-n7xpv   2/2     Running   0          17s

利用 AWX Operator 部署 AWX

https://ansible.readthedocs.io/projects/awx-operator/en/latest/index.html

创建 PersistentVolume 和 PersistentVolumeClaim

创建 PersistentVolume 和 PersistentVolumeClaim 时不能修改名字。

PersistentVolume

PostgreSQL

apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-15-ansible-awx-postgres-15-0-pv
  namespace: awx
  labels:
    app: awx-postgresql
spec:
  capacity:
    storage: 20Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /data/awx/postgres_data
    server: nfs-storage.example.com
  claimRef:
    name: postgres-15-ansible-awx-postgres-15-0
    namespace: awx

AWX Web Project

apiVersion: v1
kind: PersistentVolume
metadata:
  name: ansible-awx-projects-claim-pv
  namespace: awx
  labels:
    app: awx-project
spec:
  capacity:
    storage: 20Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /data/awx/awx_project
    server: nfs-storage.example.com
  claimRef:
    name: ansible-awx-projects-claim
    namespace: awx

PersistentVolumeClaim

PostgreSQL

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-15-ansible-awx-postgres-15-0
  namespace: awx
spec:
  selector:
    matchLabels:
      app: awx-postgresql
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

AWX Web Project

AWX Web Project 不需要提前配置 PersistentVolumeClaim,安装时会自动创建 PersistentVolumeClaim,提前创建会导致部署 ansible-awx-web 时卡住。

部署 AWX

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: ansible-awx
  namespace: awx
spec:
  service_type: nodeport
  projects_persistence: true
  projects_storage_access_mode: ReadWriteOnce
  image: quay.example.com/kubernetes/ansible/awx
  image_version: latest
  image_pull_policy: IfNotPresent
  ee_images:
    - name: my-custom-awx-ee
      image: quay.example.com/kubernetes/ansible/awx-ee
  control_plane_ee_image: quay.example.com/kubernetes/ansible/awx-ee:latest
  init_container_image: quay.example.com/kubernetes/ansible/awx-ee
  init_container_image_version: latest
  init_projects_container_image: quay.example.com/kubernetes/ansible/centos:stream9
  redis_image: quay.example.com/kubernetes/ansible/redis
  redis_image_version: '7'
  postgres_image: quay.example.com/kubernetes/ansible/postgresql-15-c9s
  postgres_image_version: latest
  postgres_data_volume_init: true

这里我是将 image 下载来下传到了私有仓库上,默认镜像可以查看 https://github.com/ansible/awx-operator/blob/devel/roles/installer/defaults/main.yml

创建 Service

部署 AWX 的时候会默认创建一个 nodePort 模式的 Service,不过端口是随机的,我现在还没有 ingress,就创建了一个固定端口的 nodePort service。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: awx-service
  name: awx-service
  namespace: awx
spec:
  ports:
  - name: http
    nodePort: 30001
    port: 80
    protocol: TCP
    targetPort: 8052
  selector:
    app.kubernetes.io/name: ansible-awx-web
  type: NodePort

获取密码

[root@base-k8s-master-1 ~]# kubectl get secrets -n awx \
    ansible-awx-admin-password \
    -o jsonpath={.data.password} | base64 --decode && echo
4O6IGTzixpEsPNNpqGeDvvNhhtsZ3fAt

访问 AWX

访问 Worker 节点的 30001 端口即可访问 AWX。

AWX 部署
https://www.linuxstudynotes.com/2025/02/05/k8s/awx-%e9%83%a8%e7%bd%b2/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇