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

OpenShift集群中ArgoCD+Kustomize结合AVP配置遇阻求助

ArgoCD + Kustomize + argocd-vault-plugin 配置修复指南

问题概述

在OpenShift集群中使用ArgoCD结合Kustomize管理项目时,无法通过argocd-vault-plugin(AVP)从Vault读取Secrets数据:

  • Secrets中的数据始终显示为<password>,未被Vault值替换
  • 出现错误提示:cmp-server plugin with name "argocd-vault-plugin" supporting the given repository

当前使用的AVP CMP插件ConfigMap配置如下:

kind: ConfigMap
apiVersion: v1
metadata:
  name: cmp-plugin
  namespace: argocd
data:
  avp.yaml: |
    apiVersion: argoproj.io/v1alpha1
    kind: ConfigManagementPlugin
    metadata:
      name: argocd-vault-plugin
    spec:
      allowConcurrency: true
      discover:
        find:
          command:
            - sh
            - "-c"
            - "find . -name '*.yaml'"
      generate:
        command:
          - argocd-vault-plugin
          - generate
          - "."
      lockRepo: false

故障分析

  1. Discover规则冲突:当前插件的discover命令匹配所有YAML文件,与Kustomize默认处理流程冲突,ArgoCD无法区分需AVP处理的文件。
  2. 插件部署不完整:AVP的CMP插件未正确挂载到argocd-repo-server的Pod中,导致ArgoCD无法发现该插件。
  3. 应用未指定使用AVP插件:ArgoCD Application未配置调用argocd-vault-plugin,AVP未被触发执行。
  4. AVP环境配置缺失:未提供Vault连接所需的地址、认证信息等环境变量,AVP无法访问Vault。

修复步骤

1. 修正CMP插件的Discover规则

修改ConfigMap中的discover命令,仅匹配包含AVP注解的YAML文件,避免与Kustomize冲突:

kind: ConfigMap
apiVersion: v1
metadata:
  name: cmp-plugin
  namespace: argocd
data:
  avp.yaml: |
    apiVersion: argoproj.io/v1alpha1
    kind: ConfigManagementPlugin
    metadata:
      name: argocd-vault-plugin
    spec:
      allowConcurrency: true
      discover:
        find:
          command:
            - sh
            - "-c"
            - "find . -type f \\( -name '*.yaml' -o -name '*.yml' \\) | xargs grep -l 'avp\\.kubernetes\\.io/' || true"
      generate:
        command:
          - argocd-vault-plugin
          - generate
          - "."
      lockRepo: false

执行更新:

oc apply -f cmp-plugin.yaml -n argocd

2. 确保AVP插件挂载到argocd-repo-server

检查argocd-repo-server的Deployment,确认已挂载上述ConfigMap到CMP插件目录:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: argocd-repo-server
  namespace: argocd
spec:
  template:
    spec:
      volumes:
        - name: cmp-plugin
          configMap:
            name: cmp-plugin
      containers:
        - name: argocd-repo-server
          volumeMounts:
            - name: cmp-plugin
              mountPath: /home/argocd/cmp-server/plugins/avp.yaml
              subPath: avp.yaml

更新Deployment:

oc apply -f argocd-repo-server.yaml -n argocd

3. 配置ArgoCD应用使用AVP插件

在ArgoCD Application的spec.source中指定使用argocd-vault-plugin:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: your-app-name
  namespace: argocd
spec:
  source:
    repoURL: <你的Git仓库地址>
    targetRevision: HEAD
    path: <项目路径>
    plugin:
      name: argocd-vault-plugin
  destination:
    server: https://kubernetes.default.svc
    namespace: <目标命名空间>

应用配置:

oc apply -f your-app.yaml -n argocd

4. 配置AVP的Vault连接参数

在argocd-repo-server的Deployment中添加Vault所需的环境变量(以Kubernetes auth为例):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: argocd-repo-server
  namespace: argocd
spec:
  template:
    spec:
      containers:
        - name: argocd-repo-server
          env:
            - name: VAULT_ADDR
              value: "https://your-vault-address:8200"
            - name: VAULT_K8S_ROLE
              value: "argocd-role"
            - name: VAULT_AUTH_PATH
              value: "kubernetes"

如果使用Token认证,可将Token存储在Secret中并挂载:

env:
  - name: VAULT_TOKEN
    valueFrom:
      secretKeyRef:
        name: vault-token
        key: token

5. 验证OpenShift权限

确保argocd-repo-server使用的ServiceAccount具有访问Vault的权限:

  • 在Vault中绑定Kubernetes角色到argocd的ServiceAccount
  • 确保argocd-repo-serviceaccount有足够权限读取挂载的Secret/ConfigMap

验证方法

  1. 查看CMP插件日志,确认AVP执行情况:
oc logs -n argocd deployment/argocd-repo-server -c cmp-server
  1. 本地测试AVP生成命令,验证Vault值是否能正确替换:
argocd-vault-plugin generate /path/to/your/git/repo
  1. 查看ArgoCD应用同步状态,检查Secrets是否已正确填充Vault中的值:
oc get secret your-secret-name -n <目标命名空间> -o jsonpath='{.data.password}' | base64 -d

内容的提问来源于stack exchange,提问作者Rafael Ferreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:20:25