Azure Key Vault to Kubernetes 使用教程
项目介绍
Azure Key Vault to Kubernetes(简称 akv2k8s)是一个开源项目,旨在简化并安全地将 Azure Key Vault 中的密钥、证书和机密信息集成到 Kubernetes 环境中。该项目的主要目标是避免应用程序直接依赖 Azure Key Vault 获取密钥,并遵循 12 Factor App 原则进行配置。akv2k8s 提供了两种主要方式来使用 Azure Key Vault 中的对象:作为原生 Kubernetes 密钥或直接作为环境变量。
项目快速启动
安装
首先,确保你已经安装了 Kubernetes 集群,并且有权限访问 Azure Key Vault。接下来,按照以下步骤进行安装:
-
克隆项目仓库
git clone https://github.com/SparebankenVest/azure-key-vault-to-kubernetes.git cd azure-key-vault-to-kubernetes -
部署 akv2k8s
kubectl apply -f manifests/namespace.yaml kubectl apply -f manifests/crds.yaml kubectl apply -f manifests/controller.yaml kubectl apply -f manifests/env-injector.yaml -
配置 Azure Key Vault 访问权限
确保你的 Kubernetes 服务账户有权限访问 Azure Key Vault。你可以通过 Azure 门户或 Azure CLI 进行配置。
-
创建 AzureKeyVaultSecret 资源
创建一个
AzureKeyVaultSecret资源来同步 Azure Key Vault 中的密钥到 Kubernetes 中。apiVersion: spv.no/v1alpha1 kind: AzureKeyVaultSecret metadata: name: example-secret namespace: default spec: vault: name: my-key-vault object: type: secret name: my-secret -
验证部署
检查是否成功同步了密钥:
kubectl get secret example-secret -o yaml
应用案例和最佳实践
案例一:使用环境变量注入密钥
在某些情况下,你可能希望直接将 Azure Key Vault 中的密钥作为环境变量注入到容器中,而不是作为 Kubernetes 密钥。akv2k8s 提供了环境变量注入器来实现这一功能。
-
部署示例应用
创建一个部署文件,并配置环境变量注入:
apiVersion: apps/v1 kind: Deployment metadata: name: example-app namespace: default spec: replicas: 1 selector: matchLabels: app: example-app template: metadata: labels: app: example-app annotations: vault.security.banzaicloud.io/vault-addr: "https://my-key-vault.vault.azure.net" vault.security.banzaicloud.io/vault-role: "my-role" vault.security.banzaicloud.io/vault-skip-verify: "true" spec: containers: - name: example-app image: example-image env: - name: MY_SECRET value: "vault:secret/data/my-secret#my-key" -
验证环境变量
部署应用后,检查容器中的环境变量是否正确注入:
kubectl exec -it deployment/example-app -- env | grep MY_SECRET
最佳实践
- 安全配置:确保 Azure Key Vault 和 Kubernetes 的访问权限最小化,遵循最小权限原则。
- 监控和日志:配置监控和日志记录,以便及时发现和响应安全事件。
- 定期更新:定期更新 akv2k8s 和相关组件,以确保安全性和功能性。
典型生态项目
1. Azure Key Vault
Azure Key Vault 是微软提供的云服务,用于安全地存储和管理密钥、证书和机密信息。akv2k8s 项目充分利用了 Azure Key Vault 的安全特性。
2. Kubernetes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



