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

准备使用ONTAP NAS驱动程序配置后端

贡献者

了解使用ONTAP NAS驱动程序配置ONTAP后端的要求、身份验证选项和导出策略。

要求

  • 对于所有 ONTAP 后端, Astra Trident 需要至少为 SVM 分配一个聚合。

  • 您可以运行多个驱动程序,并创建指向其中一个驱动程序的存储类。例如、您可以配置一个使用的黄金类 ontap-nas 驱动程序和使用的铜牌类 ontap-nas-economy 一个。

  • 所有Kubernetes工作节点都必须安装适当的NFS工具。请参见 "此处" 有关详细信息:

  • Astra Trident仅支持将SMB卷挂载到Windows节点上运行的Pod。请参见 准备配置SMB卷 了解详细信息。

对ONTAP后端进行身份验证

Astra Trident 提供了两种对 ONTAP 后端进行身份验证的模式。

  • 基于凭据:此模式需要对ONTAP后端具有足够的权限。建议使用与预定义安全登录角色关联的帐户、例如 adminvsadmin 以确保与ONTAP 版本的最大兼容性。

  • 基于证书:此模式要求在后端安装证书、才能使Astra Trident与ONTAP集群进行通信。此处,后端定义必须包含客户端证书,密钥和可信 CA 证书的 Base64 编码值(如果使用)(建议)。

您可以更新现有后端、以便在基于凭据的方法和基于证书的方法之间移动。但是、一次仅支持一种身份验证方法。要切换到其他身份验证方法、必须从后端配置中删除现有方法。

警告 如果您尝试同时提供*凭据和证书*、则后端创建将失败、并显示一条错误、指出配置文件中提供了多种身份验证方法。

启用基于凭据的身份验证

Astra Trident 需要 SVM 范围 / 集群范围的管理员的凭据才能与 ONTAP 后端进行通信。建议使用标准的预定义角色,例如 adminvsadmin 。这样可以确保与未来的 ONTAP 版本向前兼容,这些版本可能会使功能 API 公开供未来的 Astra Trident 版本使用。可以创建自定义安全登录角色并将其用于 Astra Trident ,但不建议使用。

后端定义示例如下所示:

YAML
---
version: 1
backendName: ExampleBackend
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: svm_nfs
username: vsadmin
password: password
JSON
{
  "version": 1,
  "backendName": "ExampleBackend",
  "storageDriverName": "ontap-nas",
  "managementLIF": "10.0.0.1",
  "dataLIF": "10.0.0.2",
  "svm": "svm_nfs",
  "username": "vsadmin",
  "password": "password"
}

请注意,后端定义是凭据以纯文本格式存储的唯一位置。创建后端后,用户名 / 密码将使用 Base64 进行编码并存储为 Kubernetes 密钥。创建 / 更新后端是唯一需要了解凭据的步骤。因此,这是一项仅由管理员执行的操作,由 Kubernetes 或存储管理员执行。

启用基于证书的身份验证

新的和现有的后端可以使用证书并与 ONTAP 后端进行通信。后端定义需要三个参数。

  • clientCertificate :客户端证书的 Base64 编码值。

  • clientPrivateKey :关联私钥的 Base64 编码值。

  • trustedCACertifate :受信任 CA 证书的 Base64 编码值。如果使用可信 CA ,则必须提供此参数。如果不使用可信 CA ,则可以忽略此设置。

典型的工作流包括以下步骤。

