- 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/
我有一个网站正在Firefox和Chrome中返回一些奇怪的警告消息和错误。 Firefox返回以下错误: GET http://fonts.googleapis.com/css?family=Var
我正在使用 Facebook 登录从登录我的网站的用户那里获取数据,并且我正在使用 console.log 函数。 控制台向我显示的唯一内容如下: 犯罪现场调查/待定_ & 犯罪现场调查/_待定 这是
我正在使用 kubernetes v1.16.10 与 Ceph 13.2.2 模仿版 通过 进行动态卷配置的集群ceph-csi . 但后来我找到了 ceph-rbd Ceph RBD (kuber
在 Swift 的 Xcode 6 beta 3 中加载带有 png 图像的 UIImages 时,如下所示: PipsImg = (UIImage(named: "Die-1")) 或
kubelet分析-csi plugin注册源码分析。csi driver注册源码分析。kubelet注册csi driver的相关功能代码与kubelet的pluginManager有关,所以接下来
我开发了一个 PhoneGap 应用程序,我打算将其部署到我的 BlackBerry Bold 9700。我的开发工具包括 NotePad++、Apache Ant、Sun JDK 和 BlackBe
我正在使用 jQuery 导入外部 html 文件,如下所示: $("#header").load("header.html"); $("#content").load("home.html"); $
当你运行 csi.exe/? (安装了 Visual Studio 2015 更新 2),您将获得以下语法 Microsoft (R) Visual C# Interactive Compiler v
kubelet分析-csi driver注册分析-Node Driver Registrar源码分析。node-driver-registrar是一个sidecar容器,通过Kubelet的插件注册机
如何使用 PHP 读取 ANSI 转义码 CSI 6n 的结果? (DSR – 设备状态报告:https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_co
根据 the documentation : A PersistentVolume (PV) is a piece of storage in the cluster that has been pr
从应用程序开发上下文的角度来看,是否可以通过此智能设备的 WiFi 卡从 WiFi 接入点获取信道状态信息 (CSI) 信息?我想使用这些信息为我所在大学的室内定位项目创建一个 CSI - 指纹识别系
在 C# 交互式(作为 Visual Studio 2019 或独立的一部分)中,我想使用 C# 编写类似的代码: var s = "abcdef"; var s1 = s[2..4]; 这给出了以下
我有我的自定义 CSI 驱动程序。我想在我的卷附件 list 文件中添加一个自定义注释,我希望我的 CSI 驱动程序相应地解析和处理它。 如何将我的注释传递给 CSI 驱动程序并在 golang 代码
为什么函数 compose 定义在解释器 csi 而不是编译器 csc 中?我知道我可以很容易地自己定义它,但我只是想知道为什么会有这样的差异。 最佳答案 compose 过程来自 data-stru
我已经开始使用 c# interactive 了。在 Visual Studio 中,我能够使用以下代码创建一些窗口: #r "PresentationFramework" using System.
我看过一些研究论文,其中 CSI(信道状态信息)被用于人类事件识别(运动)或有时用于获得室内定位。 现在,我想在我的笔记本电脑(Ubuntu 安装为 VM)和“Intel 双频无线 AC-3165”W
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3个月前关闭。 Improve th
按照此处概述的方式更新我的 CSI Secrets Store 驱动程序: https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-
我们正在使用 AKS、Azure Key Vault,并且目前使用 CSI 驱动程序在创建容器时将 secret 数据传递到我们的容器中(通过 CSI 驱动程序)。 CSI 驱动程序的文档似乎表明它支
我是一名优秀的程序员,十分优秀!