无法从同一Pod中的GKE中的Angular应用程序访问Spring Boot Rest Endpoint

时间:2019-02-10 19:30:17

标签: angular spring-boot google-kubernetes-engine

我正在Google Cloud的Kubernetes上从春季启动运行带有后端恢复服务的角度应用程序。 Angular应用尝试使用来自弹簧支架端点的数据,例如:

Spring启动端点:http://localhost:8080/app/getDetails

此端点运行良好,就像我进行端口转发一样。如果我使用入口显式从服务公开端点,则也可以访问它。

但是不能从与Nginx内托管的不同容器在同一容器中运行的Angular应用程序访问。 (启用了验证功能)

在控制台上显示:

获取http://localhost:8080/app/getDetails网:: ERR_CONNECTION_REFUSED

错误:[对象ProgressEvent]

有什么想法可以解决这个问题吗?

这是我的角度代码

export class MyComponent implements OnInit {
  private url: string = "http://localhost:8080/app/getDetails";

  constructor(private httpClient: HttpClient) {}

  dtls: any;

  ngOnInit() {}

  public onClick() {
    this.httpClient.get(this.url).subscribe(
      results => {
        this.dtls = results;
      },
      (err: HttpErrorResponse) => {
        console.log("Error: " + err.error);
      }
    );
  }
}

这是nginx.conf

upstream webapp {
        server 127.0.0.1:8080;
    }
server {
  listen 80;
  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ /index.html =404;
  }
}

Deployment.yml

apiVersion: v1
kind: Pod
metadata:
  name: myapp-demo
  labels:
    app: myapp-dtls-demo
spec:
  containers:
  - name: myapp-ui
    image: myuser/myapp-kubernetes-demo
    ports:
    - name: ui-port
      containerPort: 80
  - name: myapp-api
    image: myuser/myapp-service-kubernetes-demo

Service.yml

apiVersion: v1
kind: Service
metadata:
  name: myapp-demo-service
spec:
  ports:
  - port: 4200
    targetPort: ui-port
    name: ui
    protocol: TCP   
  selector:
    app: myapp-football-demo
  type: LoadBalancer

0 个答案:

没有答案