using curl command in pod lifecycle poststart hooks

Viewed 881

I was trying to add a poststart hook for my pod using curl, say sending a message to my slack channel in shell, the command looks like this

curl -d "text=Hi I am a bot that can post messages to any public channel." -d "channel=C1234567" -H "Authorization: Bearer xoxb-xxxxxxxxxxxxxxxx" -X POST https://slack.com/api/chat.postMessage

and in my pod definition, i tried sth like this

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: curlimages/curl
      env:
        - name: TOKEN
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: token
      command: ["sleep"]
      args: ["3000"]
      lifecycle:
        postStart:
          exec:
            command:
              - "sh"
              - "-c"
              - |
                curl -d "text=Hi going to start." -d "channel=C1234567" -H "Authorization: Bearer $(TOKEN)" -X POST https://slack.com/api/chat.postMessage

Unlike the container->command, it has args parameter which i could pass multi line command with quote, but in lifecycle->poststart->exec->command it doesn't support args parameter

I also tried sth like but no luck

command: ["curl","-d","text=Hi going to start.",....]

but i never got my slack message

My question is, how can i pass long curl command with quote in lifecycle->poststart->exec->command?

1 Answers

it finally solved by replacing () with {} to use a env variable in command, it should be ${TOKEN}

Related