Невозможно сделать GET-запрос на обслуживание из модуля angular в кластере kubernetes. - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть приложение Angular, работающее на Nginx, развернутое вместе со службой отдыха Spring Boot. Когда я запускаю docker контейнеров локально, все работает нормально, поэтому я предполагаю, что что-то не так с конфигурацией Kubernetes.

Я получаю эту ошибку в консоли Chrome с предоставленным IP-адресом Failed to load resource: net::ERR_CONNECTION_TIMED_OUT Однако с DNS-именем Я получаю: Failed to load resource: net::ERR_NAME_NOT_RESOLVED

Странно, я могу свернуть свой сервис из модуля radial/busyboxplus:curl, но не могу пропинговать свой сервис из моего переднего модуля (в сборке нет скручивания).

Я получаю доступ к фронту через вход:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: main-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: front
              servicePort: 80

Мой интерфейс:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: product-adviser-front-deployment
  labels:
    app: angular-front
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      name: product-adviser-front-deployment
  template:
    metadata:
      labels:
        name: product-adviser-front-deployment
    spec:
      containers:
        - name: product-adviser-front-app
          image: aurrix/seb:product-adviser-front
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          env:
            - name: API_URL
              value: http://back.default.svc.cluster.local/
          readinessProbe:
            initialDelaySeconds: 30
            httpGet:
              path: /healthz
              port: 80
          livenessProbe:
            initialDelaySeconds: 30
            httpGet:
              path: /healthz
              port: 80
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: front
spec:
  selector:
    name: product-adviser-front-deployment
  ports:
    - port: 80
  type: NodePort

Мой интерфейс:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: product-adviser-back-deployment
  labels:
    app: backend-service
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      name: product-adviser-back-deployment
  template:
    metadata:
      labels:
        name: product-adviser-back-deployment
    spec:
      containers:
        - name: product-adviser-back-deployment
          image: aurrix/seb:product-adviser
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          readinessProbe:
            initialDelaySeconds: 30
            httpGet:
              path: /actuator/health
              port: 8080
          livenessProbe:
            initialDelaySeconds: 30
            httpGet:
              path: /actuator/health
              port: 8080
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: back
spec:
  selector:
    name: product-adviser-back-deployment
  ports:
    - port: 80
      targetPort: 8080

1 Ответ

2 голосов
/ 09 апреля 2020

Вы установили значение: http://back.default.svc.cluster.local/ в качестве env, вызываете ли вы эту конечную точку для бэкэнд-сервиса из вашего интерфейсного приложения? Если это так, это не будет работать, так как приложение запускается в браузере, и именно браузер выполняет вызов API. В этом случае вам придется добавить еще одно правило во входе и направить запросы к бэкэнд-модулю.

Я также заметил, что для службы внешнего интерфейса установлено значение nodePort, и из входа вы вызываете службу напрямую. Возможно, вы захотите установить для службы IP-адрес кластера (по умолчанию), например, для серверной службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...