Google Cloud (GCP) 使用基于 Elastic Cloud 的 ElasticSearch 托管服务,配置Google Cloud PSC方式进行数据访问
Google Cloud 自身只提供有少部分的 SaaS 托管服务,其他包括 ElasticSearch、MongoDB、Kafka 等服务都是基于合作伙伴公有云的方式,直接打通与全球各区域的 GCP 实例以提供云上服务。
背景
使用者希望数据通过类似于 VPC Peering
或者 Private Service Connect(PSC)
的方式进行数据传输到 Elastic Cloud 中,保证数据的安全性,而且对于业务访问也可以做到无感知直接访问,在全球各相同区域能保证数据传输的效率。
解决思路
可以通过 PSC (Private Service Connect) 的方式,进行数据传输,大体步骤如下:
- 配置 PSC 的 endpoint
- 在 Elastic Cloud 添加基于 PSC 的流量过滤器,仅对 PSC 的访问流量进行授权
- 配置 非公开dns域解析
下面,我们来手把手介绍在 GCP 上使用和创建 Elastic Cloud 服务实例。
1. 开通服务权限
首先需要联系销售伙伴开通使用 Elastic Cloud 云服务的权限,并且订阅该服务。
使用 GCP 账户身份登录 Elastic Cloud
2. 回到 GCP 配置 PSC
找到网络服务
->Private Service Connect
添加连接端点
目标(target)
选择发布的服务(Published Service)
此处,目标服务
是固定的一堆值,需要根据自己的GCP业务所属区域,在 Elastic Cloud PSC 上选择对应区域的 PSC uri,官方文档uri列表见 https://www.elastic.co/guide/en/cloud/current/ec-traffic-filtering-psc.html#ec-private-service-connect-uris
此处我就选择 asia-southeast1 新加坡区域的 Service Attachment URI https://www.elastic.co/guide/en/cloud/current/ec-traffic-filtering-psc.html#ec-private-service-connect-uris
端点名称
取一个明了好记的名称,我这里就取名为 endpoint-es-gcp
选择对应的 VPC
网络,选择子网
,并在该子网内部创建一个预留IP
,我这里取名 example-es-resaved-ip
。
最后,点击添加端点,完成GCP侧 PSC endpoint 的创建。
3. 获取 PSC endpoint 的 PSC 连接ID
4. 在 Elastic Cloud 侧创建 ElasticSearch deployment 实例
点击 Create Deployment
取名,然后选择云服务商提供者为 GCP
,选择和自己GCP侧相同地域的 region
,选择合适的硬件规格Hardware profile
,选择合适的 ES 版本
下方还有更高级的配置,ES实例的资源大小,是否启动 Kibana 和 APM 等周边组件
创建成功。
这里会生成默认的 elastic
管理员账户密码,记得妥善保存。
5. 在 Elastic Cloud 侧添加基于 PSC 的流量过滤器
依次点击Deployment
->Features
->Traffic filters
开始创建一个 filter
过滤器
过滤类型选择PSC endpoint
,这里就需要填入第二步创建PSC时生成的PSC Connect ID
回到 Deployments 的主面板,点击 Security
在该实例上应用刚才创建的 filter 配置。
6. 在 GCP 侧创建专用非公开DNS域
这里为psc.asia-southeast1.gcp.elastic-cloud.com
创建一个专用域,且仅对于自己的某个 VPC网络可见
选择可见的项目
以及 VPC 网络
添加一个泛域名A记录,主机名为 *
,对应 record IP地址,选择前面创建 PSC endpoint时预留的的IP地址。
7. 验证测试
我们在 GKE 集群里面使用 curl
进行访问测试,那么我们得首先拿到链接端点URL
在 Elastic Cloud 主面板,选择copy Cluster ID
,然后和我们刚才创建的专用DNS域进行拼接。
格式:https://[ClusterID].[private-domain]:9243
例如:curl -v https://2lq8lalo4uo0j362516px.psc.asia-southeast1.gcp.elastic-cloud.com:9243
测试访问通过
看到这里,恭喜你,已经成功创建和使用PSC连接到 Elastic Cloud 上的 ES 实例。
测试访问失败
ks-installer-758d459599-x9zjg:/kubesphere$ curl -u "elastic:CFxxxxxxxxxxxxxx1" https://[elasticsearch-endpoint-name].es.asia-southeast1.gcp.elastic-cloud.com:9243
{"ok":false,"message":"Forbidden"}
在非授权的 VPC 进行访问,提示 Forbidden
访问受限。
并且,在授权VPC网络内部,使用错误的账户密码访问,也提示错误。