我正在天蓝色云中工作,想要使用 Azure 中的文档添加一个简单的 ServiceProviderClass Azure / Secrets-store-csi-driver-provider-azure 替换
secret
、keyvaultName
和 tenantId
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: azure-kvname
spec:
provider: azure
parameters:
usePodIdentity: "false" # [OPTIONAL] if not provided, will default to "false"
keyvaultName: "kvname" # the name of the KeyVault
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
tenantId: "tid" # the tenant ID of the KeyVault
当我尝试使用 Azure Cloud Bash 将其应用到我的集群时:
hacker@Azure:~$ kubectl apply -f secrets-provider.yaml
error: unable to recognize "secrets-provider.yaml.yaml": no matches for kind "SecretProviderClass" in version "secrets-store.csi.k8s.io/v1alpha1"
似乎种类和版本不兼容,尽管它们在文档中随处可见。
问题其实很简单,
secret-store-csi-driver
还没有安装。因此没有被认可。基本上确保您遵循先决条件。
从 Azure 云终端,您可以使用 Helm 安装驱动程序:
helm repo add secrets-store-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/secrets-store-csi-driver/master/charts
helm install csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
驱动程序存在持续问题secrets-store-csi-driver-provider-azure#259,对于azure,您需要明确指定
--grpc-supported-providers=azure
现在可以了:
hacker@Azure:~$ kubectl apply -f secrets-provider.yaml
secretproviderclass.secrets-store.csi.x-k8s.io/azure-kvname created
hacker@Azure:~$ kubectl get SecretProviderClass
NAME AGE
azure-kvname 39s
希望这会有所帮助。
@Sylhare 提供的答案是正确的,但您也可以通过 Azure CLI 来完成:
az aks enable-addons --addons azure-keyvault-secrets-provider --name $ClusterName --resource-group $ClusterResourceGroup
此命令将在您的集群中安装 aks-secrets-store-csi-driver,您将能够使用
"apiVersion" = "secrets-store.csi.x-k8s.io/v1"