Flink could not support environment replacement in the args. I think you
could access the env via "*System.getenv()*" in the user main method.
It should work since the user main method is executed in the JobManager
side.

Best,
Yang

Őrhidi Mátyás <matyas.orh...@gmail.com> 于2022年4月28日周四 19:27写道:

> Also,
>
> just declaring it in the flink configs should be sufficient, no need to
> define it in the pod templates:
>
> flinkConfiguration:
>     kubernetes.env.secretKeyRef: 
> "env:DJANGO_TOKEN,secret:switchdin-django-token,key:token"
>
>
> Best,
> Matyas
>
> On Thu, Apr 28, 2022 at 1:17 PM Őrhidi Mátyás <matyas.orh...@gmail.com>
> wrote:
>
>> Hi Francis,
>>
>> I suggest accessing the environment variables directly, no need to pass
>> them as command arguments I guess.
>>
>> Best,
>> Matyas
>>
>> On Thu, Apr 28, 2022 at 11:31 AM Francis Conroy <
>> francis.con...@switchdin.com> wrote:
>>
>>> Hi all,
>>>
>>> I'm trying to use a kubernetes secret as a command line argument in my
>>> job and the text replacement doesn't seem to be happening. I've verified
>>> passing the custom args via the command line on my local flink cluster but
>>> can't seem to get the environment var replacement to work.
>>>
>>> apiVersion: flink.apache.org/v1alpha1
>>> kind: FlinkDeployment
>>> metadata:
>>>   namespace: default
>>>   name: http-over-mqtt
>>> spec:
>>>   image: flink:1.14.4-scala_2.12-java11
>>>   flinkVersion: v1_14
>>>   flinkConfiguration:
>>>     taskmanager.numberOfTaskSlots: "2"
>>>     kubernetes.env.secretKeyRef: 
>>> "env:DJANGO_TOKEN,secret:switchdin-django-token,key:token"
>>> #    containerized.taskmanager.env.DJANGO_TOKEN: "$DJANGO_TOKEN"
>>>   serviceAccount: flink
>>>   jobManager:
>>>     replicas: 1
>>>     resource:
>>>       memory: "1024m"
>>>       cpu: 1
>>>   taskManager:
>>>     resource:
>>>       memory: "1024m"
>>>       cpu: 1
>>>   podTemplate:
>>>     spec:
>>>       serviceAccount: flink
>>>       containers:
>>>         - name: flink-main-container
>>>           volumeMounts:
>>>             - mountPath: /flink-job
>>>               name: flink-jobs
>>>           env:
>>>             - name: DJANGO_TOKEN  # kubectl create secret generic 
>>> switchdin-django-token --from-literal=token='[TOKEN]'
>>>               valueFrom:
>>>                 secretKeyRef:
>>>                   name: switchdin-django-token
>>>                   key: token
>>>                   optional: false
>>>       initContainers:
>>>         - name: grab-mqtt-over-http-jar
>>>           image: docker-push.k8s.local/test/switchdin/platform_flink:job-41
>>>           command: [ "/bin/sh", "-c",
>>>                      "cp /opt/switchdin/* /tmp/job/." ]  # Copies the jar 
>>> in the init container to the flink-jobs volume
>>>           volumeMounts:
>>>             - name: flink-jobs
>>>               mountPath: /tmp/job
>>>       volumes:
>>>         - name: flink-jobs
>>>           emptyDir: { }
>>>   job:
>>>     jarURI: local:///flink-job/switchdin-topologies-1.0-SNAPSHOT.jar
>>>     args: ["--swit-django-token", "$DJANGO_TOKEN",
>>>            "--swit-prod","false"]
>>>     entryClass: org.switchdin.HTTPOverMQTT
>>>     parallelism: 1
>>>     upgradeMode: stateless
>>>     state: running
>>>
>>> In the logs I can see:
>>>
>>> 2022-04-28 08:43:02,329 WARN org.switchdin.HTTPOverMQTT [] - ARGS ARE {}
>>> 2022-04-28 08:43:02,329 WARN org.switchdin.HTTPOverMQTT [] -
>>> --swit-django-token
>>> 2022-04-28 08:43:02,330 WARN org.switchdin.HTTPOverMQTT [] -
>>> $DJANGO_TOKEN
>>> 2022-04-28 08:43:02,330 WARN org.switchdin.HTTPOverMQTT [] - --swit-prod
>>> 2022-04-28 08:43:02,330 WARN org.switchdin.HTTPOverMQTT [] - false
>>>
>>> Anyone know how I can do this? I'm considering mounting it in a volume,
>>> but that seems like a lot of hassle for such a small thing.
>>>
>>> Thanks in advance!
>>>
>>>
>>> This email and any attachments are proprietary and confidential and are
>>> intended solely for the use of the individual to whom it is addressed. Any
>>> views or opinions expressed are solely those of the author and do not
>>> necessarily reflect or represent those of SwitchDin Pty Ltd. If you have
>>> received this email in error, please let us know immediately by reply email
>>> and delete it from your system. You may not use, disseminate, distribute or
>>> copy this message nor disclose its contents to anyone.
>>> SwitchDin Pty Ltd (ABN 29 154893857) PO Box 1165, Newcastle NSW 2300
>>> Australia
>>>
>>

Reply via email to