我目前正在K8S群集中工作,并且暴露了以下终点。
http://172.16.46.16:8080/websocket/metrics
现在我的应用程序是与Sprint Boot相关的。为了点击此URL,它当前是敏感的,这意味着它需要用户/名称密码。
根据documentation,我可以关闭指标上的敏感功能,这样我就不需要用户名/通行证来授权自己了。由于我不想在我的配置中对此进行硬编码,因此我在运行时传递了所需的参数。
我的K8S控制器文件是::
# cat websocket-replication-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: websocket-backend-controller
spec:
replicas: 2
selector:
name: websocket-backend
template:
metadata:
labels:
name: websocket-backend
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: /websocket/metrics
prometheus.io/port: '8080'
spec:
containers:
- name: websocket-backend
image: armdocker.rnd.ericsson.se/proj_csdp/websocket_backend:3.0.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
livenessProbe:
httpGet:
port: 8080
path: /websocket/health
initialDelaySeconds: 300
timeoutSeconds: 30
volumeMounts:
- name: nfs
mountPath: "/vault"
command:
- java
- -Duser.timezone=UTC
- -jar
- -Dspring.profiles.active=clustered
- websocket.jar
- --endpoints.metrics.sensitive=false
volumes:
- name: nfs
nfs:
server: kube-nfs
path: "/kubenfs/vault"
readOnly: true
最终命令如下:
java -Duser.timezone=UTC -jar -Dspring.profiles.active=clustered websocket.jar --endpoints.metrics.sensitive=false
以这种方式启动应用程序似乎并没有超出度量敏感行为。我仍然得到server returned HTTP status 401 Unauthorized
我能够访问我的pod并查找任何错误,但我没有看到任何错误。
我在这里缺少什么吗?
答案 0 :(得分:0)
尝试禁用Spring Security for management --management.security.enabled=false
,命令:
java -Duser.timezone=UTC -jar -Dspring.profiles.active=clustered websocket.jar
--endpoints.metrics.sensitive=false
--management.security.enabled=false
在这种情况下,最好在自定义端口上公开管理端点,例如:management.port=9081
您还可以启用安全性并提供默认用户和密码:
management.security.enabled=true
security.user.name=user
security.user.password=pa55word
请阅读Spring文档:Monitoring and management over HTTP