Я столкнулся со странным поведением с модулями K8s, работающими в AWS EKS кластере (версия 1.14). Сервисы развертываются через Хелм 3 чарта. Дело в том, что модуль получает больше переменных среды, чем ожидалось.
В спецификации модуля указано, что переменные должны быть заполнены из карты конфигурации.
apiVersion: v1
kind: Pod
metadata:
name: apigw-api-gateway-59cf5bfdc9-s6hrh
namespace: development
spec:
containers:
- env:
- name: JAVA_OPTS
value: -server -XX:MaxRAMPercentage=75.0 -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError
- name: GATEWAY__REDIS__HOST
value: apigw-redis-master.development.svc.cluster.local
envFrom:
- configMapRef:
name: apigw-api-gateway-env # <-- this is the map
# the rest of spec is hidden
Карта конфигурации apigw-api-gateway-env
имеет эту спецификацию :
apiVersion: v1
data:
GATEWAY__APP__ADMIN_LOPUSH: ""
GATEWAY__APP__CUSTOMER_LOPUSH: ""
GATEWAY__APP__DISABLE_RATE_LIMITS: "true"
# here are other 'GATEWAY__' envs
JMX_AUTH: "false"
JMX_ENABLED: "true"
# here are other 'JMX_' envs
kind: ConfigMap
metadata:
name: apigw-api-gateway-env
namespace: development
Если я запрашиваю список переменных среды, я могу найти значения из другого сервиса. Эти значения не указываются в карте конфигурации приложения apigw; они хранятся на карте для приложения lopu sh. Вот пример.
/ # env | grep -i lopush | sort | head -n 4
GATEWAY__APP__ADMIN_LOPUSH=<hidden>
GATEWAY__APP__CUSTOMER_LOPUSH=<hidden>
LOPUSH_GAME_ADMIN_MOBILE_PORT=tcp://172.20.248.152:5050
LOPUSH_GAME_ADMIN_MOBILE_PORT_5050_TCP=tcp://172.20.248.152:5050
Я также заметил, что это поведение каким-то образом связано с порядком запуска служб. Это может быть только потому, что некоторые карты конфигурации не существовали в тот момент. На данный момент кажется, что модуль получает переменные из всех карт конфигурации в текущем пространстве имен.
Кто-нибудь сталкивался с этой проблемой раньше? Возможно ли, что есть другие критерии, которые заставляют K8 заполнять окружающую среду с других карт?