systemd service inside kubernetes is unable to get the env

4/16/2019

I setup a Centos systemd service but I'm not able to read the kubernetes env variables. If I run the bash inside the pod I'm able to see env (such as _UI_SERVICE_PORT_TCP_443=443, KUBERNETES_PORT_443_TCP_ADDR=10.202.0.1 or container=docker) but not when I execute a bash script as a service inside the container.

I also tried Type=forking and ExecStart=/bin/bash believing the executed bash will inherit the kubernetes env but it's clean.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/ LANG=en_US.UTF-8 SHLVL=1
_=/bin/printenv

[Unit] Description= script after boot on k8s After=e.service

[Service] Type=forking ExecStart=@BINDIR@/virtual_service.py
-- winds
centos
kubernetes
systemd

2 Answers

4/18/2019

I found the answer for this. /proc/1/environ contains the environment and i managed to read the env while i'm running as a service. hope this will help someone in the future.

-- winds
Source: StackOverflow

4/16/2019

Your problem seems to be related to the handling of environment variables in services. From my understanding, the env vars are stripped when running as a service, so you won't have access to what bash sees when your process runs as a service..

This answer provides a good description and some workarounds.

Hope this helps!

-- Frank Yucheng Gu
Source: StackOverflow