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")]
引用也工作正常。
我正在尝试通过 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")]
引用也工作正常。