Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

using curl command in pod lifecycle poststart hooks

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?

like image 729
Neo Gónzáles Avatar asked Aug 11 '26 11:08

Neo Gónzáles


1 Answers

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

like image 77
Neo Gónzáles Avatar answered Aug 14 '26 08:08

Neo Gónzáles



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!