0

试图了解使用 argocd将 TLA 传递给我的 jsonnet 文件。这是我的 argocd application.yaml 的一部分,它直接从我的 main.jsonnet 文件编译 kube-prometheus 清单。我想在 argocd(prod 和 nonprod)中创建 2 个 kube-prometheus 应用程序,并且我想传递 TLA 来更改每个应用程序实例的入口主机名后缀。

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kube-prometheus-nonprod
  namespace: argocd
spec:
  destination:
    name: ''
    namespace: monitoring
    server: 'https://kubernetes.default.svc'
  source:
    path: kube-prometheus/src
    repoURL: 'https://myrepo.git'
    targetRevision: branch-name
    directory:
      jsonnet:
        tlas:
          - name: npDomainSuffix
            value: np.example.io
      libs:
        - kube-prometheus/vendor/

在我的 main.jsonnet 文件中,例如:

hosts: ['grafana.$(npDomainSuffix)']

jsonnet 和 argocd 的新手,无法使其正常工作。我可以以这种方式使用 TLA 吗?

4

1 回答 1

2

如果您是新手jsonnet,我建议您extVars改用 TLA 机制,因为 TLA 机制有点难以掌握,从 TLA 部分的jsonnet 教程中,您会发现您的 jsonnet 代码需要一个入口函数,其参数以每个顶部命名-级别参数名称。

或者,使用 extVars 你应该可以这样做:

        extVars:
          - name: npDomainSuffix
            value: np.example.io

然后在您的 jsonnet 代码中的任何位置(extVars全局的)

hosts: ['grafana.' + std.extVar('npDomainSuffix')]
于 2021-06-16T12:24:05.827 回答