Передача TLA из argocd в jsonnet

#argocd #jsonnet

Вопрос:

Пытаюсь понять передачу TLA в мой файл jsonnet с помощью argocd. Это часть моего приложения argocd.yaml, который компилирует манифесты kube-prometheus, прямо из моего основного файла.jsonnet. Я хочу создать 2 приложения kube-prometheus в argocd (prod и не prod), и я хочу передать 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/
 

В моем основном файле.jsonnet у меня есть, например:

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

Новичок в jsonnet и argocd и не может заставить его работать. Могу ли я использовать TLA таким образом?

Ответ №1:

Если вы новичок jsonnet , я бы рекомендовал extVars вместо этого использовать, поскольку механику TLA несколько сложнее понять, из руководства по jsonnet для раздела TLA вы обнаружите, что вашему коду jsonnet требуется функция ввода с аргументами, названными после каждого имени аргумента верхнего уровня.

В качестве альтернативы, используя extVars, вы должны быть в состоянии сделать это вместо:

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

затем в любом месте вашего кода jsonnet ( extVars являются глобальными)

 hosts: ['grafana.'   std.extVar('npDomainSuffix')]