我在 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
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 名称。