- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何编辑下面的 yaml 文件以获取 Azure KeyVault 中的所有 secret 、 key 、证书,而不是使用数组并在此处键入/写入所有内容?
我只能获取下面列出的 secret 和 key ,但我想分享我的 AKV 中存储的所有数据
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: azure-kvname-podid
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
cloudName: "" # [OPTIONAL for Azure] if not provided, azure environment will default to AzurePublicCloud
objects: |
array:
- |
objectName: secret1
objectType: secret # object types: secret, key or cert
objectVersion: "" # [OPTIONAL] object versions, default to latest if empty
- |
objectName: key1
objectType: key
objectVersion: ""
tenantId: "tid" # the tenant ID of the KeyVault
最佳答案
我使用过一点 Azure CSI,我知道有两种方法。
非常快速的免责声明,因为这似乎正是您所要求的,没有“一句话”可以从 Azure KeyVault 获取您的所有 secret 。这意味着如果您期望“从 AKV 选择 *”而不指定这些 secret / key /证书的特定 ID,那么这个“ secret 存储 CSI”将不是您所期望的。您或多或少必须有一个相当大小的 YAML 文件来让它适用于您的所有 Azure KeyVault secret 。
也就是说,如果您愿意,您可以使用单个命令部署包含 200 个 secret 的非常大的 YAML 文件,这将在下面提到。
因此,我将回顾一下我使用的两种方法的优缺点,并举例说明它们的工作原理。
优点:YAML 文件更短,所有 AKV secret 都在一个变量中。
缺点:您的所有 AKV secret 都在一个变量中;根据您的应用程序,这可能不起作用。例如,这相当于安装一个卷,并且 Pod 可以访问您告诉它连接到的所有类型的 secret 。
如何实现:实际上,您拥有的示例 YAML 几乎就是如何拥有多个 secret 。只需继续将您希望 Azure CSI 为您注入(inject)的所有 secret 添加到“数组”字段即可,下面是修改后的示例:
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: azure-kvname-podid # This ID, is what you use in your Volume Mapping to reference this.
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
objects: |
array:
- |
objectName: secret1
objectType: secret
- |
objectName: key1
objectType: key
- |
objectName: your_db_password # So this ID, matches the same ID in your Azure KeyVault (AKV)
objectType: secret # object types: secret, key or cert. There no other types for AKV.
- |
objectName: your_blob_storage_password # So this ID, matches the same ID in your Azure KeyVault (AKV)
objectType: secret # object types: secret, key or cert. There no other types for AKV.
- |
objectName: even_more_secrets_in_your_AKV # So this ID, matches the same ID in your Azure KeyVault (AKV)
objectType: secret # object types: secret, key or cert. There no other types for AKV.
tenantId: "tid" # the tenant ID of the KeyVault
优点:您的 secret 被分解为各个变量,使您的部署能够灵活地选择将哪些 secret 附加到哪个 Pod
缺点:这将是一个非常长的 YAML 文件,并且有很多重复的字段。也就是说;这本质上是使用单行来部署所有 secret ,使用 "kubectl apply -f <FILE_NAME>.yaml --namespace=<NAMESPACE>"
如何实现:这几乎是复制/粘贴你所拥有的内容,只是分成多个部分。因此,下面是 5 个 AKV key 的示例,这些 key 分为 5 个单独的变量,可以在您的应用程序中批量安装:
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: akv-secret1 # This ID, is what you use in your Volume Mapping to reference this.
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
objects: |
array:
- |
objectName: secret1
objectType: secret
tenantId: "tid" # the tenant ID of the KeyVault
---
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: akv-secret2 # This ID, is what you use in your Volume Mapping to reference this.
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
objects: |
array:
- |
objectName: secret2
objectType: secret
tenantId: "tid" # the tenant ID of the KeyVault
---
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: akv-secret3 # This ID, is what you use in your Volume Mapping to reference this.
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
objects: |
array:
- |
objectName: secret3
objectType: secret
tenantId: "tid" # the tenant ID of the KeyVault
---
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: akv-secret4 # This ID, is what you use in your Volume Mapping to reference this.
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
objects: |
array:
- |
objectName: secret4
objectType: secret
tenantId: "tid" # the tenant ID of the KeyVault
---
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: akv-secret5 # This ID, is what you use in your Volume Mapping to reference this.
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
objects: |
array:
- |
objectName: secret5
objectType: secret
tenantId: "tid" # the tenant ID of the KeyVault
关于azure - 如何与 Kubernetes 上的 Secrets Store CSI 驱动程序共享所有 Azure KeyVault key 和 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64777149/
我正在尝试找到某种方法将我的证书从一个 Azure 订阅中的 Key Vault 移动到另一个 Azure 订阅。有没有办法这样做> 最佳答案 下面是一种移动 Azure Key Vault 中创建的
在 ARM 模板中,我想在预先存在的 KeyVault 中写入一个 secret - 我尚未将其创建为当前模板的一部分。 我正在使用此代码 { "dependsOn": [
我在 VSTS 中使用以下 Azure Powershell 命令。 (Get-AzureKeyVaultSecret -vaultName "debugkv" -name "CoreConfig-S
这两个库似乎有相似的目的:安全地存储和控制对 token 、密码、API key 和其他 secret 的访问。 我一直在使用 Microsoft.Azure.KeyVault 并取得了一些成功,不是
我最近开始将 Microsoft.Azure.KeyVault 命名空间中的旧 Azure KeyVault 客户端替换为 Azure.Security.KeyVault 中的新客户端。 在获取 se
我最近开始将 Microsoft.Azure.KeyVault 命名空间中的旧 Azure KeyVault 客户端替换为 Azure.Security.KeyVault 中的新客户端。 在获取 se
我目前正在使用 Azure SDK for Go。一切都很顺利,直到我遇到以下问题: keyVault, err := client.Get(context.Background(), "NAME_O
我正在 Azure 中部署虚拟机。用户名和密码是自动创建的,并在部署时作为参数传递。部署虚拟机的资源组也作为参数传递,因此可以是任何内容。 我的Keyvault位于特定资源组中,虚拟机的用户名和密码应
这是一个与 keyvault 相关的问题。我在 keyvault 中存储了 pfx 证书(带有私钥)。从我的服务主体中,我尝试访问 keystore 以获取证书。我正在编写以下代码来检索 pfx 证书
我正在尝试配置 Key Vault 值的定期刷新。我由 Visual Studio 生成的原始代码如下所示 var keyvaultEndpoint = new Uri($"https://{vaul
我正在尝试配置 Key Vault 值的定期刷新。我由 Visual Studio 生成的原始代码如下所示 var keyvaultEndpoint = new Uri($"https://{vaul
我使用下面的代码从 Azure Key Vault 获取证书 private X509Certificate2 GetClientCertificate(string thumbprint)
我使用下面的代码从 Azure Key Vault 获取证书 private X509Certificate2 GetClientCertificate(string thumbprint)
创建新的 KeyVault 时出现以下错误 The subscription is not registered to use namespace 'Microsoft.KeyVault' 对于所有其
我们最近发现自己需要将每个 secret (名称和值)从一个 Azure KeyVault 复制到新创建的一个。我找到了从备份中恢复 secret 的方法,但我们没有备份。是否有一个 Powershe
我正在使用 .net core 2.1 和 OpenIdConnect 以及以下 AccessPolicies 创建 azure keyvault AccessPolicies = new List
与 Azure CLI一个使用 az keyvault secret 显示 读取 secret 值。 Azure Powershell/Az.KeyVault是怎么做到的? ? 我已尝试GetAzKe
与 Azure CLI一个使用 az keyvault secret 显示 读取 secret 值。 Azure Powershell/Az.KeyVault是怎么做到的? ? 我已尝试GetAzKe
2 个不同的租户(租户 A 中的订阅 A 和租户 B 中的订阅 B) 我们在 Azure 云中有一个订阅,并且我们已经设置了 Azure Keyvault。我们可以在那里创建 key 并使用其中一个
只是想知道如何使用新的 Azure.Security.KeyVault 库实现相同的目标: Azure.Security.KeyVault.Certificates https://learn.mic
我是一名优秀的程序员,十分优秀!