ArgoCD 在 Azure Pipeline 中使用 terraform 引导

ArgoCD bootstrapping with terraform in Azure Pipeline

我正在尝试通过 Terraform 在 AKS 集群中部署位于子文件夹中的 ArgoCD 和应用程序。

这是我的文件夹结构树:

我正在使用 app of apps 方法,所以首先我将部署 ArgoCD(这也会自行管理),稍后 ArgoCD 将让我在安装后手动同步集群插件和应用程序。

apps
   cluster-addons
      AKV2K8S
      Cert-Manager
      Ingress-nginx
   application
      application-A
argocd
   override-values.yaml
   Chart

当我在 AKS 集群中手动 运行 命令“helm install ...”时,一切都安装正常。 ArgoCD 已安装,稍后当我访问 ArgoCD 时,我发现其余应用程序丢失,我可以手动同步它们。

但是,如果我想通过 Terraform 安装它,只安装了 ArgoCD,但看起来它没有“检测到”override_values.yaml 文件:

我的意思是,ArgoCD 和 ArgoCD 应用程序集控制器安装在集群中,但 ArgoCD 不“检测”为我的 AKS 集群定制的 values.yaml 文件。如果我 运行 在集群上手动“helm install”一切正常但不是通过 Terraform

resource "helm_release" "argocd_applicationset" {
  name       = "argocd-applicationset"
  repository = https://argoproj.github.io/argo-helm
  chart      = "argocd-applicationset"
  namespace  = "argocd"
  version    = "1.11.0"
}

resource "helm_release" "argocd" {
  name       = "argocd"
  repository = https://argoproj.github.io/argo-helm
  chart      = "argo-cd"
  namespace  = "argocd"
  version    = "3.33.6"
  values = [
    "${file("values.yaml")}"
  ]

values.yaml 文件位于我有安装 argocd 和 argocd 应用程序集的 TF 代码的文件夹中。

我试图将文件名“values.yaml”更改为“override_values.yaml”,但还是一样。

我在 override_values.yaml 文件中更改了很多东西,所以我不能在 TF 代码中使用“set”...

此外,我尝试添加:

 values = [
    "${yamlencode(file("values.yaml"))}"
  ]

但我在管道中的“应用”步骤中遇到此错误:

error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {} "argo-cd:\r\n  ## ArgoCD configuration\r\n  ## Ref: https://github.com/argoproj/argo-cd\r\n

可能是因为不是 JSON 文件?将此文件转换为 JSON 文件有意义吗?

知道我是否可以通过 terraform 传递这个覆盖值 yaml 文件吗?

如果没有,请 post 一个 clear/full 示例,其中包含关于如何使用 Azure 管道执行此操作的模拟变量?

提前致谢!

问题出在 TF 代码中的值缩进。

当我解决这个问题时,问题就解决了:

resource "helm_release" "argocd_applicationset" {
  name       = "argocd-applicationset"
  repository = https://argoproj.github.io/argo-helm
  chart      = "argocd-applicationset"
  namespace  = "argocd"
  version    = "1.11.0"
}

resource "helm_release" "argocd" {
  name       = "argocd"
  repository = https://argoproj.github.io/argo-helm
  chart      = "argo-cd"
  namespace  = "argocd"
  version    = "3.33.6"
  values = [file("values.yaml")]

引用也工作正常。