Vault with k8s v2: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 28: | Строка 28: | ||
===Namespace=== |
===Namespace=== |
||
* Создать пространство (имен если не создано) |
* Создать пространство (имен если не создано) |
||
+ | * Имя пространства имен выбрано произвольно |
||
* '''kubectl apply -f kilda-namespace.yaml''' |
* '''kubectl apply -f kilda-namespace.yaml''' |
||
− | * Содержимое '''kilda-namespace.yaml''' |
+ | * Содержимое '''kilda-namespace.yaml''': |
<PRE> |
<PRE> |
||
--- |
--- |
||
Строка 37: | Строка 38: | ||
name: kilda |
name: kilda |
||
</PRE> |
</PRE> |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | * Создается в правильном пространстве имен (в частном случае может использоваться '''default''') |
||
+ | * Имя аккаунта выбрано произвольно |
||
+ | * '''kubectl apply -f kilda-vault-token-review-service-account.yaml''' |
||
+ | * Содержимое файла '''kilda-vault-token-review-service-account.yaml''': |
||
<PRE> |
<PRE> |
||
--- |
--- |
||
Строка 47: | Строка 52: | ||
kind: ServiceAccount |
kind: ServiceAccount |
||
metadata: |
metadata: |
||
− | name: vault-token-review-service-account |
+ | name: kilda-vault-token-review-service-account |
namespace: kilda |
namespace: kilda |
||
</PRE> |
</PRE> |
Версия 12:18, 9 февраля 2022
Авторизация K8S POD в Vault
Постановка задачи
- Получать "секреты" из Vault при этом не передавая в POD пароли, токены или другую секретную информацию
Предварительны условия
- Установлен и настроен Vault
(базовая настройка - https://noname.com.ua/mediawiki/index.php/Vault_Basic_Setup)
- кластер Kubernetes установлен и настроен
- kubectl настроен для работы с кластером
Принципы работы
- Создается один или несколько Service Account
- POD запускается в определенном Service Account
- POD может воспользоваться токеном этого Service Account
- В качестве входных данных POD получает НЕ СЕКРЕТНУЮ информацию
- Адрес Vault в переменной окружения VAULT_ADDR
- Имя роли в переменной окружения VAULT_K8S_ROLE
- POD авторизуется в VAULT под ролью переданной в переменной VAULT_K8S_ROLE используя для этого JWT принадлежащий Service Account
- Vault настроен на проверку прав токена PODs в API K8S (Сам процесс VAULT использует ДРУГОЙ сервисный аккаунт, отличный от того под которым запускается POD для проверки токена PODa)
- После успешной авторизации POD может читать "секреты" из VAULT согласно политик которые привязаны к роле (политики и роли тут - это объекты в Vault)
Настройка Vault
Настройка со стороны k8s
Namespace
- Создать пространство (имен если не создано)
- Имя пространства имен выбрано произвольно
- kubectl apply -f kilda-namespace.yaml
- Содержимое kilda-namespace.yaml:
--- apiVersion: v1 kind: Namespace metadata: name: kilda
Сервисный аккаунт
- Это аккаунт с которым Vault подключается к API k8s для валидации JWT
- Этот аккаунт отличается от того который используется для запуска POD
- Создается в правильном пространстве имен (в частном случае может использоваться default)
- Имя аккаунта выбрано произвольно
- kubectl apply -f kilda-vault-token-review-service-account.yaml
- Содержимое файла kilda-vault-token-review-service-account.yaml:
--- apiVersion: v1 kind: ServiceAccount metadata: name: kilda-vault-token-review-service-account namespace: kilda