如何在Vue JS中获取kubernetes / minikube env变量

时间:2018-11-09 10:32:51

标签: python vue.js kubernetes minikube

我在minikube中有一个python应用程序和vue-js应用程序。我试图通过在URL中提及“ python-app-service”来发布python应用服务,但是,vue js还是将其作为文字“ python-app-service”而不是IP地址。

请说这是我的部署,名为python-server spec: containers: - image: python-server:latest imagePullPolicy: IfNotPresent name: python-servier ports: - containerPort: 8001 name: python-server

我的服务称为python-server-service

spec: ports: - port: 8001 targetPort: 8001

另一方面,我为vue js提供了类似的deploymet和服务。

现在我想在vue js中向python-server发送axios发布请求:

axios.post('python-server-service'+'/api/new/post', 
this.name, // the data to post
{ headers: {
  'Content-type': 'application/x-www-form-urlencoded',
  }
}).then(response => ....);

代替此:

axios.post('http://127.0.0.1:3030/api/new/post', 
this.name, // the data to post
{ headers: {
  'Content-type': 'application/x-www-form-urlencoded',
  }
}).then(response => ....);

但是不幸的是,vueJS不会解析我的python-server-service并将其作为文字字符串“ python-server-service”。

如何在minikube中运行的vuejs中获取python-app-service IP地址?

谢谢。

1 个答案:

答案 0 :(得分:0)

最有意义的解决方案是使用Kubernetes Service,并将主机名与Kubernetes DNS nomenclature<service-name>.<namespace>.svc.cluster.local:<exposed-port>一起使用。由于两个Pod都在同一个集群中,因此可以是ClusterIP类型的服务。

IP地址的问题在于它们在Kubernetes集群(甚至minikube)中不是固定的,但是对于测试,您总是可以像这样获得pod的IP地址:

$ kubectl get pod <pod-name> -o=jsonpath='{.status.podIP}'