首页 > 编程问答 >使用 Helmfile 插件进行 Argo CD 部署 - 未找到卷挂载

使用 Helmfile 插件进行 Argo CD 部署 - 未找到卷挂载

时间:2024-06-03 21:03:10浏览次数:27  
标签:kubernetes rancher argocd helmfile

我正试图在我的 Rancher kubernetes 集群中使用 Helmfile 插件设置 Argo CD 部署,并遵循此参考文档。但是,我遇到了找不到卷挂载的问题。以下是我的设置细节:

<代码
Deployment.yaml:
apiVersion: apps/v1
类型:部署
元数据:
  名称: argocd-repo-server
  命名空间: argocd
spec:
  template:
    spec:
      容器:
        - 名称: cmp-helmfile
          securityContext:
            runAsNonRoot: true
            runAsUser: 999
          image: ghcr.io/helmfile/helmfile:v0.157.0
          imagePullPolicy:IfNotPresent
          # 入口点应是 Argo CD 轻量级 CMP 服务器,即 argocd-cmp-server
          命令:[/var/run/argocd/argocd-cmp-server] # 入口点应该是 Argo CD 轻量级 CMP 服务器,即 argocd-cmp-server 命令。
          volumeMounts:
            - mountPath:/var/run/argocd
              名称: var-files
            - mountPath:/home/argocd/cmp-server/plugins
              名称: 插件
            - mountPath:/home/argocd/cmp-server/config/plugin.yaml
              subPath: plugin.yaml
              名称: cmp-helmfile
            - mountPath:/tmp
              名称: cmp-tmp
      卷:
        - 名称: cmp-helmfile
          configMap:
            名称: cmp-helmfile
        - emptyDir: {}
          name: cmp-tmp

错误信息:

错误信息:

    spec.template.spec.containers[0].volumeMounts[0].name: Not found: "var-files"
  • spec.template.spec.containers[0].volumeMounts[1].name: 未找到: "plugins"

我不确定 /var/run/argocd 的来源。根据参考文档,它似乎应该由 Argo CD 提供,但我找不到它应该如何挂载的详细信息。 问题:

/var/run/argocd 挂载应来自何处,在部署中应如何定义?
如何解决 var 文件和插件卷未找到的错误?

如果能就这些问题提供任何指导,我们将不胜感激。谢谢!


遇到的错误是因为正尝试在 cmp-helmfile 容器中挂载不存在的卷“var-files”和“plugins”。 这些卷在 Argo CD 的上下文之外没有意义,并且在提供的配置中未定义。

以下是解决此问题的步骤以及对问题的解答:

1. /var/run/argocd 挂载源

/var/run/argocd 挂载 不应 由提供。它是 Argo CD repo-server 容器内部的目录,其中包含 Git 存储库的本地缓存以及其他 Argo CD 数据。正在尝试在 cmp-helmfile 容器中使用 argocd-cmp-server ,它应该作为 Argo CD repo-server 内的插件 运行,而不是作为独立容器运行。

2. 如何修复错误

  • 不要将 cmp-helmfile 作为单独的容器运行。 Argo CD 提供了一个机制来注册 Config Management Plugins ,如 cmp-helmfile 。应该在 argocd-repo-server 部署中配置此插件,而不是创建单独的部署。

  • 使用 Argo CD Config Management Plugins 配置。

    • 需要一个 ConfigManagementPlugin 资源来注册 cmp-helmfile 。这将告诉 Argo CD 在哪里可以找到插件,以及如何执行它。
    • ConfigManagementPlugin 资源中,将指定 cmp-helmfile 容器镜像和命令。
    • 不需要为 cmp-helmfile 创建任何显式卷挂载。插件将在 argocd-repo-server 容器的上下文中运行,并可以访问 argocd-repo-server 容器的所有文件和目录,包括 /var/run/argocd

3. 示例配置

以下是如何配置 cmp-helmfile 作为 Argo CD 中的 Config Management Plugin 的示例:

# cmp-helmfile-plugin.yaml
apiVersion: argoproj.io/v1alpha1
kind: ConfigManagementPlugin
metadata:
  name: cmp-helmfile
spec:
  generate:
    command:
      - sh
      - -c
      - |
        helmfile --quiet -c $ARGOCD_APP_NAME/$ARGOCD_APP_NAMESPACE -f $ARGOCD_APP_SOURCE_PATH template --namespace $ARGOCD_APP_NAMESPACE > $ARGOCD_APPLICATION_MANIFEST
  discover:
    fileName: "helmfile.yaml"
  init:
    command:
      - sh
      - -c
      - |
        helmfile --quiet -c $ARGOCD_APP_NAME/$ARGOCD_APP_NAMESPACE -f $ARGOCD_APP_SOURCE_PATH deps
  environment:
    ARGOCD_APP_NAME: "{{.app.spec.source.repoURL}}"
    ARGOCD_APP_NAMESPACE: "{{.app.spec.destination.namespace}}"
    ARGOCD_APP_SOURCE_PATH: "{{.app.spec.source.path}}"

