Все приведенные ответы более или менее верны, но я хотел бы опубликовать более конкретное описание ситуации, с которой я столкнулся после некоторого копания.
Как отмечают другие участники, при работе в облаке на основе GKE istio управляет маршрутизацией.
Поэтому по умолчанию (и если нет способа переопределить это поведение), istio создаст
входной шлюз istio для обработки входящего трафика
виртуальный сервис с правилами маршрутизации для конкретного контейнера, который вы запускаете через gcloud cloud run deploy ...
Итак, я обнаружил этот ресурс
➣ $ kubectl get virtualservice --all-namespaces
NAMESPACE NAME AGE
knative-serving route-eaee65aa-91c8-11e9-be08-42010a8000e2 17h
, чье описание и соответствующие правила маршрутизации на основе хоста объясняют необходимость передачи определенного `Host
➣ $ kubectl describe virtualservice route-eaee65aa-91c8-11e9-be08-42010a8000e2 --namespace knative-serving
Name: route-eaee65aa-91c8-11e9-be08-42010a8000e2
Namespace: knative-serving
Labels: networking.internal.knative.dev/clusteringress=route-eaee65aa-91c8-11e9-be08-42010a8000e2
serving.knative.dev/route=hello
serving.knative.dev/routeNamespace=default
Annotations: networking.knative.dev/ingress.class=istio.ingress.networking.knative.dev
API Version: networking.istio.io/v1alpha3
Kind: VirtualService
Metadata:
Creation Timestamp: 2019-06-18T12:59:42Z
Generation: 1
Owner References:
API Version: networking.internal.knative.dev/v1alpha1
Block Owner Deletion: true
Controller: true
Kind: ClusterIngress
Name: route-eaee65aa-91c8-11e9-be08-42010a8000e2
UID: f0a40244-91c8-11e9-be08-42010a8000e2
Resource Version: 5416
Self Link: /apis/networking.istio.io/v1alpha3/namespaces/knative-serving/virtualservices/route-eaee65aa-91c8-11e9-be08-42010a8000e2
UID: f0a51032-91c8-11e9-be08-42010a8000e2
Spec:
Gateways:
knative-ingress-gateway
mesh
Hosts:
hello.default.example.com
hello.default.svc.cluster.local
Http:
Append Headers:
Knative - Serving - Namespace: default
Knative - Serving - Revision: hello-8zgvn
Match:
Authority:
Regex: ^hello\.default(?::\d{1,5})?$
Authority:
Regex: ^hello\.default\.example\.com(?::\d{1,5})?$
Authority:
Regex: ^hello\.default\.svc(?::\d{1,5})?$
Authority:
Regex: ^hello\.default\.svc\.cluster\.local(?::\d{1,5})?$
Retries:
Attempts: 3
Per Try Timeout: 10m0s
Route:
Destination:
Host: activator-service.knative-serving.svc.cluster.local
Port:
Number: 80
Weight: 100
Timeout: 10m0s
Websocket Upgrade: true
Events: <none>
Более того, если вы добавите настраиваемое сопоставление доменов , получается, что GCP позаботится о маршрутизации, создав на этот раз дополнительную виртуальную службу в пространстве имен default
➣ $ kubectl get virtualservice --all-namespaces
NAMESPACE NAME AGE
default cloudrun.mydomain.com 13m
knative-serving route-23ad36f5-9326-11e9-b945-42010a800057 31m