将现有的 azure 文件共享挂载为持久卷而不使用机密

问题描述

将azure文件挂载为PV的方法如下教程所示:

apiVersion: v1
kind: PersistentVolume
Metadata:
  name: azurefile
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  azureFile:
    secretName: azure-secret
    shareName: aksshare
    readOnly: false
  mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=1000
  - gid=1000
  - mfsymlinks
  - nobrl

目前我需要使用存储帐户密钥创建一个秘密,以使 pv 正常工作。 有没有办法在不创建秘密的情况下挂载文件共享,最好使用环境变量?例如,将帐户密钥放在环境变量中或使用服务主体凭据。

我也尝试使用 kustomise secretGenerator 从 env 变量创建秘密,但每次的秘密名称都不一样,我无法在 pv yaml 文件中使用它。

解决方法

Kubernetes 是 secretconfigmap 是仅向部署注入机密的一种方式。

如果您要秘密存储某些内容,则意味着您可以将其作为环境变量访问。

您可以创建一个存储类并像这样使用它:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: azurefile
provisioner: kubernetes.io/azure-file
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=0
  - gid=0
  - mfsymlinks
  - cache=strict
  - actimeo=30
parameters:
  skuName: Standard_LRS

只有这样,您才能添加机密,因此您不必多次添加。