HashiCorp Vault הוא פתרון לניהול סודות של צד שלישי שמשתלב עם Kubernetes ו-GKE ב-AWS.
אפשר לפרוס את Vault ב-GKE ב-AWS באמצעות:
- תרשים Helm רשמי של HashiCorp
- Vault on GKE, שמותקן באמצעות Terraform.
אפשר לגשת לסודות של Vault בתוך פודים באמצעות Agent Sidecar injector. ה-injector הוא Kubernetes Mutating Webhook Controller. הבקר מיירט אירועים של Pod ומעדכן את ההגדרה של ה-Pod.
ה-Vault Agent Injector משתמש בחשבון שירות Kubernetes (KSA) של Pod עם שיטת האימות של Vault Kubernetes. חשבון ה-KSA צריך להיות מקושר לתפקיד ב-Vault עם מדיניות שמעניקה גישה לסודות.
אחרי ההגדרה, אפשר לבקש סודות על ידי הוספת הערה ל-Pod.
קטע הקוד הבא כולל הערות שמוסיפים ל-Pod.
אם לתפקיד myapp יש גישה לסוד secret/banana, Vault יטען אותו ב-/vault/secrets/apple.
spec:
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-apple: "secrets/banana"
vault.hashicorp.com/role: "myapp"
אפשר להחיל את ההגדרה הזו:
- ל-Pod עם
kubectl edit pod/pod-name. - לפריסה עם
kubectl edit deployment/deployment-name.
המאמרים הבאים
- כדאי לקרוא את התיעוד של Vault Injector.
- בודקים את מאגר vault-k8s ב-GitHub.