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访问地址、访问用户名和密码、加密模式。
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.0 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 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
参数描述
参数 | 描述 | 是否必填 |
---|---|---|
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编码字符串。 取值:
默认不启用加密。 | 否 |
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 volumesnapshots、kubectl get pvc检查样例是否停用。
注意
如果按步骤停用样例后,仍有因样例产生的sc、statefulset、pod、pvc、pv、volumesnapshots,建议手动卸载这些资源。