从HelloWorld看Knative Serving代码实现( 七 )

Service

首先我们要从Service来看 , 因为我们一开始的输入就是Service资源 。 在/pkg/reconciler/v1alpha1/service/service.go 。

比较简单 , 就是根据Service创建Configuration和Route资源

Route

/pkg/reconciler/v1alpha1/route/route.go

看一下Route中reconcile做了哪些处理:

1.判断是否有Ready的Revision可进行traffic
2.设置目标流量的Revision(runLatest:使用最新的版本;pinned:固定版本 , 不过已弃用;release:通过允许在两个修订版之间拆分流量 , 逐步扩大到新修订版 , 用于替换pinned 。 manual:手动模式 , 目前来看并未实现)
3.创建ClusterIngress:Route不直接依赖于VirtualService[https://istio.io/docs/reference/config/istio.networking.v1alpha3/#VirtualService
 而是依赖一个中间资源ClusterIngress , 它可以针对不同的网络平台进行不同的协调 。 目前实现是基于istio网络平台 。

推荐阅读