Istio + Knative で VirtualService でハマった
Istio Gateway と MetalLB を設定して Knative Service を外部公開しようとしたが、external-Gateway用のVirtualService(VS)が生成されず、Pod内のローカルアクセスのみしかできない状態にハマった。
原因
- Knative の
config-domainConfigMap に外部公開用ドメインが設定するの忘れてた -
config-domainが未設定のままだと、Knative はデフォルトで{service}.{namespace}.svc.cluster.localのドメインを使う - この場合、自動生成される VirtualService の
networking.knative.dev/visibilityはLocalClusterに設定される - そのため、外部 Gateway へはルーティングされず、クラスター内アクセス限定となる
解決方法
-
knative-servingネームスペースのconfig-domainConfigMap を編集し、外部公開用のドメインを追加するkubectl edit configmap config-domain -n knative-serving