步骤
  1. 生成客户端证书和密钥。生成时,将公用名( Common Name , CN )设置为要作为身份验证的 ONTAP 用户。

    openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout k8senv.key -out k8senv.pem -subj "/C=US/ST=NC/L=RTP/O=NetApp/CN=vsadmin"
  2. 将可信 CA 证书添加到 ONTAP 集群。此问题可能已由存储管理员处理。如果未使用可信 CA ,则忽略。

    security certificate install -type server -cert-name <trusted-ca-cert-name> -vserver <vserver-name>
    ssl modify -vserver <vserver-name> -server-enabled true -client-enabled true -common-name <common-name> -serial <SN-from-trusted-CA-cert> -ca <cert-authority>
  3. 在 ONTAP 集群上安装客户端证书和密钥(从步骤 1 开始)。

    security certificate install -type client-ca -cert-name <certificate-name> -vserver <vserver-name>
    security ssl modify -vserver <vserver-name> -client-enabled true
  4. 确认 ONTAP 安全登录角色支持 cert 身份验证方法。

    security login create -user-or-group-name vsadmin -application ontapi -authentication-method cert -vserver <vserver-name>
    security login create -user-or-group-name vsadmin -application http -authentication-method cert -vserver <vserver-name>
  5. 使用生成的证书测试身份验证。将 <SVM 管理 LIF> 和 <SVM 名称 > 替换为管理 LIF IP 和 ONTAP 名称。您必须确保 LIF 的服务策略设置为 default-data-management

    curl -X POST -Lk https://<ONTAP-Management-LIF>/servlets/netapp.servlets.admin.XMLrequest_filer --key k8senv.key --cert ~/k8senv.pem -d '<?xml version="1.0" encoding="UTF-8"?><netapp xmlns="http://www.netapp.com/filer/admin" version="1.21" vfiler="<vserver-name>"><vserver-get></vserver-get></netapp>'
  6. 使用 Base64 对证书,密钥和可信 CA 证书进行编码。

    base64 -w 0 k8senv.pem >> cert_base64
    base64 -w 0 k8senv.key >> key_base64
    base64 -w 0 trustedca.pem >> trustedca_base64
  7. 使用从上一步获得的值创建后端。

    cat cert-backend-updated.json
    {
    "version": 1,
    "storageDriverName": "ontap-nas",
    "backendName": "NasBackend",
    "managementLIF": "1.2.3.4",
    "dataLIF": "1.2.3.8",
    "svm": "vserver_test",
    "clientCertificate": "Faaaakkkkeeee...Vaaalllluuuueeee",
    "clientPrivateKey": "LS0tFaKE...0VaLuES0tLS0K",
    "storagePrefix": "myPrefix_"
    }
    
    #Update backend with tridentctl
    tridentctl update backend NasBackend -f cert-backend-updated.json -n trident
    +------------+----------------+--------------------------------------+--------+---------+
    |    NAME    | STORAGE DRIVER |                 UUID                 | STATE  | VOLUMES |
    +------------+----------------+--------------------------------------+--------+---------+
    | NasBackend | ontap-nas      | 98e19b74-aec7-4a3d-8dcf-128e5033b214 | online |       9 |
    +------------+----------------+--------------------------------------+--------+---------+

更新身份验证方法或轮换凭据

您可以更新现有后端以使用其他身份验证方法或轮换其凭据。这两种方式都适用:使用用户名 / 密码的后端可以更新为使用证书;使用证书的后端可以更新为基于用户名 / 密码的后端。为此、您必须删除现有身份验证方法并添加新的身份验证方法。然后、使用更新后的backend.json文件、该文件包含要执行的所需参数 tridentctl update backend

cat cert-backend-updated.json
{
"version": 1,
"storageDriverName": "ontap-nas",
"backendName": "NasBackend",
"managementLIF": "1.2.3.4",
"dataLIF": "1.2.3.8",
"svm": "vserver_test",
"username": "vsadmin",
"password": "password",
"storagePrefix": "myPrefix_"
}

#Update backend with tridentctl
tridentctl update backend NasBackend -f cert-backend-updated.json -n trident
+------------+----------------+--------------------------------------+--------+---------+
|    NAME    | STORAGE DRIVER |                 UUID                 | STATE  | VOLUMES |
+------------+----------------+--------------------------------------+--------+---------+
| NasBackend | ontap-nas      | 98e19b74-aec7-4a3d-8dcf-128e5033b214 | online |       9 |
+------------+----------------+--------------------------------------+--------+---------+
备注 轮换密码时,存储管理员必须先在 ONTAP 上更新用户的密码。然后进行后端更新。轮换证书时,可以向用户添加多个证书。之后,后端将更新以使用新证书,然后可以从 ONTAP 集群中删除旧证书。

更新后端不会中断对已创建卷的访问,也不会影响在之后建立的卷连接。成功的后端更新表明, Astra Trident 可以与 ONTAP 后端进行通信并处理未来的卷操作。

