172 похожих чатов

Коллеги, приветствую! Сам-то я девопс к акцентом на "дев" - так

что может быть вопрос ламерский.

Имеем k8s cluster на Azure, и через какое-то время замечаем, что внутри подов env просто какой-то монструозный.
Т.е. внутри каждого пода env vars всех вообще подов какие запущены.

Залезаю на ноду в кластере:

$ /bin/kubectl debug node/aks-nodepool-12981295-vmss000000 -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
Creating debugging pod node-debugger-aks-nodepool-12981295-vmss000000-jl528 with container debugger on node aks-nodepool-12981295-vmss000000.
If you don't see a command prompt, try pressing enter.
root@aks-nodepool-12981295-vmss000000:/# env
KC_SYNC_SERVICE_HOST=10.0.223.32
SPOOR_EQ_REMOTE_SCHEMA_PORT=tcp://10.0.123.28:80
KEYCLOAK_HTTP_PORT_80_TCP_PORT=80
REMOTE_SCHEMA_PORT_80_TCP_PROTO=tcp
.....
еще 140 env-vars от всех подов
Разве это нормально?
Я полагал, что :
- env-vars подов на нодах не видны
- что они не перемешиваются вместе
- что env-vars ноды не видны на подах

Я что-то понимал не так?

11 ответов

19 просмотров

там нет все env'ов от всех подов. Это все енвы сервисов в namespace'е пода, нужны для обнаружения сервисов > env-vars подов на нодах не видны env-vars любого процесса можно посмотреть с ноды если у тебя есть root. Процесс в контейнере это обычный процесс в системе, только огорожен cgroup'ом и неймспейсами. > то они не перемешиваются вместе они не перемешаны > что env-vars ноды не видны на подах так и есть. Но под env-vars ноды непонятно что имеется в виду

Alex-Yu Автор вопроса
Dmitry Sergeev 🇺🇦
там нет все env'ов от всех подов. Это все енвы сер...

Посмотреть - ОК Это вероятно с использованием nsenter или чего-то еще Но какого черта все поды имеют мешанину из env-vars друг друга - я понять не могу Это получается security breach потенциальный Запихал ты пароли в env-vars потом кто-то запустил под и видит все вокруг?

Alex Yu
Посмотреть - ОК Это вероятно с использованием nse...

> Это вероятно с использованием nsenter или чего-то еще Да нет, никаких nsenter даже не надо, идешь в файл /proc/номер-pid-процесса/environment

Alex Yu
Посмотреть - ОК Это вероятно с использованием nse...

> Но какого черта все поды имеют мешанину из env-vars друг друга - я понять не могу Нет никакой мешанины. Все приведенные примеры, это енвы для обнаружения служб поды не видят енвы друг-друга > потом кто-то запустил под и видит все вокруг? нет. Ну если только запустить привелигированный под, то через него ты можешь посмотреть енвы всех контейнеров на ноде. Но если ты разрешил запускать привелигированные поды - сам дурак

Dmitry Sergeev 🇺🇦
> Но какого черта все поды имеют мешанину из env-v...

https://kubernetes.io/docs/concepts/services-networking/service/#environment-variables REDIS_MASTER_SERVICE_HOST=10.0.0.11 REDIS_MASTER_SERVICE_PORT=6379 REDIS_MASTER_PORT=tcp://10.0.0.11:6379 REDIS_MASTER_PORT_6379_TCP=tcp://10.0.0.11:6379 REDIS_MASTER_PORT_6379_TCP_PROTO=tcp REDIS_MASTER_PORT_6379_TCP_PORT=6379 REDIS_MASTER_PORT_6379_TCP_ADDR=10.0.0.11

Alex-Yu Автор вопроса
Dmitry Sergeev 🇺🇦
> Но какого черта все поды имеют мешанину из env-v...

Так в том-то и дело, что видят В кластере лежат огрызки вообще другой системы, для которой пока руки не дошли отдельный кластер создать так видны env-vars и от этих огрызков

