Назад | Перейти на главную страницу

Понимание отношений angular frontend и elixir backend

Я запускаю кластер kubernetes в облаке openstack, и у меня есть поды для моего внешнего интерфейса angular и моего внутреннего интерфейса phoenix / elixir. Когда пользователь впервые вызывает интерфейс через входящий открытый сервер узла, http-вызовы серверной части выполняются на уровне обслуживания внутри кластера kubernetes и отправляются пользователю. Однако, как только пользователь переходит в среду angular 8, HTTP-вызовы направляются непосредственно на тот же URL-адрес, который использовались службами Kubernetes для связи, что не позволяет разрешить адрес. Итак, абсолютно ли необходимо предоставлять конечную точку backend api в Интернет, чтобы пользователь мог перемещаться по сайту? Или есть способ пропустить все через точку доступа внешнего интерфейса?

По запросу:

Ingress.yaml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: 
    http:  
      paths:
      - path: /api
        backend:
          serviceName: webapp
          servicePort: 8000
      - path: /
        backend:
          serviceName: frontend
          servicePort: 8200

Что касается HTTP-вызовов, служба аутентификации делает это для входа в систему:

login({ email, password }): Observable<User> {
    const params = {
      data: { attributes: { email: email, password: password } }
    };
    return this.http.post<{ data: User }>('login', params).pipe(
      map(({ data: user }) => {
        this.setTokenInLocalStorage(user, 'user');
        this.store.dispatch(
          this.actions.getCurrentUserSuccess(
            JSON.parse(localStorage.getItem('user'))
          )
        );
        this.store.dispatch(this.actions.loginSuccess());
        return user;
      }),
      tap(
        _ => this.router.navigate(['/']),
        error => this.toastrService.error(error.error.errors.detail, 'ERROR!')
      ),
      catchError(error => {
        return of(error);
      }) as any
    );
  }