HBlock CSI插件通過調用HBlock 的HTTP RESTful API進行存儲卷的管理操作,例如創建卷、刪除卷、擴容卷等。需要配置插件訪問HBlock RESTful API的URL地址和端口。
說明
支持對接多個HBlock,包括:HBlock單機版本、HBlock集群版。
修改配置文件,并應用配置文件。
可以按照下列步驟設置HBlock訪問地址(以1.5.0的X86版本為例)。
修改charts/csi-driver-stor/values.yaml配置文件,配置HBlock訪問地址、訪問用戶名和密碼、加密模式。
driverName: stor.csi.k8s.io driverNamespace: default iscsiOnHost: true images: csiProvisioner: registry.aliyuncs.com/google_containers/csi-provisioner:v3.5.0 csiAttacher: registry.aliyuncs.com/google_containers/csi-attacher:v4.3.0 csiResizer: registry.aliyuncs.com/google_containers/csi-resizer:v1.8.0 csiDriverRegistrar: registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.8.0 csiSnapshotter: registry.aliyuncs.com/google_containers/csi-snapshotter:v6.3.0 csiSnapshotController: registry.aliyuncs.com/google_containers/snapshot-controller:v6.3.0 csiStorPlugin: stor-csi-driver:1.5.1 storConfig: configJson: |- [ { "clusterID": "cluster1", "apiEndPointList": [ "//xx.xx.xx.xx:xx", "//xx.xx.xx.xx:xx", "//xx.xx.xx.xx:xx" ], "storProvider": "xx", "csiApiTimeout": 480 }, { "clusterID": "cluster2", "apiEndPointList": [ "//xx.xx.xx.xx:xx", "//xx.xx.xx.xx:xx", "//xx.xx.xx.xx:xx" ], "storProvider": "xx", "csiApiTimeout": 480 } ] userKey: IFsKIHsKICJjbHVzdGVySUQiOiAiY2x1c3RlcjEiLCAKICJ1c2VybmFtZSI6ICJhZG1pbiIsCiAicGFzc3dvcmQiOiAic2tza2RuZEQwIgogfSwKIHsKICJjbHVzdGVySUQiOiAiY2x1c3RlcjIiLCAKICJ1c2VybmFtZSI6ICJ4eCIsCiAicGFzc3dvcmQiOiAieHgiCiB9Cl0= chap: # Whether to enable chap encryption. true(dHJ1ZQ==), false(ZmFsc2U=) decryptFlag: ZmFsc2U= # Encrypt the key with base64 decryptData: c3RvcjAxMjM0NTY3ODkwMQ== # Samples of pod, pvc and storageclass example: # Mode of block blockVolumes: # Sample of dynamic pv. Path is templates/examples/block-volumes/dynamic-pv dynamicPv: enable: false clusterId: cluster1 clusterMode: true # Sample of snapshot using dynamic pv. snapshot: enable: false # Sample of clone pv using snapshot. clonePv: enable: false # Sample of clone pv using dynamic pv. clonePv: enable: false # Sample of statefulset with dynamic pv. Path is templates/examples/block-volumes/statefulset statefulset: enable: false clusterId: cluster1 clusterMode: true # Sample of static pv. Path is templates/examples/block-volumes/static-pv staticPv: enable: false clusterId: cluster1 clusterMode: true lunName: lun05 # Mode of filesystem filesystemVolumes: dynamicPv: # Sample of dynamic pv. Path is templates/examples/filesystem-volumes/dynamic-pv/local local: enable: false clusterId: cluster1 clusterMode: true # Sample of snapshot using dynamic pv. snapshot: enable: false # Sample of clone pv using snapshot. clonePv: enable: false # Sample of clone pv using dynamic pv. clonePv: enable: false # Sample of dynamic pv with chap disabled. Path is templates/examples/filesystem-volumes/dynamic-pv/local-chap localChap: enable: false clusterId: cluster1 clusterMode: true chapUser: user chapPassword: skskdndD0dkfL # Sample of dynamic pv with chap enabled. Path is templates/examples/filesystem-volumes/dynamic-pv/local-chap-encrypt localChapDecrypt: enable: false clusterId: cluster1 clusterMode: true chapUser: SFFFzADcpZaUJKsYbPq54A== chapPassword: tbHWrBep3R0RhkFaW+f5Fw== # Sample of statefulset with dynamic pv. Path is templates/examples/filesystem-volumes/statefulset statefulset: enable: false clusterId: cluster1 clusterMode: true # Sample of static pv. Path is templates/examples/filesystem-volumes/static-pv staticPv: enable: false clusterId: cluster1 clusterMode: true lunName: lun04 snapshots: # Sample of static snapshot. # snapshot should pre-provisioned before staticSnapshot be enabled. # Path is templates/examples/snapshots/static-snapshot staticSnapshot: enable: false clusterId: cluster1 sourceLunName: lu1 snapshotName: s1參數描述
參數 描述 是否必填 driverName HBlock CSI驅動名稱。
取值:字符串形式,長度范圍是1~63,只能由小寫字母、數字、句點(.)和短橫線(-)組成,且僅支持以字母或數字開頭。禁止出現連續符號。
默認值為stor.csi.k8s.io。
是 driverNamespace HBlock CSI綁定的Kubernetes命名空間。
注意
必須為已經存在的Kubernetes命名空間。
默認值為:default。
是 iscsiOnHost 守護進程是否由宿主機啟動。
取值:
true:打開狀態,iscsid、multipathd守護進程由宿主機啟動的模式。
false:關閉狀態,iscsid、multipathd守護進程由CSI POD啟動的模式。
默認值為false。
是 storConfig HBlock配置信息。 是 clusterID 指定HBlock的標識,在csi-configMap中唯一。
取值:字符串形式,長度范圍是1~256,可以包含字母、數字、和短橫線(-),字母區分大小寫
是 apiEndPointList HBlock的服務器IP地址及API端口號;或者已經關聯了HBlock IP和API端口號的Kubernetes service域名。
如果是集群版,填寫集群中所有的IP地址及API端口號;如果單機版,只填寫一個即可。
是 storProvider HBlock產品名稱。
取值:HBlock。
是 csiApiTimeout 指定HBlock創建LUN的等待時間,在等待時間內LUN創建失敗,會報錯,然后重試。
取值:正整數,默認值為480,單位是秒。
注意
建議使用默認值。
否 userKey 對接HBlock的標識、用戶名及密碼的字符串的base64編碼。
userKey的編碼過程,可以參見配置HBlock訪問用戶名和密碼。
是 chap 加密模式配置。 否 decryptFlag 是否啟用加密模式,配置為true(啟用)或false(不啟用)的Base64編碼字符串。
取值:
- dHJ1ZQ==:啟用加密,true的Base64編碼。
- ZmFsc2U=:不啟用加密,false的Base64編碼。
默認不啟用加密。
否 decryptData 加密的密鑰。
說明
啟用加密,此參數必填。
取值:源碼為16位的字符串。需要對源碼進行Base64編碼。
decryptData的編碼過程可以參見配置加密模式。
條件 example 此字段是各樣例的開啟,配置完成storConfig、userKey、chap后,用戶可以通過開啟一個樣例開關,來驗證HBlock CSI是否已經可以正常啟用。
注意
啟動樣例時,建議只開啟一個樣例,避免多樣例互相沖突。驗證完成后,需要將樣例開關變為false,避免與正式的實例沖突。
否
應用配置文件,在charts/csi-driver-stor下執行更新配置命令。
helm upgrade stor ./使用樣例驗證HBlock配置是否成功(可選)
注意
如果HBlock CSI中配置了多個HBlock,建議使用樣例驗證多次。例如HBlock CSI對應2個HBlock,則需驗證2個對應HBlock的樣例。
啟用樣例
修改配置文件charts/csi-driver-stor/values.yaml中example的開關,打開樣例。
Example參數描述
參數 描述 enable 是否開啟示例:
- true:開啟示例。
- false:開始示例。
注意
驗證完成后,需要將樣例開關變為false,避免與正式的實例沖突。
clusterId 指定HBlock的標識。 clusterMode 指定HBlock是集群版還是單機版:
- true:HBlock集群版。
- false:HBlock單機版。
chapUser CHAP認證的用戶名。如果配置文件csi-secret-decrypt.yaml中的decryptFlag為true,需要對CHAP認證的用戶名使用DecryptData配置的密鑰對進行AES(ECP、paddingcs7)加密,加密后的結果進行Base64編碼,具體詳見配置加密模式。
加密前取值:字符串形式,長度范圍是3~64,只能由字母、數字、句點( . )、短橫線( - )、下劃線( _ )、冒號( : )組成,字母區分大小寫,且僅支持以字母或數字開頭。
chapPassword CHAP認證的密碼。如果配置文件csi-secret-decrypt.yaml中的decryptFlag為true,需要對CHAP認證的密碼使用DecryptData配置的密鑰對進行AES(ECP、paddingcs7)加密,加密后的結果進行Base64編碼,具體詳見配置加密模式。
加密前取值:字符串形式,長度范圍是12~16,必須包含大寫字母、小寫字母、數字、下劃線(_)中的至少兩種字符,字母區分大小寫。
snapshot.enable 是否啟用快照樣例:
true:啟用。
false:不啟用。
clonePv.enable 是否啟用克隆樣例:
true:啟用。
false:不啟用。
應用配置文件,在charts/csi-driver-stor下執行更新配置命令。
helm upgrade stor ./驗HBlock CSI是否已經可以正常啟用:如果啟用的樣例成功建立pod,則表示HBlock CSI可以正常啟用。如果快照和克隆卷創建成功,說明快照和克隆功能正常。(可選)
kubectl get pod kubectl get volumesnapshots kubectl get pvc
停用樣例
如果啟用了樣例,為了避免與正式的實例沖突,建議停用樣例。
(1) 在values.yaml中將樣例開關變為false。
(2) 執行命令helm upgrade stor ./更新配置。
(3) 執行命令kubectl get pod、kubectl get volumesnapshot、kubectl get pvc檢查樣例是否停用。
說明
如果按步驟停用樣例后,仍有因樣例產生的sc、statefulset、pod、pvc、pv、volumesnapshot,建議手動卸載這些資源。