kubernetes 自动为ArgoCD应用程序提供指向外部源的补丁

u5rb5r59  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(208)

所以我的问题是,我有一个ArgoCD应用程序,它指向一个外部repo URL,如下所示

  1. apiVersion: argoproj.io/v1alpha1
  2. kind: Application
  3. metadata:
  4. name: emissary
  5. namespace: argocd
  6. spec:
  7. destination:
  8. namespace: emissary
  9. server: https://kubernetes.default.svc
  10. project: admin
  11. sources:
  12. - repoURL: 'ambassador' #i know it is wrong, but i have the right source in my real yaml
  13. targetRevision: 8.9.1
  14. chart: emissary-ingress

字符串
这个应用程序部署了一个Helm Chart,其中定义了一个资源Kind: Service

  1. spec:
  2. ports:
  3. - name: name
  4. port: 8080
  5. ...


现在,我想实现的是能够以自动化的方式将另一个端口添加到端口数组中。目前,该过程包括将Application manifest上传到gitlab,然后等待argoCD创建Helm chart中定义的所有内容。之后,我手动执行

  1. kubectl patch svc svc-name --patch-file patch.yaml
  2. kubectl rollout restart deployment deployment-name


但理想情况下,这个过程也需要自动化,我不知道如何做到这一点。不幸的是,服务资源的spec参数不是一个可以设置的参数或值。如果有人想看看我的具体情况,我会离开repository link,我会很高兴地讨论每一个解决方案,因为我是一个新的操作世界,我可以学得越多越好
编辑:我粘贴了错误的代码位

mftmpeh8

mftmpeh81#

没有内置的方法可以以这种方式修补ArgoCD应用程序。您必须创建已应用补丁的svc文件,将文件推送到Git repo,然后将ArgoCD应用程序路径指向此svc文件,以便ArgoCD能够正确部署它。如果您使用Jenkins之类的东西,每次提交时都会运行构建,你可以考虑在构建时自动添加补丁文件,然后从那个补丁版本创建一个标记。2然后你可以在ArgoCD中引用这个标记,而不是直接引用一个分支。

相关问题