Files
vault/docs/vault-cluster-helm.md
Vassiliy Yegorov dd1e392213 add vault cluster
2022-08-21 21:47:56 +07:00

111 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Разворачиваем vault в k8s
1. В heml надо отметить:
```yaml
ha:
enabled: true
raft:
enabled: true
```
2. после запуска идем в первый vault-0 и инитим его (и открываем сразу)
```bash
vault operator init -key-shares=1 -key-threshold=1
vault operator unseal <key1>
```
3. второй и третий вольты подключаем к рафту первого и так же распечатываем
```bash
vault operator raft join http://vault-0.vault-internal:8200
vault operator unseal <key1>
```
3.1 проверяем HA
```bash
vault status
vault operator raft list-peers
```
4. логинимся в первом вольте, создаем kv-хранилище и пулим в него тестовый секрет
```bash
vault secrets enable -path=secret kv-v2
vault kv put secret/k8s/test username="realmanual" password="password"
```
## настроим k8s для работы с вольтом
1. `vault auth enable kubernetes`
2. `vault write auth/kubernetes/config kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443"`
3. создаем политику доступа
```bash
vault policy write k8s - <<EOF
path "secret/data/k8s/test" {
capabilities = ["read"]
}
EOF
```
4. создаем роль
```bash
vault write auth/kubernetes/role/k8s \
bound_service_account_names=vault \
bound_service_account_namespaces=default \
policies=k8s \
ttl=24h
```
## запускаем тест
1. создаем в NS default сервисного юзера
`k create sa vault`
2. демлоим тестовое приложение
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: testapp
labels:
app: testapp
spec:
replicas: 1
selector:
matchLabels:
app: testapp
template:
metadata:
labels:
app: testapp
spec:
serviceAccountName: vault
containers:
- name: app
image: hub.realmanual.ru/pub/vault-example-app:latest
imagePullPolicy: Always
env:
- name: VAULT_ADDR
value: 'http://vault-internal.vault:8200'
- name: JWT_PATH
value: '/var/run/secrets/kubernetes.io/serviceaccount/token'
- name: SERVICE_PORT
value: '8080'
- name: SECRETS_PATH
value: 'secret/data/k8s/test'
- name: ROLE_NAME
value: "k8s"
```
3. идем в созданный под, курлим результат нашего токена
```bash
curl http://localhost:8080
```