在 GCP 中部署 ejabberd 服务器并使用 ingress 访问其服务时出现问题

NAV*_*GAM 5 deployment chat xmpp ejabberd google-cloud-platform

我在 GCP 中部署了 ejabberd/ecs dokcer 映像,服务类型为节点端口,并尝试使用入口访问它,但它不起作用,我无法使用入口访问服务。我为相同的部署添加了另一个服务,其服务类型为负载均衡器,现在我可以直接从该服务访问 ejabberd 服务器。我不知道为 ejabberd 服务添加入口的正确方法是什么。

以下是我的 yaml 文件: Deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ejabberd-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ejabberd-deployment
  template:
    metadata:
      labels:
        app: ejabberd-deployment
    spec:
      containers:
        - name: ejabberd-container
          image: ejabberd/ecs
          ports:
            - containerPort: 5222
            - containerPort: 5443
            - containerPort: 4369 
Run Code Online (Sandbox Code Playgroud)

服务.yaml

apiVersion: v1
kind: Service
metadata:
  name: ejabberd-service
  namespace: development
  annotations:
    # cloud.google.com/backend-config: '{"ports": {"5443":"ejabberd-backend-config"}}'
    cloud.google.com/backend-config: '{"default":"ejabberd-backend-config"}'
spec:
  ports:
  - port: 80
    targetPort: 5222
    protocol: TCP
    name: xmpp
  - port: 443
    targetPort: 5443
    protocol: TCP
    name: https
  selector:
    app: ejabberd-deployment
  type: NodePort
Run Code Online (Sandbox Code Playgroud)

后端配置.yaml

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: ejabberd-backend-config
spec:
  healthCheck:
    checkIntervalSec: 15
    port: 5443
    type: HTTPS
    requestPath: /ws
    healthyThreshold: 1
    unhealthyThreshold: 3
    timeoutSec: 15

Run Code Online (Sandbox Code Playgroud)

Ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ejabberd-ingress
  annotations:
    kubernetes.io/ingress.class: "gce"
spec:
  tls:
    - hosts:
        - dev-chat.mydomain.com
      secretName: ssl-secretname
  defaultBackend:
    service:
      name: ejabberd-service
      port:
        number: 443
  rules:
    - host: dev-chat.mydomain.com
      http:
        paths:
          - path: /* 
            pathType: ImplementationSpecific
            backend:
              service:
                name: ejabberd-service
                port:
                  number: 443

Run Code Online (Sandbox Code Playgroud)

上面是我的 yaml 文件。我想从入口 URL 访问 ejabberd 服务。请帮助我解决我在这里面临的困难,并提出任何可行的替代方案。

入口用户界面: 在此输入图像描述

命中入口端点时的输出: 在此输入图像描述