【发布时间】:2019-04-18 21:45:00
【问题描述】:
我正在 minikube 中部署一个 Spring Boot 应用程序,该应用程序连接到在主机上运行的数据库。我在哪里可以找到应用程序可以用来返回主机的 IP 地址?对于 docker,我可以使用 ifconfig 并从 docker0 条目中获取 IP 地址。 ifconfig 显示另一个 IP 地址为 172.18.0.1 的设备。这就是我的应用返回主机的方式吗?
【问题讨论】:
我正在 minikube 中部署一个 Spring Boot 应用程序,该应用程序连接到在主机上运行的数据库。我在哪里可以找到应用程序可以用来返回主机的 IP 地址?对于 docker,我可以使用 ifconfig 并从 docker0 条目中获取 IP 地址。 ifconfig 显示另一个 IP 地址为 172.18.0.1 的设备。这就是我的应用返回主机的方式吗?
【问题讨论】:
我想我理解正确,这就是你所要求的。
Minikube 作为您机器上的虚拟机启动。您需要知道 Minikube 以哪个 IP 开头。这可以通过minikube status 或minikube ip 完成,输出可能如下所示:
$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.1
这只会为您提供 Minikube 的 IP 地址,而不是您的应用程序。 为了从 Minikube 外部连接到您的应用,您需要将其公开为 Service。
Service 的示例可能如下所示:
apiVersion: v1
kind: Service
metadata:
name: webapp
spec:
type: NodePort
ports:
- nodePort: 31317
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: webapp
你可以看到结果:
$ kubectl get services -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
postgres ClusterIP 10.0.0.140 <none> 5432/TCP 32m app=postgres
webapp NodePort 10.0.0.235 <none> 8080:31317/TCP 2s app=webapp
您将能够从集群内部使用10.0.0.235:8080 连接到webapp,或者从集群外部使用Minikube IP 和端口31317 连接。
我还建议阅读 Hello Minikube 教程。
【讨论】:
它是172.18.0.1 IP 地址。我将它传递给在 minikube 中运行的 Spring 应用程序,配置图如下:
kubectl create configmap springdatasourceurl --from-literal=SPRING_DATASOURCE_URL=jdbc:postgresql://172.18.0.1:5432/bookservice
该应用还需要在配置映射中设置SPRING_DATASOURCE_DRIVER_CLASS_NAME,并将凭据SPRING_DATASOURCE_PASSWORD 和SPRING_DATASOURCE_USERNAME 设置为机密。
关于 configmap 和 secret 的更多信息是here。
【讨论】: