Azure Key Vault to Kubernetes 使用教程

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。接下来,按照以下步骤进行安装:

  1. 克隆项目仓库

    git clone https://github.com/SparebankenVest/azure-key-vault-to-kubernetes.git
    cd azure-key-vault-to-kubernetes
    
  2. 部署 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
    
  3. 配置 Azure Key Vault 访问权限

    确保你的 Kubernetes 服务账户有权限访问 Azure Key Vault。你可以通过 Azure 门户或 Azure CLI 进行配置。

  4. 创建 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
    
  5. 验证部署

    检查是否成功同步了密钥:

    kubectl get secret example-secret -o yaml
    

应用案例和最佳实践

案例一:使用环境变量注入密钥

在某些情况下,你可能希望直接将 Azure Key Vault 中的密钥作为环境变量注入到容器中,而不是作为 Kubernetes 密钥。akv2k8s 提供了环境变量注入器来实现这一功能。

  1. 部署示例应用

    创建一个部署文件,并配置环境变量注入:

    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"
    
  2. 验证环境变量

    部署应用后,检查容器中的环境变量是否正确注入:

    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),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值