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

配置 Azure NetApp Files 后端

提供者

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

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

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

  • ssubscriptionID 来自启用了 Azure NetApp Files 的 Azure 订阅。

  • 租户 IDclientIDclientSecret 来自 "应用程序注册" 在 Azure Active Directory 中,具有足够的 Azure NetApp Files 服务权限。应用程序注册应使用` Azure 预定义的 owner 或 `Contributor…​ 角色。

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

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

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

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

后端配置选项

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

参数 Description Default

ve版本

始终为 1

storageDriverName

存储驱动程序的名称

"Azure-netapp-files"

backendName

自定义名称或存储后端

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

ssubscriptionID

Azure 订阅中的订阅 ID

租户 ID

应用程序注册中的租户 ID

客户端 ID

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

clientSecret

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

s服务级别

S标准高级超级 之一

"" (随机)

位置

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

resourceGroups

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

"[]" (无筛选器)

netappAccounts

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

"[]" (无筛选器)

容量池

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

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

virtualNetwork

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

""

ssubnet

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

""

nfsMountOptions

精细控制 NFS 挂载选项。

"nfsvers=3"

limitVolumeSize

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

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

debugTraceFlags

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

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

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

Type 格式。

Resource group

< 资源组 >

NetApp 帐户

< 资源组 >/< NetApp 帐户 >

容量池

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

虚拟网络

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

Subnet

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

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

参数 Description Default

exportRule

新卷的导出规则

"0.0.0.0/0

snapshotDir

控制 .snapshot 目录的可见性

false

s大小

新卷的默认大小

"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 的 Easus 位置的 超高 容量池中。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",
        "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"],
        "nfsMountOptions": "vers=3,proto=tcp,timeo=600",
        "labels": {
            "cloud": "azure"
        },
        "location": "eastus",

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

以下 S存储类 定义是指上述存储池。通过使用 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 命令。