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

Dim*_*lov 1 kubernetes google-kubernetes-engine google-cloud-run

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

该服务只能从专用网络访问。

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

我理解对了吗?

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

Gar*_*ngh 5

假设您使用 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
Run Code Online (Sandbox Code Playgroud)

保留静态内部 IP 地址

gcloud compute addresses create $ADDRESS_NAME \
    --region $REGION --subnet $SUBNETWORK
Run Code Online (Sandbox Code Playgroud)

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

gcloud compute addresses describe $ADDRESS_NAME --region $REGION
Run Code Online (Sandbox Code Playgroud)

上面的命令将显示您创建的静态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"
Run Code Online (Sandbox Code Playgroud)

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