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