2.6 KiB
2.6 KiB
Разворачиваем vault в k8s
- В heml надо отметить:
ha:
enabled: true
raft:
enabled: true
- после запуска идем в первый vault-0 и инитим его (и открываем сразу)
vault operator init -key-shares=1 -key-threshold=1
vault operator unseal <key1>
- второй и третий вольты подключаем к рафту первого и так же распечатываем
vault operator raft join http://vault-0.vault-internal:8200
vault operator unseal <key1>
3.1 проверяем HA
vault status
vault operator raft list-peers
- логинимся в первом вольте, создаем kv-хранилище и пулим в него тестовый секрет
vault secrets enable -path=secret kv-v2
vault kv put secret/k8s/test username="realmanual" password="password"
настроим k8s для работы с вольтом
vault auth enable kubernetes
vault write auth/kubernetes/config kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443"
- создаем политику доступа
vault policy write k8s - <<EOF
path "secret/data/k8s/test" {
capabilities = ["read"]
}
EOF
- создаем роль
vault write auth/kubernetes/role/k8s \
bound_service_account_names=vault \
bound_service_account_namespaces=default \
policies=k8s \
ttl=24h
запускаем тест
-
создаем в NS default сервисного юзера
k create sa vault
-
демлоим тестовое приложение
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"
- идем в созданный под, курлим результат нашего токена
curl http://localhost:8080