隧道或代理从一个kubernetes集群(本地/ minikube)中的应用程序到另一个kubernetes集群内的数据库(在Google容器引擎上)

时间:2017-12-10 16:56:17

标签: elasticsearch kubernetes minikube

我有一个在Google容器引擎上的kubernetes集群中运行的大型只读elasticsearch数据库,我正在使用minikube运行我的应用程序的本地开发实例。 有没有办法让我的应用程序连接到云弹性搜索实例,以便我不必创建一个包含数据子集的本地测试数据库?

数据库包含敏感信息,因此无法在其自己的群集或VPC之外显示。

我的后退是在本地pod中运行kubectl port-forward:

kubectl --cluster=<gke-database-cluster-name> --token='<token from ~/.kube/config>' port-forward elasticsearch-pod 9200

但这似乎不是最理想的。

1 个答案:

答案 0 :(得分:0)

我使用像

这样的ExternalName服务
kind: Service
apiVersion: v1
metadata:
  name: elastic-db
  namespace: prod
spec:
  type: ExternalName
  externalName: your.elastic.endpoint.com

根据文档

  

ExternalName服务是没有选择器的特殊服务案例。它没有定义任何端口或端点。相反,它可以作为一种方法将别名返回到驻留在集群外部的外部服务。

如果需要公开弹性数据库,有两种方法可以将应用程序公开到集群外部:

  1. 创建类型为LoadBalancer的服务,该服务将对弹性数据库的所有实例的流量进行负载平衡。在GKE上创建Load Balancer后,只需添加负载均衡器的DNS作为上面创建的elastic-db ExternalName的值。
  2. 使用Ingress控制器。 Ingress控制器将具有可从群集外部访问的IP。将该IP用作上面创建的elastic-db的ExternalName。