简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

配置 Azure NetApp Files 后端

贡献者

了解如何使用提供的示例配置将 Azure NetApp Files ( ANF )配置为 Astra Trident 安装的后端。

备注 Azure NetApp Files 服务不支持小于 100 GB 的卷。如果请求的卷较小,则 Astra Trident 会自动创建 100 GB 的卷。
您需要的内容

配置和使用 "Azure NetApp Files" 后端,您需要满足以下要求:

  • subscriptionID 从启用了Azure NetApp Files 的Azure订阅。

  • tenantIDclientID,和 clientSecret"应用程序注册" 在 Azure Active Directory 中,具有足够的 Azure NetApp Files 服务权限。应用程序注册应使用 OwnerContributor Azure预定义的角色。

    提示 要了解有关 Azure 内置角色的详细信息,请参见 "Azure 文档"
  • Azure location 至少包含一个 "委派子网"。自Trident 22.01日开始 location 参数是后端配置文件顶层的必填字段。在虚拟池中指定的位置值将被忽略。

  • 如果您是首次使用 Azure NetApp Files 或在新位置使用,则需要进行一些初始配置。请参见 "《快速入门指南》"

关于此任务

根据后端配置(子网,虚拟网络,服务级别和位置), Trident 会在请求位置提供的容量池上创建 ANF 卷,并与请求的服务级别和子网匹配。

备注 注意: Astra Trident 不支持手动 QoS 容量池。

后端配置选项

有关后端配置选项,请参见下表:

参数 Description Default

version

始终为 1

storageDriverName

存储驱动程序的名称

"Azure-netapp-files"

backendName

自定义名称或存储后端

驱动程序名称 + "_" + 随机字符

subscriptionID

Azure 订阅中的订阅 ID

tenantID

应用程序注册中的租户 ID

clientID

应用程序注册中的客户端 ID

clientSecret

应用程序注册中的客户端密钥

serviceLevel

其中一个 StandardPremium`或 `Ultra

"" (随机)

location

要创建新卷的 Azure 位置的名称

resourceGroups

用于筛选已发现资源的资源组列表

"[]" (无筛选器)

netappAccounts

用于筛选已发现资源的 NetApp 帐户列表

"[]" (无筛选器)

capacityPools

用于筛选已发现资源的容量池列表

"[]" (无筛选器,随机)

virtualNetwork

具有委派子网的虚拟网络的名称

""

subnet

委派给的子网的名称 Microsoft.Netapp/volumes

""

networkFeatures

一个卷的一组vNet功能可能是 BasicStandard

""

nfsMountOptions

精细控制 NFS 挂载选项。

"nfsvers=3"

limitVolumeSize

如果请求的卷大小超过此值,则配置失败

"" (默认情况下不强制实施)

debugTraceFlags

故障排除时要使用的调试标志。示例、 \{"api": false, "method": true, "discovery": true}。除非您正在进行故障排除并需要详细的日志转储,否则请勿使用此功能。

警告 如果在尝试创建 PVC 时遇到 " 未找到容量池 " 错误,则您的应用程序注册可能没有关联的所需权限和资源(子网,虚拟网络,容量池)。启用调试后, Astra Trident 将记录在创建后端时发现的 Azure 资源。请务必检查是否正在使用适当的角色。
备注 如果要使用NFS 4.1挂载卷、可以包括 nfsvers=4 在逗号分隔的挂载选项列表中选择NFS v4.1。存储类中设置的任何挂载选项都会覆盖后端配置文件中设置的挂载选项。
备注 "网络功能" 功能并非通常在所有地区都可用、可能需要在订阅中启用。指定 networkFeatures 如果未启用此功能、则配置选项将导致Trident中的发生原因 卷配置失败。

的值 resourceGroupsnetappAccountscapacityPoolsvirtualNetwork,和 subnet 可以使用短名称或完全限定名称来指定。短名称可以与多个同名资源匹配,因此在大多数情况下,建议使用完全限定名称。。 resourceGroupsnetappAccounts,和 capacityPools 值是一种筛选器、用于将发现的一组资源限制为此存储后端可用的资源、并且可以以任意组合方式指定。完全限定名称的格式如下:

Type 格式。

Resource group

< 资源组 >

NetApp 帐户

< 资源组 >/< NetApp 帐户 >

容量池

< 资源组 >/< NetApp 帐户 >/< 容量池 >

虚拟网络

< 资源组 >/< 虚拟网络 >

Subnet

< 资源组 >/< 虚拟网络 >/< 子网 >

您可以通过在配置文件的特殊部分中指定以下选项来控制默认配置每个卷的方式。请参见以下配置示例。

参数 Description Default

exportRule

新卷的导出规则

"0.0.0.0/0

snapshotDir

控制 .snapshot 目录的可见性

false

size

新卷的默认大小

"100 克 "

unixPermissions

新卷的 UNIX 权限( 4 个八进制数字)

"" (预览功能,需要在订阅中列入白名单)

exportRule 值必须是以CIDR表示法表示的IPv4地址或IPv4子网任意组合的逗号分隔列表。

备注 对于在 ANF 后端创建的所有卷, Astra Trident 会在配置存储池时将存储池上的所有标签复制到该存储卷。存储管理员可以为每个存储池定义标签,并对存储池中创建的所有卷进行分组。这样,您就可以根据后端配置中提供的一组可自定义标签来方便地区分卷了。

示例 1 :最低配置

这是绝对的最低后端配置。使用此配置, Astra Trident 会发现在已配置位置委派给 ANF 的所有 NetApp 帐户,容量池和子网,并随机将新卷放置在其中一个池和子网上。

当您刚开始使用 ANF 并尝试执行相关操作时,此配置是理想的选择,但实际上,您希望为所配置的卷提供更多范围界定。

{
    "version": 1,
    "storageDriverName": "azure-netapp-files",
    "subscriptionID": "9f87c765-4774-fake-ae98-a721add45451",
    "tenantID": "68e4f836-edc1-fake-bff9-b2d865ee56cf",
    "clientID": "dd043f63-bf8e-fake-8076-8de91e5713aa",
    "clientSecret": "SECRET",
    "location": "eastus"
}

示例 2 :使用容量池筛选器的特定服务级别配置

此后端配置会将卷放置在Azure中 eastus 位置 Ultra 容量池。Astra Trident 会自动发现该位置委派给 ANF 的所有子网,并随机在其中一个子网上放置一个新卷。

    {
        "version": 1,
        "storageDriverName": "azure-netapp-files",
        "subscriptionID": "9f87c765-4774-fake-ae98-a721add45451",
        "tenantID": "68e4f836-edc1-fake-bff9-b2d865ee56cf",
        "clientID": "dd043f63-bf8e-fake-8076-8de91e5713aa",
        "clientSecret": "SECRET",
        "location": "eastus",
        "serviceLevel": "Ultra",
        "capacityPools": [
            "application-group-1/account-1/ultra-1",
            "application-group-1/account-1/ultra-2"
],
    }

示例 3 :高级配置

此后端配置进一步将卷放置范围缩小为一个子网,并修改了某些卷配置默认值。

    {
        "version": 1,
        "storageDriverName": "azure-netapp-files",
        "subscriptionID": "9f87c765-4774-fake-ae98-a721add45451",
        "tenantID": "68e4f836-edc1-fake-bff9-b2d865ee56cf",
        "clientID": "dd043f63-bf8e-fake-8076-8de91e5713aa",
        "clientSecret": "SECRET",
        "location": "eastus",
        "serviceLevel": "Ultra",
        "capacityPools": [
            "application-group-1/account-1/ultra-1",
            "application-group-1/account-1/ultra-2"
],
        "virtualNetwork": "my-virtual-network",
        "subnet": "my-subnet",
        "networkFeatures": "Standard",
        "nfsMountOptions": "vers=3,proto=tcp,timeo=600",
        "limitVolumeSize": "500Gi",
        "defaults": {
            "exportRule": "10.0.0.0/24,10.0.1.0/24,10.0.2.100",
            "snapshotDir": "true",
            "size": "200Gi",
            "unixPermissions": "0777"
        }
    }

示例 4 :虚拟存储池配置

此后端配置可在一个文件中定义多个存储池。如果您有多个容量池支持不同的服务级别,并且您希望在 Kubernetes 中创建表示这些服务级别的存储类,则此功能非常有用。

    {
        "version": 1,
        "storageDriverName": "azure-netapp-files",
        "subscriptionID": "9f87c765-4774-fake-ae98-a721add45451",
        "tenantID": "68e4f836-edc1-fake-bff9-b2d865ee56cf",
        "clientID": "dd043f63-bf8e-fake-8076-8de91e5713aa",
        "clientSecret": "SECRET",
        "location": "eastus",
        "resourceGroups": ["application-group-1"],
        "networkFeatures": "Basic",
        "nfsMountOptions": "vers=3,proto=tcp,timeo=600",
        "labels": {
            "cloud": "azure"
        },
        "location": "eastus",

        "storage": [
            {
                "labels": {
                    "performance": "gold"
                },
                "serviceLevel": "Ultra",
                "capacityPools": ["ultra-1", "ultra-2"],
                "networkFeatures": "Standard"
            },
            {
                "labels": {
                    "performance": "silver"
                },
                "serviceLevel": "Premium",
                "capacityPools": ["premium-1"]
            },
            {
                "labels": {
                    "performance": "bronze"
                },
                "serviceLevel": "Standard",
                "capacityPools": ["standard-1", "standard-2"]
            }
        ]
    }

以下内容 StorageClass 定义是指上述存储池。使用 parameters.selector 字段中、您可以为每个指定 StorageClass 用于托管卷的实际池。卷将在选定池中定义各个方面。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gold
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=gold"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: silver
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=silver"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: bronze
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=bronze"
allowVolumeExpansion: true

下一步是什么?

创建后端配置文件后,运行以下命令:

tridentctl create backend -f <backend-file>

如果后端创建失败,则后端配置出现问题。您可以运行以下命令来查看日志以确定发生原因:

tridentctl logs

确定并更正配置文件中的问题后,您可以再次运行 create 命令。