将此文件应用于的集群:

kubectl apply -f cmp-helmfile-plugin.yaml

通过这种配置,Argo CD 将使用 cmp-helmfile 插件来管理使用 helmfile.yaml 文件定义的应用程序。

其他说明:

  • 确保的 argocd-repo-server 部署具有足够的资源(CPU 和内存)来处理 cmp-helmfile 插件的执行。
  • 检查 Argo CD 文档以获取有关 Config Management Plugins 的更多信息:https://argo-cd.readthedocs.io/en/stable/user-guide/cmp-server/

标签:kubernetes,rancher,argocd,helmfile
From: 78570432

相关文章

  • Kubernetes Calico网络重大故障排查实战
    引言  在当前的Kubernetes实践环境中,Calico作为优选的网络解决方案应用非常广泛,它提供了高效的网络连接和安全策略管理,是构建和维护大规模云基础设施的关键组件,所以其稳定运行至关重要。Calico的简介与原理  Calico是一个纯三层的数据中心网络方案,它提供了高性能......
  • Kubernetes 多集群通信的五种方案
    Kubernetes多集群通信的五种方案原创 oilbeater 我的观点 2024-05-3108:03 北京 听全文oilbeater读完需要8分钟速读仅需3分钟随着企业的业务规模不断扩大,Kubernetes的使用也从单集群逐步扩展到多集群部署。多集群环境下,集群之间的通信成为一个重要的研究课......
  • Kubernetes——YAML文件编写
    目录一、创建Kubernetes对象YAML文件必备字段1.apiVersion2.kind3.metadata4.spec二、YAML格式基本规范1.结构表示2.键值对3.列表(数组)4.字典(映射)5.数据类型6.注释7.多文档支持8.复杂结构9.示例 三、YAML文件编写1.YAML文件的组成2.生成YAML文件框架2.1--d......
  • Kubernetes 集群的节点安装 kubectl
    如果您在机器上没有kubectl,但您有权限访问Kubernetes集群的节点,并且您有集群的kubeconfig文件,您可以手动创建或者传输kubeconfig文件到您的机器上。kubeconfig文件包含了访问Kubernetes集群所需的配置信息,包括集群地址、认证信息、默认命名空间等。通常情况下,kubeconf......
  • error: no configuration has been provided, try setting KUBERNETES_MASTER environ
    1:问题kubernetes集群,一台master,一台node1,一台node2,重启电脑后,node1节点和node2节点报错如下error:noconfigurationhasbeenprovided,trysettingKUBERNETES_MASTERenvironmentvariable2:解决方法2.1:查看master节点进入到该目录下cd/etc/kubernetes把admi......
  • Kubernetes脑图
          对于非技术人员来说,Kubernetes(常简称为K8s或Kube)是一个开源平台,它能让Linux容器的操作变得更加自动化和高效。以下是针对非技术人员的Kubernetes介绍,用简洁明了的方式解释了其主要特点和功能:定义和起源:Kubernetes(发音类似于“koo-ber-nay-tees”)源自希腊语,意为“舵......
  • ansible部署kubernetes(1.30)
    ansible部署kubernetes(1.30)操作系统使用的是ubuntu24.04,ansible使用rocky9.21.规划节点角色配置地址domainname备注master-012c,2g10.10.50.11k8s.master01.example.comnode-012c,10g10.10.50.14k8s.node01.example.comnode-022c,10g10.10.50.15k8s.node02.example.comn......
  • Kubernetes ExternalName类型的服务
    1、概述在《KubernetesHeadless服务》这篇博文中对KubenertesService资源类型进行了概述并详细介绍了Headless服务,通过这篇博文我们可以知道Service一般分为3种类型:ClusterIP、NodePort、LoadBalancer,唯独对ExternalName置若罔闻,本文将详细介绍KubernetesExternalName类......
  • Kubernetes StatefulSet 扩缩容与升级
    KubernetesStatefulSet扩缩容与升级StatefulSet扩容kubectlscalestsstateful-set-web--replicas=5root@k8s-master1:~#kubectlgetpods--watch-lapp=pod-nginxNAMEREADYSTATUSRESTARTSAGEstateful-set-web-01/1Runnin......
  • Kubernetes 硬盘持久化之 StorageClass
    Kubernetes硬盘持久化之StorageClassStorageClass定义StorageClass为管理员提供了描述存储"类"的方法。不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。这个类的概念在其他存储系统中有时被称为"配置文件"。每个StorageClass......