You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible AWX本地部署遇PostgreSQL密码认证失败及Secret配置异常求助

Ansible AWX本地部署遇PostgreSQL密码认证失败及Secret配置异常求助

看起来你在AWX本地部署过程中碰到了两个挺棘手的PostgreSQL相关问题,我来帮你一步步排查分析:


问题一:未指定Secret时Web Pod报密码认证失败

你提到删除PVC重新部署没用,大概率是PostgreSQL的旧数据没彻底清干净,导致AWX生成的新密码和PostgreSQL里留存的旧密码不匹配。可以按以下步骤排查:

  • 彻底清理PostgreSQL残留数据

    1. 先删除现有的PostgreSQL Pod和PVC:
      kubectl delete pod ansible-awx-postgres-13-0 -n awx
      kubectl delete pvc postgres-13-ansible-awx-postgres-13-0 -n awx
      
    2. 登录Kubernetes节点的宿主机,找到local-storage对应的存储目录(通常在/var/lib/kubelet/pods/<PodID>/volumes/kubernetes.io~local-storage/<PVC名称>),手动删除整个目录下的所有PostgreSQL数据文件。
    3. 重新应用AWX Manifest,让Operator重新初始化PostgreSQL实例。
  • 验证自动生成的Secret密码
    AWX Operator会自动创建名为ansible-awx-postgres-configuration的Secret,你可以解密查看里面的密码:

    kubectl get secret ansible-awx-postgres-configuration -n awx -o jsonpath='{.data.password}' | base64 -d
    

    然后进入PostgreSQL Pod验证密码是否匹配:

    kubectl exec -it ansible-awx-postgres-13-0 -n awx -- psql -U awx -d awx
    

    输入解密后的密码,如果能成功登录,说明密码没问题;如果登录失败,就需要彻底清理PostgreSQL数据后重新部署。


问题二:指定自定义Secret后仅Operator Pod运行

你的Secret配置存在几个关键错误,导致AWX无法正常创建相关资源:

  1. Secret语法错误
    你的secret.yaml里重复定义了type字段(type: unmanaged和type: Opaque),Kubernetes Secret只能有一个type值,需要删掉type: unmanaged;另外{{password}}是模板变量,你要替换成真实的密码字符串,不能直接保留这个变量。

    修正后的Secret示例:

    apiVersion: v1
    kind: Secret
    metadata:
      name: awx-postgres-password
      namespace: awx
    type: Opaque
    stringData:
      password: "YourSecurePassword123!"
    
  2. AWX Manifest参数误用
    postgres_configuration_secret是用来配置外部PostgreSQL的参数,如果你用的是Operator内置的PostgreSQL,应该用postgres_password_secret来指定自定义密码,而不是前者。

    修正后的AWX Manifest:

    apiVersion: awx.ansible.com/v1beta1
    kind: AWX
    metadata:
      name: ansible-awx
      namespace: awx
    spec:
      service_type: nodeport
      postgres_storage_class: local-storage
      postgres_password_secret: awx-postgres-password
    
  3. 重新部署流程
    先清理旧的AWX资源,再重新应用配置:

    kubectl delete awx ansible-awx -n awx
    kubectl apply -f secret.yaml -n awx
    kubectl apply -f awx.yaml -n awx
    

    之后用kubectl get pods -n awx观察Pod启动状态,等待所有组件就绪。


备注:内容来源于stack exchange,提问作者eia92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:58:04