spring - kubernetes事件未经授权

标签 spring spring-boot kubernetes

我试图通过传递httpheader的值作为secret来定义一个livenessProbe。但我收到未经授权的401。

  - name: mycontainer
    image: myimage
    env:
      - name: MY_SECRET
        valueFrom:
          secretKeyRef:
            name: actuatortoken
            key: token
    livenessProbe:
        httpGet:
          path: /test/actuator/health
          port: 9001
          httpHeaders:
          - name: Authorization
            value: $MY_SECRET


我的 secret 如下:
apiVersion: v1
kind: Secret
metadata:
  name: actuatortoken
type: Opaque
stringData:
  token: Bearer <token>

如果我通过以下相同的实际值...按预期工作
  - name: mycontainer
    image: myimage
    livenessProbe:
        httpGet:
          path: /test/actuator/health
          port: 9001
          httpHeaders:
          - name: Authorization
            value: Bearer <token>


非常感谢您的帮助。

最佳答案

您将拥有的文字字符串$MY_SECRET作为Authorization header 将无法使用。

您不希望将 secret 的实际值放入Pod / Deployment /任何YAML中,因为您不想在其中使用纯文本凭据。

我能想到的3种选择:

a)更改您的应用,使其不需要/test/actuator/health端点的身份验证;

b)当请求的主机为127.0.0.1时,将您的应用更改为不需要身份验证,并更新探针配置以将其用作主机;

c)从HTTP探针切换到命令探针并自己编写curl / wget命令

答案来自Amit Kumar Gupta评论,被发布为社区Wiki。

关于spring - kubernetes事件未经授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60136084/

相关文章:

Scala 或 Spring 的 Spring 替代品?

spring - 如何用 cucumber 激活 Spring 启动配置文件

spring - Spring中的自定义约束验证器不起作用

kubernetes - 如何使用 Kubebuilder-v3/operator-sdk 发送事件

java - Hibernate sessionFactory.getCurrentSession() 与 Spring 一起使用时

java - Spring Aspects/Advisor 的初始化顺序

java - 重试队列绑定(bind)到 RabbitMQ 交换

spring-boot - 无法使用外部IP连接到Container-optimized-os(使用docker运行spring-boot应用程序)

kubernetes - 如何让 Kubernetes 物理卷部署在适当的区域中?

kubernetes - Terraform kubernetes_config_map --from-env-file