準備使用ONTAP 支援的SAN驅動程式來設定後端
瞭解使用 ONTAP SAN 驅動程式設定 ONTAP 後端的需求和驗證選項。
需求
對於所有 ONTAP 後端、 Trident 至少需要指派一個 Aggregate 給 SVM 。
請記住、您也可以執行多個驅動程式、並建立指向一個或多個驅動程式的儲存類別。例如、您可以設定使用「ONTAP-SAN」驅動程式的「SAN開發」類別、以及使用「ONTAP-SAN經濟」類別的「SAN預設」類別。
您所有的Kubernetes工作節點都必須安裝適當的iSCSI工具。請參閱 "準備工作節點" 以取得詳細資料。
驗證 ONTAP 後端
Trident 提供兩種驗證 ONTAP 後端的模式。
-
認證型:ONTAP 對具備所需權限的使用者名稱和密碼。建議使用預先定義的安全登入角色、例如「admin」或「vsadmin」、以確保與ONTAP 各種版本的最大相容性。
-
憑證型: Trident 也可以使用安裝在後端的憑證與 ONTAP 叢集通訊。在此處、後端定義必須包含用戶端憑證、金鑰及信任的CA憑證(建議使用)的Base64編碼值。
您可以更新現有的後端、以便在認證型和憑證型方法之間移動。不過、一次只支援一種驗證方法。若要切換至不同的驗證方法、您必須從後端組態中移除現有方法。
如果您嘗試同時提供*認證與認證*、後端建立將會失敗、並在組態檔中提供多種驗證方法。 |
啟用認證型驗證
Trident 需要 SVM 範圍 / 叢集範圍管理員的認證、才能與 ONTAP 後端通訊。建議您使用標準的預先定義角色、例如 admin`或 `vsadmin
。如此可確保與未來 ONTAP 版本的前移相容性、這些版本可能會公開未來 Trident 版本所使用的功能 API 。自訂安全登入角色可建立並搭配 Trident 使用、但不建議使用。
後端定義範例如下所示:
--- version: 1 backendName: ExampleBackend storageDriverName: ontap-san managementLIF: 10.0.0.1 svm: svm_nfs username: vsadmin password: password
{ "version": 1, "backendName": "ExampleBackend", "storageDriverName": "ontap-san", "managementLIF": "10.0.0.1", "svm": "svm_nfs", "username": "vsadmin", "password": "password" }
請記住、後端定義是唯一以純文字儲存認證的位置。建立後端之後、使用者名稱/密碼會以Base64編碼、並儲存為Kubernetes機密。建立或更新後端是唯一需要具備認證知識的步驟。因此、這是一項純管理員操作、由Kubernetes /儲存管理員執行。
啟用憑證型驗證
新的和現有的後端可以使用憑證、並與ONTAP 該後端通訊。後端定義需要三個參數。
-
用戶端憑證:用戶端憑證的Base64編碼值。
-
用戶端私密金鑰:關聯私密金鑰的Base64編碼值。
-
信任的CACertifate:受信任CA憑證的Base64編碼值。如果使用信任的CA、則必須提供此參數。如果未使用信任的CA、則可忽略此問題。
典型的工作流程包括下列步驟。
-
產生用戶端憑證和金鑰。產生時、請將Common Name(CN)(一般名稱(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=admin"
-
將信任的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>
-
在ONTAP 支援叢集上安裝用戶端憑證和金鑰(步驟1)。
security certificate install -type client-ca -cert-name <certificate-name> -vserver <vserver-name> security ssl modify -vserver <vserver-name> -client-enabled true
-
確認ONTAP 支援「cert」驗證方法的支援功能。
security login create -user-or-group-name admin -application ontapi -authentication-method cert security login create -user-or-group-name admin -application http -authentication-method cert
-
使用產生的憑證測試驗證。以ONTAP Management LIF IP和SVM名稱取代<SfManagement LIF>和<vserver name>。
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>'
-
使用Base64編碼憑證、金鑰和信任的CA憑證。
base64 -w 0 k8senv.pem >> cert_base64 base64 -w 0 k8senv.key >> key_base64 base64 -w 0 trustedca.pem >> trustedca_base64
-
使用從上一步取得的值建立後端。
cat cert-backend.json { "version": 1, "storageDriverName": "ontap-san", "backendName": "SanBackend", "managementLIF": "1.2.3.4", "svm": "vserver_test", "clientCertificate": "Faaaakkkkeeee...Vaaalllluuuueeee", "clientPrivateKey": "LS0tFaKE...0VaLuES0tLS0K", "trustedCACertificate": "QNFinfO...SiqOyN", "storagePrefix": "myPrefix_" } tridentctl create backend -f cert-backend.json -n trident +------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +------------+----------------+--------------------------------------+--------+---------+ | SanBackend | ontap-san | 586b1cd5-8cf8-428d-a76c-2872713612c1 | online | 0 | +------------+----------------+--------------------------------------+--------+---------+
更新驗證方法或旋轉認證資料
您可以更新現有的後端、以使用不同的驗證方法或旋轉其認證資料。這兩種方法都可行:使用使用者名稱/密碼的後端可更新以使用憑證;使用憑證的後端可更新為使用者名稱/密碼。若要這麼做、您必須移除現有的驗證方法、然後新增驗證方法。然後使用更新的backend.json檔案、其中包含執行「tridentctl後端更新」所需的參數。
cat cert-backend-updated.json { "version": 1, "storageDriverName": "ontap-san", "backendName": "SanBackend", "managementLIF": "1.2.3.4", "svm": "vserver_test", "username": "vsadmin", "password": "password", "storagePrefix": "myPrefix_" } #Update backend with tridentctl tridentctl update backend SanBackend -f cert-backend-updated.json -n trident +------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +------------+----------------+--------------------------------------+--------+---------+ | SanBackend | ontap-san | 586b1cd5-8cf8-428d-a76c-2872713612c1 | online | 9 | +------------+----------------+--------------------------------------+--------+---------+
當您旋轉密碼時、儲存管理員必須先更新ONTAP 使用者的密碼(位於BIOS)。接著是後端更新。在循環憑證時、可將多個憑證新增至使用者。然後更新後端以使用新的憑證、之後可從ONTAP 該叢集刪除舊的憑證。 |
更新後端不會中斷對已建立之磁碟區的存取、也不會影響之後建立的磁碟區連線。成功的後端更新表示 Trident 可以與 ONTAP 後端通訊、並處理未來的 Volume 作業。
為 Trident 建立自訂 ONTAP 角色
您可以使用最低 Privileges 來建立 ONTAP 叢集角色、這樣就不需要使用 ONTAP 管理員角色來執行 Trident 中的作業。當您在 Trident 後端組態中包含使用者名稱時、 Trident 會使用您建立的 ONTAP 叢集角色來執行作業。
如需建立 Trident 自訂角色的詳細資訊、請參閱"Trident 自訂角色產生器"。
-
使用下列命令建立新角色:
security login role create <role_name\> -cmddirname "command" -access all –vserver <svm_name\>
-
為 Trident 使用者建立使用者名稱:
security login create -username <user_name\> -application ontapi -authmethod <password\> -role <name_of_role_in_step_1\> –vserver <svm_name\> -comment "user_description"
-
將角色對應至使用者:
security login modify username <user_name\> –vserver <svm_name\> -role <role_name\> -application ontapi -application console -authmethod <password\>
在 ONTAP 系統管理員中執行下列步驟:
-
* 建立自訂角色 * :
-
若要在叢集層級建立自訂角色、請選取 * 叢集 > 設定 * 。
(或)若要在 SVM 層級建立自訂角色、請選取 * 儲存設備 > 儲存 VM > >
required SVM
設定 > 使用者與角色 * 。 -
選取 * 使用者和角色 * 旁的箭頭圖示( * → * )。
-
在 * 角色 * 下選擇 +Add 。
-
定義角色的規則、然後按一下 * 儲存 * 。
-
-
* 將角色對應至 Trident 使用者 * : + 在「 * 使用者與角色 * 」頁面上執行下列步驟:
-
在 * 使用者 * 下選取新增圖示 + 。
-
選取所需的使用者名稱、然後在 * 角色 * 的下拉式功能表中選取角色。
-
按一下「 * 儲存 * 」。
-
如需詳細資訊、請參閱下列頁面:
使用雙向CHAP驗證連線
Trident 可以使用和 ontap-san-economy`驅動程式的雙向 CHAP 驗證 iSCSI 工作階段 `ontap-san
。這需要在後端定義中啟用 `useCHAP`選項。設為 `true`時、 Trident 會將 SVM 的預設啟動器安全性設定為雙向 CHAP 、並從後端檔案設定使用者名稱和密碼。NetApp建議使用雙向CHAP來驗證連線。請參閱下列組態範例:
--- version: 1 storageDriverName: ontap-san backendName: ontap_san_chap managementLIF: 192.168.0.135 svm: ontap_iscsi_svm useCHAP: true username: vsadmin password: password chapInitiatorSecret: cl9qxIm36DKyawxy chapTargetInitiatorSecret: rqxigXgkesIpwxyz chapTargetUsername: iJF4heBRT0TCwxyz chapUsername: uh2aNCLSd6cNwxyz
「useCHAP」參數是布林選項、只能設定一次。預設值設為假。將其設為true之後、您就無法將其設為假。 |
除了"useCHAP=true"之外、"chapInitiator Secret(chapInitiator機密)、"chaptarketatorSecret(chaptarketusername")、"chaptarketusername"(chaptargetuseamuse")和"chapusername"(chamus在建立後端後端之後、可以執行「tridentctl update」來變更機密。
運作方式
儲存管理員會將設定 `useCHAP`為 true 、指示 Trident 在儲存後端上設定 CHAP 。這包括下列項目:
-
在SVM上設定CHAP:
-
如果 SVM 的預設啟動器安全性類型為無(預設為「無」) * 且 * 磁碟區中沒有預先存在的 LUN 、則 Trident 會將預設安全性類型設為
CHAP
、並繼續設定 CHAP 啟動器和目標使用者名稱和機密。 -
如果 SVM 包含 LUN 、 Trident 將不會在 SVM 上啟用 CHAP 。這可確保不限制對 SVM 上已存在的 LUN 的存取。
-
-
設定CHAP啟動器和目標使用者名稱和機密;這些選項必須在後端組態中指定(如上所示)。
建立後端之後、 Trident 會建立對應的 tridentbackend
CRD 、並將 CHAP 機密和使用者名稱儲存為 Kubernetes 機密。Trident 在此後端建立的所有 PV 都會透過 CHAP 掛載及附加。
旋轉認證資料並更新後端
您可以更新「backend.json」檔案中的CHAP參數、以更新CHAP認證。這需要更新CHAP機密、並使用「tridentctl update」命令來反映這些變更。
更新後端的 CHAP 機密時、您必須使用 `tridentctl`來更新後端。請勿透過 ONTAP UI 更新儲存叢集上的認證、因為 Trident 將無法取得這些變更。 |
cat backend-san.json { "version": 1, "storageDriverName": "ontap-san", "backendName": "ontap_san_chap", "managementLIF": "192.168.0.135", "svm": "ontap_iscsi_svm", "useCHAP": true, "username": "vsadmin", "password": "password", "chapInitiatorSecret": "cl9qxUpDaTeD", "chapTargetInitiatorSecret": "rqxigXgkeUpDaTeD", "chapTargetUsername": "iJF4heBRT0TCwxyz", "chapUsername": "uh2aNCLSd6cNwxyz", } ./tridentctl update backend ontap_san_chap -f backend-san.json -n trident +----------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +----------------+----------------+--------------------------------------+--------+---------+ | ontap_san_chap | ontap-san | aa458f3b-ad2d-4378-8a33-1a472ffbeb5c | online | 7 | +----------------+----------------+--------------------------------------+--------+---------+
現有連線不會受到影響;如果 Trident 在 SVM 上更新認證、則這些連線將繼續保持作用中狀態。新的連線使用更新的認證資料、而現有的連線會繼續保持作用中。中斷舊PV的連線並重新連線、將會使用更新的認證資料。