如何通过自动部署的Secrets为DataGrid 8.4添加应用用户
问题分析与解决方案
一、当前application用户配置的常见错误点
- 批处理文件未被正确加载:如果你的Infinispan自定义资源(CR)没有在
spec.security.endpointAuthentication.identities.configMapName字段中指定包含identities-batch.yaml的ConfigMap名称,Operator会忽略这个用户配置,导致用户无法创建。 - 权限分配语法错误:批处理文件中的用户创建命令不符合Infinispan CLI规范,比如遗漏
-g application参数(指定权限组),或者命令格式写错,会导致用户创建失败或权限未正确绑定。 - 密码不一致:如果同时用Secret存储密码,但批处理文件中的密码与Secret内容不匹配,会引发登录认证失败。
二、正确定义拥有application权限的自定义用户
1. 编写合规的identities-batch.yaml批处理文件
确保文件包含正确的用户创建命令,格式如下:
batch # 创建application用户并分配application权限组 user create application -p your-plaintext-password -g application run-batch
注:
application权限组默认拥有缓存的读写权限,完全满足Hot Rod客户端连接并操作缓存的需求。
2. 创建存储批处理文件的ConfigMap
kubectl create configmap infinispan-custom-identities --from-file=identities-batch.yaml
3. 在Infinispan CR中引用该ConfigMap
修改你的Infinispan自定义资源,添加权限配置:
apiVersion: infinispan.org/v1 kind: Infinispan metadata: name: infinispan-cluster spec: replicas: 3 security: endpointAuthentication: identities: configMapName: infinispan-custom-identities
生产环境推荐用Secret存储密码:将密码存入Secret,批处理文件中用
user create application -p "${secret:your-secret-name:password-key}" -g application引用,同时在CR的spec.security.endpointAuthentication.identities.secretName中指定Secret名称。
4. 验证用户创建状态
等Operator同步完成后,用operator用户登录Infinispan CLI:
kubectl exec -it <infinispan-pod-name> -- ./cli.sh -c https://localhost:11222 -u operator -p <operator-password>
执行user ls应该能看到application用户,再用user show application确认其已加入application权限组。
三、调试Infinispan登录失败问题
- 查看Pod日志定位错误:
重点搜索kubectl logs <infinispan-pod-name> -fidentity、user、batch相关日志,比如是否存在Failed to execute batch command这类用户创建失败的提示。 - 检查Infinispan CR状态:
查看kubectl get infinispan infinispan-cluster -o yamlstatus.conditions字段,确认是否有配置错误导致实例未就绪。 - 直接测试Hot Rod连接:
在Spring Boot客户端Pod中用hotrod-cli测试(若已安装):
根据错误信息判断是认证失败还是网络连通性问题。hotrod-cli --server <infinispan-service-name>:11222 --user application --password <你的密码> - 验证权限组配置:
登录控制台或CLI,执行role show application,确认该角色包含CREATE、READ、WRITE等缓存操作权限。 - 检查挂载资源正确性:
进入Infinispan Pod,查看ConfigMap是否正确挂载:
确认文件内容与你定义的一致。kubectl exec -it <infinispan-pod-name> -- cat /opt/infinispan/server/conf/identities/identities-batch.yaml
内容的提问来源于stack exchange,提问作者usr-local-ΕΨΗΕΛΩΝ
相关产品推荐
相关产品推荐

