如何让 Cloud Run 与 kubernetes 集群通信?

如何让 Cloud Run 与 kubernetes 集群通信?

我在 Cloud Run 上部署了一个映像,需要在其中对 Kubernetes 集群内的服务进行 http 调用。

该服务只能从私人网络访问。

我读过文章我需要将 Cloud Run 实例连接到我的私有 VPC,然后我需要创建一个将映射到我的一个 k8s 服务的负载均衡器。这将为我提供一个不会改变的外部 IP,我可以在 Cloud Run 中使用。

我理解得对吗?

那么,我该如何为该外部 IP 分配主机名?我想我需要更新 cloud run 使用的 dns 吗?

答案1

由@Gari Singh 回答,发布此答案以帮助其他社区解决 serverfault

假设您正在使用 Cloud Run 和 GKE,则需要执行以下步骤:

创建无服务器 VPC 连接器以将 Cloud Run 连接到部署 GKE 集群的 VPC:

gcloud services enable vpcaccess.googleapis.com
    gcloud compute networks vpc-access connectors create $CONNECTOR_NAME \
    --network $VPC_NETWORK \
    --region $REGION \
    --range $IP_RANGE

保留静态内部 IP 地址:

gcloud compute addresses create $ADDRESS_NAME \
    --region $REGION --subnet $SUBNETWORK

为您的 GKE 服务创建一个 LoadBalancer 并分配静态 IP:

gcloud compute addresses describe $ADDRESS_NAME --region $REGION

上述命令将显示你创建的静态 IP

创建负载均衡器服务:

apiVersion: v1
kind: Service
metadata:
  name: helloweb
  annotations:
    networking.gke.io/load-balancer-type: "Internal"
  labels:
    app: hello
spec:
  selector:
    app: hello
    tier: web
  ports:
  - port: 80
    targetPort: 8080
  type: LoadBalancer
  loadBalancerIP: "YOUR.IP.ADDRESS.HERE"

您可以直接从 Cloud Run 使用 IP 地址,但也可以使用 Cloud DNS 创建 DNS 名称。

相关内容