管理 NFS 导出策略

Astra Trident 使用 NFS 导出策略来控制对其配置的卷的访问。

使用导出策略时, Astra Trident 提供了两个选项:

  • Astra Trident 可以动态管理导出策略本身;在此操作模式下,存储管理员会指定一个表示可接受 IP 地址的 CIDR 块列表。Astra Trident 会自动将属于这些范围的节点 IP 添加到导出策略中。或者,如果未指定任何 CIDR ,则在节点上找到的任何全局范围的单播 IP 都将添加到导出策略中。

  • 存储管理员可以手动创建导出策略和添加规则。除非在配置中指定了不同的导出策略名称,否则 Astra Trident 将使用默认导出策略。

动态管理导出策略

Asta三叉式存储提供了动态管理ONTAP后端导出策略的功能。这样,存储管理员就可以为工作节点 IP 指定允许的地址空间,而不是手动定义显式规则。它大大简化了导出策略管理;修改导出策略不再需要手动干预存储集群。此外、这有助于将对存储集群的访问限制为仅允许IP位于指定范围内的工作节点访问、从而支持精细的自动化管理。

备注 使用动态导出策略时、请勿使用网络地址转换(Network Address Translation、NAT)。使用NAT时、存储控制器会看到前端NAT地址、而不是实际IP主机地址、因此、如果在导出规则中找不到匹配项、则会拒绝访问。

示例

必须使用两个配置选项。下面是一个后端定义示例:

---
version: 1
storageDriverName: ontap-nas
backendName: ontap_nas_auto_export
managementLIF: 192.168.0.135
svm: svm1
username: vsadmin
password: password
autoExportCIDRs:
- 192.168.0.0/24
autoExportPolicy: true
备注 使用此功能时、您必须确保SVM中的根接合具有先前创建的导出策略、并具有允许节点CIDR块的导出规则(例如默认导出策略)。始终遵循NetApp建议的最佳实践、为Astra三端存储专用SVM。

以下是使用上述示例对此功能的工作原理进行的说明:

  • autosExportPolicy 设置为 true 。这表示 Astra Trident 将为 svm1 SVM 创建导出策略,并使用 autosExportCIDRS 地址块处理规则的添加和删除。例如, UUID 为 403b5326-8482-40db-96d0-d83fb3f4daec 且 autodExportPolicy 设置为 true 的后端会在 SVM 上创建一个名为 trident -403b5326-8482-40db-96d0-d83fb3f4daec 的导出策略。

  • autosExportCIDR 包含地址块列表。此字段为可选字段,默认为 "0.0.0.0/0 , " :: /0" 。如果未定义,则 Astra Trident 会添加在工作节点上找到的所有全局范围的单播地址。

在此示例中,提供了 192.168.0.0/24 地址空间。这表示此地址范围内的 Kubernetes 节点 IP 将添加到 Astra Trident 创建的导出策略中。当 Astra Trident 注册其运行的节点时,它会检索该节点的 IP 地址,并根据 autosExportCIDRS 中提供的地址块对其进行检查。筛选 IP 后, Astra Trident 会为其发现的客户端 IP 创建导出策略规则,并为其标识的每个节点创建一个规则。

创建后,您可以为后端更新 autosExportPolicyautosExportCIDR 。您可以为自动管理的后端附加新的 CIDR ,也可以删除现有的 CIDR 。删除 CIDR 时请务必小心,以确保现有连接不会断开。您也可以选择对后端禁用 autosExportPolicy ,并回退到手动创建的导出策略。这需要在后端配置中设置 exportPolicy 参数。

在 Astra Trident 创建或更新后端后,您可以使用 tridentctl 或相应的 tridentbackend CRD 检查后端:

./tridentctl get backends ontap_nas_auto_export -n trident -o yaml
items:
- backendUUID: 403b5326-8482-40db-96d0-d83fb3f4daec
  config:
    aggregate: ""
    autoExportCIDRs:
    - 192.168.0.0/24
    autoExportPolicy: true
    backendName: ontap_nas_auto_export
    chapInitiatorSecret: ""
    chapTargetInitiatorSecret: ""
    chapTargetUsername: ""
    chapUsername: ""
    dataLIF: 192.168.0.135
    debug: false
    debugTraceFlags: null
    defaults:
      encryption: "false"
      exportPolicy: <automatic>
      fileSystemType: ext4

当节点添加到 Kubernetes 集群并向 Astra Trident 控制器注册后,现有后端的导出策略将会更新(前提是它们位于后端的 autosExportCIDR 中指定的地址范围内)。

删除节点后, Astra Trident 会检查所有联机后端,以删除该节点的访问规则。通过从受管后端的导出策略中删除此节点 IP , Astra Trident 可防止恶意挂载,除非此 IP 可由集群中的新节点重复使用。

对于以前存在的后端、请使用更新后端 tridentctl update backend 将确保Astra Trident自动管理导出策略。这将创建一个以后端UUID命名的新导出策略、后端上的卷在重新挂载时将使用新创建的导出策略。

备注 删除具有自动管理导出策略的后端将删除动态创建的导出策略。如果重新创建后端,则会将其视为新的后端,并会创建新的导出策略。

如果更新了活动节点的 IP 地址,则必须在此节点上重新启动 Astra Trident Pod 。然后, Astra Trident 将更新其管理的后端的导出策略,以反映此 IP 更改。

准备配置SMB卷

只需稍作准备、您就可以使用配置SMB卷 ontap-nas 驱动程序。

警告 要创建、您必须在SVM上同时配置NFS和SMB/CCIFS协议 ontap-nas-economy 适用于内部ONTAP 的SMB卷。如果未能配置其中任一协议、则发生原因 SMB卷创建将失败。
开始之前

在配置SMB卷之前、您必须满足以下条件。

  • 一个Kubernetes集群、其中包含一个Linux控制器节点以及至少一个运行Windows Server 2019的Windows工作节点。Astra Trident仅支持将SMB卷挂载到Windows节点上运行的Pod。

  • 至少一个包含Active Directory凭据的Astra Trident密钥。以生成密钥 smbcreds

    kubectl create secret generic smbcreds --from-literal username=user --from-literal password='password'
  • 配置为Windows服务的CSI代理。配置 csi-proxy、请参见 "GitHub:CSI代理""GitHub:适用于Windows的CSI代理" 适用于在Windows上运行的Kubernetes节点。

步骤
  1. 对于内部ONTAP、您可以选择创建SMB共享、也可以选择Astra三端存储为您创建一个共享。

    备注 Amazon FSx for ONTAP需要SMB共享。

    您可以使用以下两种方式之一创建SMB管理共享 "Microsoft管理控制台" 共享文件夹管理单元或使用ONTAP 命令行界面。要使用ONTAP 命令行界面创建SMB共享、请执行以下操作:

    1. 如有必要,为共享创建目录路径结构。

      vserver cifs share create 命令会在创建共享期间检查-path选项中指定的路径。如果指定路径不存在,则命令将失败。

    2. 创建与指定SVM关联的SMB共享:

      vserver cifs share create -vserver vserver_name -share-name share_name -path path [-share-properties share_properties,...] [other_attributes] [-comment text]
    3. 验证是否已创建共享:

      vserver cifs share show -share-name share_name
      备注 请参见 "创建 SMB 共享" 了解完整详细信息。
  2. 创建后端时、必须配置以下内容以指定SMB卷。有关适用于ONTAP 后端的所有FSX配置选项、请参见 "适用于ONTAP 的FSX配置选项和示例"

    参数 Description 示例

    smbShare

    您可以指定以下选项之一:使用Microsoft管理控制台或ONTAP命令行界面创建的SMB共享的名称;允许Asta三端到功能创建SMB共享的名称;或者、您可以将参数留空以防止对卷进行通用共享访问。

    对于内部ONTAP、此参数是可选的。

    此参数对于Amazon FSx for ONTAP后端为必填项、不能为空。

    smb-share

    nasType

    *必须设置为 smb`如果为空、则默认为 `nfs

    smb

    securityStyle

    新卷的安全模式。必须设置为 ntfsmixed 用于SMB卷。

    ntfsmixed 对于SMB卷

    unixPermissions

    新卷的模式。对于SMB卷、必须留空。

    ""