[英]How can you run iOS Apps on the Google Cloud even though it lacks support for IPv6
[英]How to make Google Cloud Run to use IPv4 instead of IPv6 to container app
我刚刚使用 Cloud Run 服务在 Google Cloud 上建立了一个基于 NodeJS 的站点。
有两个 DNS 记录:A (IPv4) 和 AAAA (IPv6)。 每当我使用 Chrome 访问该站点时,我的 Chrome 都会选择 IPv6 地址并且 NodeJS 应用程序很难失败:
TypeError [ERR_INVALID_URL]: Invalid URL: http://2001:14ba:98ae:1700:****:****:****:****/
at onParseError (internal/url.js:257:9)
at new URL (internal/url.js:333:5)
注意:我审查了地址
如果我强制浏览器使用 IPv4 地址,则该站点可以正常工作。
有没有办法让 Cloud Run 服务对容器/应用程序使用 IPv4? 我不介意client <-> Cloud Run
级别的 IPv6。
我的 Cloud Run YAML 看起来像:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: xxx-dev-app-825af7f
namespace: 'xxx'
selfLink: /apis/serving.knative.dev/v1/namespaces/xxx/services/xxx-dev-app-825af7f
uid: 2d787ef2-39a7-xxx-yyy-zzz
resourceVersion: AAWfuzEBUYA
generation: 5
creationTimestamp: '2020-02-26T18:58:40.504717Z'
labels:
cloud.googleapis.com/location: europe-north1
annotations:
run.googleapis.com/client-name: gcloud
serving.knative.dev/creator: pulumi@xxx.iam.gserviceaccount.com
serving.knative.dev/lastModifier: xxx@cloudbuild.gserviceaccount.com
client.knative.dev/user-image: gcr.io/xxx/app:4860b1e137457b0e42a1896d7b95e0348d8cd7e4
run.googleapis.com/client-version: 279.0.0
spec:
traffic:
- percent: 100
latestRevision: true
template:
metadata:
name: xxx-dev-app-825af7f-00005-xoz
annotations:
run.googleapis.com/client-name: gcloud
client.knative.dev/user-image: gcr.io/xxx/app:4860b1e137457b0e42a1896d7b95e0348d8cd7e4
run.googleapis.com/client-version: 279.0.0
autoscaling.knative.dev/maxScale: '1000'
spec:
timeoutSeconds: 900
containerConcurrency: 80
containers:
- image: gcr.io/xxx/app:4860b1e137457b0e42a1896d7b95e0348d8cd7e4
ports:
- containerPort: 8080
resources:
limits:
cpu: 1000m
memory: 256Mi
requests:
cpu: 200m
memory: 64Mi
status:
conditions:
- type: Ready
status: 'True'
lastTransitionTime: '2020-02-29T18:33:33.424Z'
- type: ConfigurationsReady
status: 'True'
lastTransitionTime: '2020-02-29T18:33:28.264Z'
- type: RoutesReady
status: 'True'
lastTransitionTime: '2020-02-29T18:33:33.424Z'
observedGeneration: 5
traffic:
- revisionName: xxx-dev-app-825af7f-00005-xoz
percent: 100
latestRevision: true
latestReadyRevisionName: xxx-dev-app-825af7f-00005-xoz
latestCreatedRevisionName: xxx-dev-app-825af7f-00005-xoz
address:
url: https://xxx.run.app
url: https://xxx.run.app
AFAIK,仅全局负载均衡器支持 IPv6。 此负载均衡器代理连接并将其转换为 IPv4,以便内部访问 Google 网络。因此,使用 IPv6 直接访问 Cloud Run 似乎是不可能的。
但是,事情正在进行中,尤其是在负载平衡方面,它可以解决您的问题。 可能会在 4 月的 Cloud Next 上发布公告。 敬请关注!
对于 Cloud Run <=> 用户浏览器之间的连接:您目前无法禁用 IPv6 堆栈。
(正如 Guillaume 所说,即将推出的对可配置云 HTTPS 负载均衡器的支持将解决您的问题——事实上,IPv4 是 GCLB 的默认设置,如果您想要为您的 GCLB 使用 IPv6,您明确需要配置一个 IPv6 地址)。
对于 Cloud Run Service <=> Cloud Run Service 之间的连接:您应该在客户端完全控制您连接到的 IP。
例如,在客户端,
curl --ipv4
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.