Перейдем к демонстрации
Задеплоим приложение. Внимание на раздел annotations, где вся магия интеграции описывается.
Задеплоим приложение. Внимание на раздел annotations, где вся магия интеграции описывается.
vault.security.banzaicloud.io/vault-addr
указывает, где находится vault в кластере (или за пределами кластера)vault.security.banzaicloud.io/vault-role
описывает роль в vault, которую мы создавали в предыдущем посте.echo '
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
namespace: app-prod
labels:
app: busybox
spec:
replicas: 1
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
annotations:
vault.security.banzaicloud.io/vault-addr: "https://vault.vault:8200"
vault.security.banzaicloud.io/vault-role: "myapp-prod"
spec:
serviceAccountName: myapp-prod-sa
terminationGracePeriodSeconds: 1
containers:
- name: busybox
image: busybox
command:
- /bin/sh
- -c
- |
printenv
sleep 999999
env:
- name: MYKEY
value: vault:k8s/data/myapp/prod#mykey
' > app.yaml
kubectl -n app-prod apply -f app.yaml
Посмотрим логи вебхука
Видим строку
Это мы создавали pod приложения и вебхук выполнил inject.
А что он добавил? Имя пода у вас будет другим
k -n vault-infra logs deployments/vault-secrets-webhook
Видим строку
time=2025-03-16T11:07:22.530Z level=INFO msg="Admission review request handled" app=vault-secrets-webhook svc=http.Handler ns=app-prod webhook-kind=mutating wh-version=v1beta1 dry-run=false path=/pods trace-id="" name="" request-id=5ce99e64-e672-42bc-8eb9-024145fcb584 webhook-id=vault-secrets-pods op=create kind=v1/Pod duration=1.886875ms
Это мы создавали pod приложения и вебхук выполнил inject.
А что он добавил? Имя пода у вас будет другим
k -n app-prod get pod app-86dd886d45-s4xnf -o yaml
Появился init container, который добавляет тот самый бинарник, что будет общаться с vault
А volume vault-env - это просто emptyDir. Надо же как-то из init container передать файл в приложение
- command:
- sh
- -c
- cp /usr/local/bin/vault-env /vault/
image: ghcr.io/bank-vaults/vault-env:v1.21.7
imagePullPolicy: IfNotPresent
name: copy-vault-env
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /vault/
name: vault-env
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-5xchz
readOnly: true
А volume vault-env - это просто emptyDir. Надо же как-то из init container передать файл в приложение
- emptyDir:
medium: Memory
name: vault-env
Запуск основного приложения теперь выглядит так.
А как происходит запуск и подстановка переменных, можно посмотреть здесь.
- args:
- /bin/sh
- -c
- |
printenv
sleep 999999
command:
- /vault/vault-env
env:
- name: MYKEY
value: vault:k8s/data/myapp/prod#mykey
- name: VAULT_ADDR
value: https://vault.vault:8200
- name: VAULT_SKIP_VERIFY
value: "false"
- name: VAULT_AUTH_METHOD
value: jwt
- name: VAULT_PATH
value: kubernetes
- name: VAULT_ROLE
value: myapp-prod
- name: VAULT_IGNORE_MISSING_SECRETS
value: "false"
- name: VAULT_ENV_PASSTHROUGH
- name: VAULT_JSON_LOG
value: "false"
- name: VAULT_CLIENT_TIMEOUT
value: 10s
- name: VAULT_LOG_LEVEL
value: info
- name: VAULT_TRANSIT_BATCH_SIZE
value: "25"
А как происходит запуск и подстановка переменных, можно посмотреть здесь.
Конкретно эта строка запускает наше приложение, заменяя свой процесс нашей командой, не оставляя следов своего запуска
И к минусам: в режиме по умолчанию мы теряем возможность обновлять секреты на лету.
Как раз потому, что бинарник, который выполняет логику подтягивания секретов, заменяется, у нас не остается никакой связи с vault.
Посмотрим в поде — не видно процесса, только наша команда
Потому что https://pkg.go.dev/syscall#Exec вызывает https://man7.org/linux/man-pages/man2/execve.2.html
err = syscall.Exec(binary, entrypointCmd, sanitized.env)
И к минусам: в режиме по умолчанию мы теряем возможность обновлять секреты на лету.
Как раз потому, что бинарник, который выполняет логику подтягивания секретов, заменяется, у нас не остается никакой связи с vault.
Посмотрим в поде — не видно процесса, только наша команда
k -n app-prod exec -it app-746476f78-hksg5 -- ps aux
Defaulted container "busybox" out of: busybox, copy-vault-env (init)
PID USER TIME COMMAND
1 root 0:00 /bin/sh -c trap 'echo "SIGHUP received, reloading configur
186 root 0:00 sleep 1
Потому что https://pkg.go.dev/syscall#Exec вызывает https://man7.org/linux/man-pages/man2/execve.2.html
execve() executes the program referred to by pathname. This causes the program that is currently being run by the calling process to be replaced with a new program, with newly initializedstack, heap, and (initialized and uninitialized) data segments.
И почему нужно запрещать exec, если не хотим утечки?
Так очень легко посмотреть переменные окружения процесса.
Если же нам нужна поддержка ротации секретов без рестарта, стоит рассмотреть daemon mode и поменять логику приложения на работу с файловой системой вместо env vars, потому что менять env vars на ходу крайне сложно, чтобы приложение это заметило.
Зачем нужна ротация секретов, я уже писал ранее.
Ставьте 👀 , если не знали, и было полезно
Ставьте 💅 , если знали, и было полезно
k -n app-prod exec -it app-746476f78-hksg5 -- cat /proc/1/environ
Так очень легко посмотреть переменные окружения процесса.
Если же нам нужна поддержка ротации секретов без рестарта, стоит рассмотреть daemon mode и поменять логику приложения на работу с файловой системой вместо env vars, потому что менять env vars на ходу крайне сложно, чтобы приложение это заметило.
Зачем нужна ротация секретов, я уже писал ранее.
Ставьте 👀 , если не знали, и было полезно
Ставьте 💅 , если знали, и было полезно
👀10💅5👍1
Приветствую всех новичков на канале
Вижу, что с каждым днем вас становится больше, поэтому решил подготовить внеплановый приветственный пост и рассказать, чем мы вообще тут занимаемся.
➡️ Меня зовут Виталий Лихачев, я SRE в крупнейшем голландском тревелтехе. Вместе со своим котом Маркусом я рассказываю про кубы, делюсь полезными штуками, провожу прямые эфиры и вебинары для инженеров и разработчиков. С недавних пор я живу в Нидерландах, поэтому здесь также встречаются посты про релокацию (переехать вместе с котом — тот еще квест).
А ещё я — спикер курсов в учебном центре Слёрм. Всего на факультете Kubernetes три флагманских курса:
🟠 Kubernetes База — стартовый курс для инженеров и администраторов
🟠 Kubernetes Мега — продвинутый курс для тех, кто уже работал с k8s или прошел Kubernetes База
🟠 Kubernetes для разработчиков — углубленный разбор k8s с точки зрения работы приложения.
Теперь, когда вы знаете чуть больше обо мне и направлениях моей деятельности, я тоже хочу познакомиться с вами поближе. Расскажите в комментариях, кто вы и как связаны с кубами⬇️
Вижу, что с каждым днем вас становится больше, поэтому решил подготовить внеплановый приветственный пост и рассказать, чем мы вообще тут занимаемся.
А ещё я — спикер курсов в учебном центре Слёрм. Всего на факультете Kubernetes три флагманских курса:
Теперь, когда вы знаете чуть больше обо мне и направлениях моей деятельности, я тоже хочу познакомиться с вами поближе. Расскажите в комментариях, кто вы и как связаны с кубами
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Как дела с Kubernetes?
Anonymous Poll
23%
Планирую использовать
21%
Начал использовать, пытаюсь вникнуть
17%
Пишу k8s иногда
35%
Давно и надолго с кубером
5%
Свой вариант в комментариях
Безопасность в Kubernetes
Почему безопасность — это не просто галочка в чек-листе, и зачем я уделяю ей столько внимания? Реальность показывает, что халатность в этом вопросе может стоить компании миллионов.
Вспомните Tesla, где майнили крипту прямо в их Kubernetes-кластере (почитать можно тут).
🔷 Материалов по теме не так много, так что мы с Севой Севостьяновым решили провести вебинар, на котором поговорим про тулинг для построения более безопасной инфраструктуры в k8s.
Разберём всё: от сканирования на уязвимости до деплоя в прод и постоянного мониторинга возможных инцидентов.
А ещё:
🟣 посмотрим, что есть в экосистеме k8s;
🟣 зачем это применять;
🟣 когда не оправдано закручивание гаек в инфраструктуре.
Когда: 27 марта в 20:00 мск
🐈 Занять место — через бота
Почему безопасность — это не просто галочка в чек-листе, и зачем я уделяю ей столько внимания? Реальность показывает, что халатность в этом вопросе может стоить компании миллионов.
Вспомните Tesla, где майнили крипту прямо в их Kubernetes-кластере (почитать можно тут).
Разберём всё: от сканирования на уязвимости до деплоя в прод и постоянного мониторинга возможных инцидентов.
А ещё:
Когда: 27 марта в 20:00 мск
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Голландская рулетка: диван через окно, на каком языке говорить и как выжить среди великанов и чаек
В 2024 году я переехал в Нидерланды. Я давно обещал вам серию постов об этой стране, и сегодня мы поговорим про культурные особенности Нидерландов, про планирование, погоду и про еду.
➡️ Нейминг
Официальное название страны — королевство Нидерландов.
Часто Нидерланды называют Голландией, что не совсем корректно, поскольку Голландия — это 2 из 12 провинций страны: Северная и Южная Голландия. Однако исторически именно эти провинции были наиболее развитыми и известными за пределами страны, поэтому название Голландия так прочно укрепилось.
Это самое частое заблуждение, что встречается.
Минутка юмора: произнесите Нидерланды с ударением на последний слог, и вот вы уже чувствуете вкус кумыса.
В 2024 году я переехал в Нидерланды. Я давно обещал вам серию постов об этой стране, и сегодня мы поговорим про культурные особенности Нидерландов, про планирование, погоду и про еду.
Официальное название страны — королевство Нидерландов.
Часто Нидерланды называют Голландией, что не совсем корректно, поскольку Голландия — это 2 из 12 провинций страны: Северная и Южная Голландия. Однако исторически именно эти провинции были наиболее развитыми и известными за пределами страны, поэтому название Голландия так прочно укрепилось.
Это самое частое заблуждение, что встречается.
Минутка юмора: произнесите Нидерланды с ударением на последний слог, и вот вы уже чувствуете вкус кумыса.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍3
Стоит отметить, что в Амстердаме проживает значительное количество экспатов; по некоторым данным, около 30% жителей города не являются коренными нидерландцами. Это влияет на восприятие, и, оставаясь только в Амстердаме, можно не получить полного представления о стране в целом.
Центр Амстердама очень сильно заточен под туристов, которых здесь безумно много, что особенно заметно вечером в «старом» Амстердаме. Это та самая часть города, которую обычно показывают в фильмах, потому что там все те самые старинные дома, узкие улицы и каналы.
Пример на фото (credits pixabay/user32212)
Please open Telegram to view this post
VIEW IN TELEGRAM
Кстати, про лестницы. Это ужас 🙂, если смотреть жилье в таких внешне красивых домах. Стопа во всю длину никогда не поместится, и есть риск улететь, но местные привычные и для них это норма.
Источник фото
Источник фото
👻5
Как только отъезжаем подальше, смотрим более новые дома (построенные хотя бы в конце 20-го века), ситуация с лестницами становится уже вполне обычной.
Возникает резонный вопрос — а как мебель заносить-то?
Через окна. На домах есть крюки, при помощи которых поднимали раньше (и сейчас поднимают) крупногабаритные вещи. Конечно сейчас чаще используют спецтехнику с подъемной платформой, но крюки все еще актуальны. На фото виден диван, который вручную при помощи каната затягивают через окно.
Источник фото
Возникает резонный вопрос — а как мебель заносить-то?
Через окна. На домах есть крюки, при помощи которых поднимали раньше (и сейчас поднимают) крупногабаритные вещи. Конечно сейчас чаще используют спецтехнику с подъемной платформой, но крюки все еще актуальны. На фото виден диван, который вручную при помощи каната затягивают через окно.
Источник фото
Официальный язык — нидерландский. Он довольно сложный для изучения и произношения. Помимо Нидерландов, на нидерландском говорят в Бельгии, например.
Интересно, что нидерландский язык имеет схожесть с немецким и английским, что облегчает его изучение для носителей этих языков (но это неточно), но мало помогает, когда всю жизнь учил английский как второй язык 🙂
Английский язык широко распространен в Нидерландах. Большинство жителей свободно владеют им, что делает жизнь чуть более удобной.
Посмотрим на несколько фраз
Но есть и варианты, когда слова очень похожи с английским на слух.
И нет, произносится все это далеко не как в английском.
А слово fiets (велосипед) было одно из первых, что я выучил, но про транспорт в другой раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
Нидерландцы известны своей прямотой в общении. Они предпочитают открыто выражать все что думают, что может показаться непривычным для представителей других культур. Однако такая откровенность помогает избежать недоразумений и способствует ясности в коммуникации.
Нидерландцы придают большое значение планированию. Спонтанные встречи не являются обычным делом; даже чтобы выпить кофе, часто требуется договориться за несколько дней или недель.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
Подумайте, о каких блюдах/продуктах ваш мозг вспоминает при упоминании Нидерландов?
Действительно,
А на специализированных сырных рынках или на сыроварнях, коих тоже великое множество, можно попробовать 50-100 видов сыра с различными добавками.
Кстати, на сырных рынках можно увидеть, как носили сыр в прошлом. Довольно удобно и не перегружает спину. Сам не пробовал, но кажется это так должно работать.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍6
Селедка — очень популярна и часто ее едят прямо на улице. Продается в специальных киосках, и традиционно ее едят, запрокинув голову и опустив рыбу в рот, что может показаться необычным поначалу.
Традиционный вид продукта включает флаг Нидерландов 🙂 и часто подается с луком и маринованными огурцами.
Традиционный вид продукта включает флаг Нидерландов 🙂 и часто подается с луком и маринованными огурцами.
❤1👍1
Однако стоит опасаться чаек, они очень наглые и легко украдут рыбу прямо из под носа (или изо рта и это не шутка), поэтому в местах скопления этих птичек нужно быть очень осторожным и лучше есть рыбу под навесом :)
Посмотрите видео и проникнитесь их напористостью⬇️
Посмотрите видео и проникнитесь их напористостью
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤1🔥1
Нидерланды известны переменчивой погодой и частыми дождями, но солнце тоже снисходит иногда и позволяет даже загорать. Хотя северное море летом в жару не так, чтобы сильно прогревалось, а плавать в холодной воде такое себе развлечение, особенно учитывая большое количество медуз)
А дожди? Может и 2 дня подряд лить с переменной интенсивностью. И что еще я выучил. Если KNMI (Королевский Нидерландский метеорологический институт) объявляет code orange, иногда лучше прислушаться, потому что штормы бывают довольно ощутимые. К счастью, нечасто.
И напоследок
Отличительная особенность голландцев — они довольно высокие.
Из-за этого, например, на концертах, приходится искать себе место среди людей, чтобы увидеть сцену, а не спину голландца :)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2