在 k8s 集群上运行的 web 应用程序在使用 request.getCookies() 或 request.getSession() 时给出 null

时间:2021-05-25 08:14:28

标签: azure docker kubernetes azure-aks

我正在尝试在 K8s 集群上运行使用 Java、Jsp、Servlet、Angularjs 和 Jquery 开发的 Web 应用程序。 当登录到有 request.getCookies() 或 request.getSession() 命中的应用程序行时,它返回 null 然后它会抛出 NullPointerException。此异常不允许我登录应用程序。

我曾尝试使用 docker 在本地机器和 azure 上运行相同的应用程序,并且运行良好。这证实 image 中没有问题。以下命令用于在 docker 上运行,

docker run -p 8080:8080 <image_name>

我在 Azure(Azure kubernates 服务)上使用 k8s,以下是我使用的配置。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: app
  namespace: default
  name: app
spec:
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 8080
      name: http
  selector:
    app: app
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
        - image: <image_name>
          name: app
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
              name: app

所有的pods、services和ingress都正常运行,没有重启也没有抛出任何异常。

我也尝试创建入口,但问题仍然存在。以下配置我用来创建入口,并在部署入口之前将 service.spec.type 更改为 NodePort

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: gateway-app
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /app/*
            backend:
              serviceName: app
              servicePort: 8080

请在此指导我们如何在 k8s 集群上运行带有会话和 cookie 的应用程序。

0 个答案:

没有答案