Alex Yu
Так в том-то и дело, что видят В кластере лежат ог...

нет. Ты просто невнимательно посмотрел на эти переменные. И не прошел по ссылке в доку что я выше кинул

Alex-Yu Автор вопроса
Dmitry Sergeev 🇺🇦
нет. Ты просто невнимательно посмотрел на эти пере...

ну как невнимательно? ╰─➤ kubectl exec -it kc-admin-5f8c49685-z9vnz -- env 130 ↵ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=kc-admin-5f8c49685-z9vnz TERM=xterm KEYCLOAK_BASE_URL=https://authentication-staging.api.adit.periplus.ch HASURA_GRAPHQL_URL=https://staging.api.adit.periplus.ch/v1/graphql KC_REALM=adit HASURA_GRAPHQL_ADMIN_SECRET=XXXX HASURA_GRAPHQL_DATABASE_URL=postgres://hasurauser:XXXXX@morat-staging-db.cxadsubxcuj7.eu-central-1.rds.amazonaws.com:5432/adit KC_PASSWORD=AditAdmin42! KC_CLIENT=adit-spa KC_URL=http://keycloak-http.staging KC_USER=adit-admin AUTH_WEBHOOK_SERVICE_PORT_HTTP=80 REMOTE_SCHEMA_SERVICE_HOST=10.0.127.72 SPOOR_LIGHT_STAGING_SPOOR_LIGHT_BACKEND_PORT_80_TCP_PORT=80 AUTH_WEBHOOK_SERVICE_HOST=10.0.171.153 KC_SYNC_SERVICE_PORT_HTTP=80 все env-vars всех подов или как иначе смотреть? Конечно, если я смотрю kubectl secrets, то все ОК: ╰─➤ kubectl -n staging get secrets kc-admin -o yaml | yq -r '.data| map_values(@base64d)' 1 ↵ { "HASURA_GRAPHQL_ADMIN_SECRET": "asdadaz", "HASURA_GRAPHQL_DATABASE_URL": "postgres://hasurauser:XXXXX@morat-staging-db.cxadsubxcuj7.eu-central-1.rds.amazonaws.com:5432/adit", "HASURA_GRAPHQL_URL": "https://staging.api.adit.periplus.ch/v1/graphql", "KC_PASSWORD": "XXXXXX", "KEYCLOAK_BASE_URL": "https://authentication-staging.api.adit.periplus.ch" }

Alex Yu
ну как невнимательно? ╰─➤ kubectl exec -it kc-adm...

ну и что тут не так? какие переменные тебя смущают?

Alex-Yu Автор вопроса
Dmitry Sergeev 🇺🇦
ну и что тут не так? какие переменные тебя смущают...

Пароли к БД которые сервисом не используются И не могут использоваться доступны из env

Alex Yu
ну как невнимательно? ╰─➤ kubectl exec -it kc-adm...

Так вы глазами ничего не видите. И верите в то что не видите, да еще пытаетесь исправить несуществующее явление =) Секрет kc-admin имеет поля: HASURA_GRAPHQL_ADMIN_SECRET, HASURA_GRAPHQL_DATABASE_URL, HASURA_GRAPHQL_URL, KC_PASSWORD, KEYCLOAK_BASE_URL - все эти поля прокидываются в env пода. Потому что это указано в этом ямле для пода очевидно (поля env, envFrom) Также очевидно переменные среды KC_REALM, KC_CLIENT, KC_USER - также прокинуты каким-то сопсобом в под через манифест (поля env, envFrom) Остальные переменные среды AUTH_WEBHOOK_SERVICE_PORT_HTTP, REMOTE_SCHEMA_SERVICE_HOST, SPOOR_LIGHT_STAGING_SPOOR_LIGHT_BACKEND_PORT_80_TCP_PORT, KC_SYNC_SERVICE_PORT_HTTP это автоматически созданные кубом переменные для обнаружения служб - auth-webhook, remote-schema, kc-sync и так далее

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта