使用kubecl建立後端
後端定義 Trident 與儲存系統之間的關係。它告訴Trident如何與該儲存系統通訊、以及Trident如何從該儲存系統配置磁碟區。安裝 Trident 之後、下一步是建立後端。 `TridentBackendConfig`自訂資源定義( CRD )可讓您直接透過 Kubernetes 介面建立及管理 Trident 後端。您可以使用或等效的 CLI 工具來 `kubectl`進行 Kubernetes 發佈。
TridentBackendConfig
TridentBackendConfig
(tbc
、 tbconfig
、 tbackendconfig
)為前端、命名 CRD 、可讓您使用管理 Trident 後端 kubectl
。Kubernetes 和儲存管理員現在可以直接透過 Kubernetes CLI 建立和管理後端(tridentctl
、而不需要專用的命令列公用程式)。
建立「TridentBackendConfig」物件之後、會發生下列情況:
-
Trident 會根據您提供的組態自動建立後端。這在內部表示爲 A
TridentBackend
(tbe
、tridentbackend
) CR 。 -
TridentBackendConfig`與由 Trident 建立的唯一繫結 `TridentBackend
。
每個「TridentBackendConfig」都有一對一的對應、並有「TridentBackend」。前者是提供給使用者設計及設定後端的介面、後者是Trident代表實際後端物件的方式。
TridentBackend`CRS 是由 Trident 自動建立。您*不應該*修改這些項目。如果您想要更新後端、請修改物件以進行更新 `TridentBackendConfig 。
|
請參閱下列範例、以瞭解「TridentBackendConfig」CR的格式:
apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-ontap-san spec: version: 1 backendName: ontap-san-backend storageDriverName: ontap-san managementLIF: 10.0.0.1 dataLIF: 10.0.0.2 svm: trident_svm credentials: name: backend-tbc-ontap-san-secret
您也可以查看中的範例 "Trident安裝程式" 所需儲存平台/服務的範例組態目錄。
。 spec
採用後端特定的組態參數。在此範例中、後端使用 ontap-san
儲存驅動程式、並使用此處列出的組態參數。如需所需儲存驅動程式的組態選項清單、請參閱 "儲存驅動程式的後端組態資訊"。
在《TridentBackendConfig》(CRR)中新推出的「sPEC」一節也包含「認證」和「刪除原則」欄位:
-
「認證資料」:此參數為必填欄位、包含用於驗證儲存系統/服務的認證資料。此設定為使用者建立的Kubernetes Secret。認證資料無法以純文字格式傳遞、因此會產生錯誤。
-
「刪除原則」:此欄位可定義刪除「TridentBackendConfig」時應發生的情況。可能需要兩種可能的值之一:
-
「刪除」:這會同時刪除「TridentBackendConfig」和相關後端。這是預設值。
-
「保留」:刪除「TridentBackendConfig」(TridentBackendConfig)CR時、後端定義仍會存在、並可使用「tridentctl」進行管理。將刪除原則設為「保留」可讓使用者降級至較早版本(21.04之前)、並保留建立的後端。此欄位的值可在建立「TridentBackendConfig」之後更新。
-
後端名稱是使用「sPEC.backendName」來設定。如果未指定、則會將後端名稱設為「TridentBackendConfig」物件(metadata.name)的名稱。建議使用「sPEC.backendName」明確設定後端名稱。 |
使用建立的後端 tridentctl`沒有關聯的 `TridentBackendConfig`物件。您可以建立 CR 來 `TridentBackendConfig`選擇管理此類後端 `kubectl 。必須注意指定相同的組態參數(例如 spec.backendName 、、 spec.storagePrefix 、 spec.storageDriverName`等)。Trident 會自動將新建立的後端與先前存在的後端繫結 `TridentBackendConfig 。
|
步驟總覽
若要使用「kubecll」建立新的後端、您應該執行下列動作:
-
建立 "Kubernetes機密"。密碼包含 Trident 與儲存叢集 / 服務通訊所需的認證。
-
建立「TridentBackendConfig」物件。其中包含有關儲存叢集/服務的詳細資訊、並參考上一步建立的機密。
建立後端之後、您可以使用「kubecl Get tbc <tbc-name>-n <trident命名空間>」來觀察其狀態、並收集其他詳細資料。
步驟1:建立Kubernetes機密
建立包含後端存取認證的秘密。這是每個儲存服務/平台所獨有的功能。範例如下:
kubectl -n trident create -f backend-tbc-ontap-san-secret.yaml apiVersion: v1 kind: Secret metadata: name: backend-tbc-ontap-san-secret type: Opaque stringData: username: cluster-admin password: t@Ax@7q(>
下表摘要說明每個儲存平台的機密必須包含的欄位:
儲存平台機密欄位說明 | 秘密 | 欄位說明 |
---|---|---|
Azure NetApp Files |
ClientID |
應用程式註冊的用戶端ID |
適用於 GCP Cloud Volumes Service |
Private金鑰ID |
私密金鑰的ID。GCP服務帳戶API金鑰的一部分、具有CVS管理員角色 |
適用於 GCP Cloud Volumes Service |
Private金鑰 |
私密金鑰:GCP服務帳戶API金鑰的一部分、具有CVS管理員角色 |
元素(NetApp HCI / SolidFire) |
端點 |
MVIP、適用於SolidFire 採用租戶認證的不含用戶身分證明的叢集 |
ONTAP |
使用者名稱 |
連線至叢集/ SVM的使用者名稱。用於認證型驗證 |
ONTAP |
密碼 |
連線至叢集/ SVM的密碼。用於認證型驗證 |
ONTAP |
用戶端權限金鑰 |
用戶端私密金鑰的Base64編碼值。用於憑證型驗證 |
ONTAP |
chap使用 者名稱 |
傳入使用者名稱。如果useCHAP=true則需要。適用於「ONTAP-SAN」和「ONTAP-san經濟」 |
ONTAP |
chapInitiator機密 |
CHAP啟動器密碼。如果useCHAP=true則需要。適用於「ONTAP-SAN」和「ONTAP-san經濟」 |
ONTAP |
chapTargetUsername |
目標使用者名稱。如果useCHAP=true則需要。適用於「ONTAP-SAN」和「ONTAP-san經濟」 |
ONTAP |
chapTargetInitiator機密 |
CHAP目標啟動器機密。如果useCHAP=true則需要。適用於「ONTAP-SAN」和「ONTAP-san經濟」 |
在此步驟中建立的機密會參照下一步所建立之「TridentBackendConfig」物件的「sapec.ecent」欄位。
步驟2:建立 TridentBackendConfig
CR
您現在可以建立「TridentBackendConfig」的CR了。在此範例中、使用「ONTAP-SAN」驅動程式的後端是使用「TridentBackendConfig」物件建立、如下所示:
kubectl -n trident create -f backend-tbc-ontap-san.yaml
apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-ontap-san spec: version: 1 backendName: ontap-san-backend storageDriverName: ontap-san managementLIF: 10.0.0.1 dataLIF: 10.0.0.2 svm: trident_svm credentials: name: backend-tbc-ontap-san-secret
步驟3:確認的狀態 TridentBackendConfig
CR
現在您已經建立了「TridentBackendConfig」(TridentBackendConfig)CR、您就可以驗證其狀態。請參閱下列範例:
kubectl -n trident get tbc backend-tbc-ontap-san NAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-ontap-san ontap-san-backend 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8 Bound Success
已成功建立後端、並連結至「TridentBackendConfig」CR。
階段可以採用下列其中一個值:
-
Bound
:TridentBackendConfig
CR與後端相關聯、且後端包含configRef
設定為TridentBackendConfig
CR 的 uid 。 -
《Unbound》:使用「」表示。「TridentBackendConfig」物件不會繫結至後端。根據預設、所有新建立的「TridentBackendConfig」CRS均處於此階段。階段變更之後、就無法再恢復為Unbound(未綁定)。
-
Deleting
:TridentBackendConfig
CR 的deletionPolicy
已設定為刪除。當TridentBackendConfig
系統會刪除CR、並轉換為「刪除」狀態。-
如果後端不存在持續磁碟區宣告( PVCS )、刪除
TridentBackendConfig`將會導致 Trident 刪除後端和 `TridentBackendConfig
CR 。 -
如果後端上有一個或多個PVCS、則會進入刪除狀態。隨後、「TridentBackendConfig」CR也會進入刪除階段。只有刪除所有的PVCS之後、才會刪除後端和「TridentBackendConfig」。
-
-
「遺失」:與「TridentBackendConfig」CR相關的後端意外或刻意刪除、而「TridentBackendConfig」CR仍有刪除後端的參考資料。無論「刪除原則」值為何、「TridentBackendConfig」CR仍可刪除。
-
Unknown
: Trident 無法確定與 CR 關聯的後端的狀態或存在TridentBackendConfig
。例如、如果 API 伺服器沒有回應、或tridentbackends.trident.netapp.io
CRD 遺失。這可能需要介入。
在此階段、成功建立後端!還有多種作業可以額外處理、例如 "後端更新和後端刪除"。
(選用)步驟4:取得更多詳細資料
您可以執行下列命令來取得有關後端的詳細資訊:
kubectl -n trident get tbc backend-tbc-ontap-san -o wide
NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY backend-tbc-ontap-san ontap-san-backend 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8 Bound Success ontap-san delete
此外、您也可以取得「TridentBackendConfig」的YAML/Json傾印。
kubectl -n trident get tbc backend-tbc-ontap-san -o yaml
apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: creationTimestamp: "2021-04-21T20:45:11Z" finalizers: - trident.netapp.io generation: 1 name: backend-tbc-ontap-san namespace: trident resourceVersion: "947143" uid: 35b9d777-109f-43d5-8077-c74a4559d09c spec: backendName: ontap-san-backend credentials: name: backend-tbc-ontap-san-secret managementLIF: 10.0.0.1 dataLIF: 10.0.0.2 storageDriverName: ontap-san svm: trident_svm version: 1 status: backendInfo: backendName: ontap-san-backend backendUUID: 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8 deletionPolicy: delete lastOperationStatus: Success message: Backend 'ontap-san-backend' created phase: Bound
backendInfo`包含回應 CR 所建立後端 `TridentBackendConfig`的 `backendName`和 `backendUUID
。此 lastOperationStatus`欄位代表 CR 上次操作的狀態 `TridentBackendConfig
、可由使用者觸發(例如、使用者在中變更項目 spec
)或由 Trident 觸發(例如、在 Trident 重新啟動期間)。可能是「成功」或「失敗」。 phase`代表 CR 與後端之間關係的狀態 `TridentBackendConfig
。在上述範例中、 phase`有值界限、表示 `TridentBackendConfig
CR 與後端相關聯。
您可以執行「kubeclt -n triident描述tbc <tbc-cr-name>」命令、以取得事件記錄的詳細資料。
您無法使用「tridentctl」來更新或刪除包含相關「TridentBackendConfig」物件的後端。若要瞭解在「tridentctl」和「TridentBackendConfig」之間切換的步驟、 "請參閱此處"。 |