Kubernetes cronjob args с env vars

Я пытаюсь выполнить команду curl внутри контейнера в gke.

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: app
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: app
            image: appropriate/curl
            env:
            - name: URL
              value: "https://app.com"
            - name: PASSWORD
              value: "pass"
            args: ["-vk", "-H", "\"Authorization: Bearer $(PASSWORD)\"", "$(URL)"]
          restartPolicy: OnFailure

Ошибка:

curl: option -vk -H "Authorization: Bearer pass" https://app.com: is unknown

Я просто не могу понять, как выполнить curl с полем args, используя переменные среды.

Эта команда curl работает на моем компьютере
Что я делаю не так?
Как я могу интегрировать переменные env с аргументами команды curl контейнера?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
4
0
7 602
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужно заключать заголовок auth в кавычки, kubernetes сделает это за вас.

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: app
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: app
            image: appropriate/curl
            env:
            - name: URL
              value: "app.com"
            - name: PASSWORD
              value: "pass"
            args: ["-vk", "-H", "Authorization: Bearer $(PASSWORD)", "$(URL)"]
          restartPolicy: OnFailure

Вы можете проверить выходной yaml, выполнив:

kubectl apply -f job.yaml -o yaml --dry-run

который показывает, что окончательный результат в порядке

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"batch/v1beta1","kind":"CronJob","metadata":{"annotations":{},"name":"app","namespace":"default"},"spec":{"jobTemplate":{"spec":{"template":{"spec":{"containers":[{"args":["-vk","-H","Authorization: Bearer $(PASSWORD)","$(URL)"],"env":[{"name":"URL","value":"https://app.com"},{"name":"PASSWORD","value":"pass"}],"image":"appropriate/curl","name":"app"}],"restartPolicy":"OnFailure"}}}},"schedule":"* * * * *"}}
  name: app
  namespace: default
spec:
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - args:
            - -vk
            - -H
            - 'Authorization: Bearer $(PASSWORD)'
            - $(URL)
            env:
            - name: URL
              value: https://app.com
            - name: PASSWORD
              value: pass
            image: appropriate/curl
            name: app
          restartPolicy: OnFailure

Я тестировал это с помощью https://requestbin.fullcontact.com/, и токен на предъявителя был передан без проблем

Могу ли я получить пароль из секретов Kubernetes?

Michael Freidgeim 15.02.2021 21:02

Другие вопросы по теме