带有 env vars 的 Kubernetes cronjob args

ita*_*ied 4 curl docker kubernetes

我正在尝试curlgke.

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
Run Code Online (Sandbox Code Playgroud)

错误:

curl: option -vk -H "Authorization: Bearer pass" https://app.com: is unknown
Run Code Online (Sandbox Code Playgroud)

我只是不知道如何使用环境变量curlargs字段中执行。

这个 curl 命令适用于我的电脑。
我究竟做错了什么?
如何将环境变量与容器 curl 命令参数集成?

jax*_*orm 10

您不需要将 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
Run Code Online (Sandbox Code Playgroud)

您可以通过执行以下操作来测试输出 yaml:

kubectl apply -f job.yaml -o yaml --dry-run
Run Code Online (Sandbox Code Playgroud)

这表明最终输出很好

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
Run Code Online (Sandbox Code Playgroud)

我使用https://requestbin.fullcontact.com/对此进行了测试,并且不记名令牌已顺利通过