0

我正在 kubernetes 上部署 nodejs 应用程序,在部署 pod 启动并运行后,但是当我尝试通过入口访问应用程序时,它会给出 502 bad gateway 错误。

Dockerfile

FROM node:14

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

EXPOSE 3123
CMD [ "node", "index.js" ]

部署.yaml

---
  apiVersion: "apps/v1"
  kind: "Deployment"
  metadata: 
    name: "node-development"
    namespace: "development"
  spec: 
    selector: 
      matchLabels: 
        app: "node-development"
    replicas: 1
    template: 
      metadata: 
        labels: 
          app: "node-development"
      spec: 
        containers: 
          - 
            name: "node-development"
            image: "xxx"
            imagePullPolicy: "Always"
            env: 
              - 
                name: "NODE_ENV"
                value: "development"
            ports: 
              - 
                containerPort: 47033

服务.yaml

---
  apiVersion: "v1"
  kind: "Service"
  metadata: 
    name: "node-development-service"
    namespace: "development"
    labels: 
      app: "node-development"
  spec: 
    ports: 
      - 
        port: 47033
        targetPort: 3123
    selector: 
      app: "node-development"

入口.yaml

---
  apiVersion: "networking.k8s.io/v1"
  kind: "Ingress"
  metadata: 
    name: "node-development-ingress"
    namespace: "development"
    annotations: 
      nginx.ingress.kubernetes.io/rewrite-target: "/$1"
  spec: 
    rules: 
      - 
        host: "xxxx"
        http: 
          paths: 
            - 
              backend: 
                service:
                  name: "node-development"
                  port: 
                    number: 47033
              path: "/node-development/(.*)"
              pathType: "ImplementationSpecific"

使用入口,甚至使用 pod 集群 ip,我都无法访问应用程序,它会抛出 502 bad gateway nginx

4

1 回答 1

1

问题得到解决,我在我的应用程序中使用 SSL,结果它没有使用给定的入口 url 重定向。

需要在 ingress.yaml 文件中添加以下注解。

nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

于 2021-09-16T11:59:14.037 回答