HBlock CSI插件通过调用HBlock 的HTTP RESTful API进行存储卷的管理操作,例如创建卷、删除卷、扩容卷等。需要配置插件访问HBlock RESTful API的URL地址和端口。
说明支持对接多个HBlock,包括:HBlock单机版本、HBlock集群版。
可以按照下列步骤设置HBlock访问地址。
修改配置文件,并应用配置文件。
-
修改charts/csi-driver-stor/values.yaml配置文件,配置HBlock访问地址、访问用户名和密码、加密模式。
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 csiStorPlugin: stor-csi-driver:1.3.2 storConfig: configJson: |- [ { "clusterID": "cluster1", "apiEndPointList": [ "https://xx.xx.xx.xx:xx", "https://xx.xx.xx.xx:xx", "https://xx.xx.xx.xx:xx" ], "storProvider": "xx", "csiApiTimeout": 480 }, { "clusterID": "cluster2", "apiEndPointList": [ "https://xx.xx.xx.xx:xx", "https://xx.xx.xx.xx:xx", "https://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 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 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
参数描述
参数 描述 是否必填 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的开关,打开一个样例。例如下列配置中打开blockVolumes中的dynamicPv开关。
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 csiStorPlugin: stor-csi-driver:1.3.2 …… # 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: true clusterId: cluster1 clusterMode: true # 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 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
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,必须包含大写字母、小写字母、数字、下划线(_)中的至少两种字符,字母区分大小写。
-
应用配置文件,在charts/csi-driver-stor下执行更新配置命令。
helm upgrade stor ./
-
验证HBlock CSI是否已经可以正常启用:如果启用的样例成功建立pod,则表示HBlock CSI可以正常启用。(可选)
kubectl get pod
停用样例
如果启用了样例,为了避免与正式的实例冲突,建议停用样例。
(1) 在values.yaml中将样例开关变为false。
(2) 执行命令helm upgrade stor ./更新配置。
(3) 执行命令kubectl get pod检查样例是否停用。
注意如果按步骤停用样例后,仍有因样例产生的sc、statefulset、pod、pvc、pv,建议手动卸载这些资源。