knative是一个大熔炉,将DevOps构建到服务的自动弹性伸缩,流量管控,事件驱动等都整合到一起。从很早期的版本开始我就一直有在关注,好在其文档还比较完备,可以基于文档一步步部署和尝鲜。
东西虽好,但安装却很麻烦!gcr.io一方面被墙,无法拉取镜像;另一方面gcr镜像名称还支持多级子目录,导致没法和docker hub简单做映射。在v0.4.0版本时,我曾一个个镜像在docker hub创建对应的repository。可是这货版本更新又很快,实在无法容忍;于是写了一个脚本,专门用于解决knative墙内安装的问题。
当前v0.7.0
已经验证通过!
基本原理
其实原理比较简单,主要分两步:
- 在墙外执行第一个脚本
先基于knative release的yaml文件,从中过滤出gcr中存放的images;将其下载到墙外主机,然后按照特定规则更改每一个镜像的tag为满足docker hub中镜像名称规则的new tag,再推送到docker hub; - 在墙内执行第二个脚本
按照第一个脚本中镜像old tag到new tag的转换规则,更新knative release的yaml文件中所有的镜像tag。然后使用更新后的yaml文件来部署knative。
安装istio
先在k8s上安装istio,具体操作如下(如果你说你不会安装k8s,请移步这里):
1 | # Download and unpack Istio |
生成安装所需yaml
这里也就是前面提到的第二个脚本文件,里面的REGISTRY_URL
变量是写的我在docker hub的仓库名称。你也可以直接使用该脚本来部署,镜像都是public的。
1 | cat <<EOF > knative-image.sh |
部署knative
这里就是用刚才生成的yaml文件来直接部署到knative到k8s了。
1 | cd knative/ |
配套镜像生成脚本
这里就是前面说的第一个脚本,如果你想自己再跑一边,请修改REGISTRY_URL
的值为你的镜像仓库地址。
1 |
|
gcr镜像映射表
下面排版不忍直视!尝试过表格等格式,发现更惨不忍睹。
hexo确实有点儿二;但是,内容的真实性更要紧,就忍忍吧~~
v0.6.0版本
- gcr.io/knative-releases/github.com/knative/build/cmd/creds-init@sha256:101f537b53b895b28b84ac3c74ede7d250845e24c51c26516873d8ccb23168ce
=> ljchen/knative_build_cmd_creds-init:v0.6.0
- gcr.io/knative-releases/github.com/knative/build/cmd/git-init@sha256:ce2c17308e9cb81992be153861c359a0c9e5f69c501a490633c8fe54ec992d53
=> ljchen/knative_build_cmd_git-init:v0.6.0
- gcr.io/cloud-builders/gcs-fetcher
=> ljchen/knative_cloud-builders_gcs-fetcher:v0.6.0
- gcr.io/knative-releases/github.com/knative/build/cmd/nop@sha256:50e2be042298f24800b9840a9aef831a5fe4d89d9a8edea5e0559cdedf32369d
=> ljchen/knative_build_cmd_nop:v0.6.0
- gcr.io/knative-releases/github.com/knative/build/cmd/controller@sha256:6a762848a46786cb481f5870787133e0d5e15615f8d54a5ba50d86b8315a58eb
=> ljchen/knative_build_cmd_controller:v0.6.0
- gcr.io/knative-releases/github.com/knative/build/cmd/webhook@sha256:8f0bbc50b63f368c9959acab87838c6986691c28d424847459f3526bf97f8a3e
=> ljchen/knative_build_cmd_webhook:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing-sources/cmd/manager@sha256:99cf1f559f74ae97f271632697ed6e78a3fdd88a155632a57341b0dd6eab6581
=> ljchen/knative_eventing-sources_cmd_manager:v0.6.0
- k8s.gcr.io/elasticsearch:v5.6.4
=> ljchen/knative_elasticsearch:v0.6.0
- k8s.gcr.io/fluentd-elasticsearch:v2.0.4
=> ljchen/knative_fluentd-elasticsearch:v0.6.0
- k8s.gcr.io/addon-resizer:1.7
=> ljchen/knative_addon-resizer:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/controller@sha256:85c010633944c06f4c16253108c2338dba271971b2b5f2d877b8247fa19ff5cb
=> ljchen/knative_eventing_cmd_controller:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/sources_controller@sha256:aaa48f71a8db1b1dcf86c57d2dd72be1a65ed76d77f23a5abef4b2ad5c01c863
=> ljchen/knative_eventing_cmd_sources_controller:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/webhook@sha256:34a7cac96f8c809a7ce8ea0a86445204bbc6ac897525b876f53babb325f50bdc
=> ljchen/knative_eventing_cmd_webhook:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/in_memory/controller@sha256:496c19e81d9e7e40b3887c7c290304934f54f46c8a9186e800e314c014970c26
=> ljchen/knative_eventing_cmd_in_memory_controller:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/in_memory/dispatcher@sha256:897f03ed16e0000944da9ee0fdc971c43c8a494ff771c4e64d0573caf357c013
=> ljchen/knative_eventing_cmd_in_memory_dispatcher:v0.6.0
- gcr.io/knative-releases/github.com/knative/serving/cmd/queue@sha256:1e40c99ff5977daa2d69873fff604c6d09651af1f9ff15aadf8849b3ee77ab45
=> ljchen/knative_serving_cmd_queue:v0.6.0
- gcr.io/knative-releases/github.com/knative/serving/cmd/activator@sha256:f553b6cb7599f2f71190ddc93024952e22f2f55e97a3f38519d4d622fc751651
=> ljchen/knative_serving_cmd_activator:v0.6.0
- gcr.io/knative-releases/github.com/knative/serving/cmd/autoscaler@sha256:3a466eaf05cd505338163322331ee8634c601204250fa639360ae3524756acc3
=> ljchen/knative_serving_cmd_autoscaler:v0.6.0
- gcr.io/knative-releases/github.com/knative/serving/cmd/controller@sha256:8f402eab0ada038d3de2ad753a40f9f441715d08058d890537146bb0aba11c8e
=> ljchen/knative_serving_cmd_controller:v0.6.0
- gcr.io/knative-releases/github.com/knative/serving/cmd/networking/certmanager@sha256:dc77db09a23103f64a554de4e01cfda7371cbb13bc0954c991bdc4141169257f
=> ljchen/knative_serving_cmd_networking_certmanager:v0.6.0
- gcr.io/knative-releases/github.com/knative/serving/cmd/networking/istio@sha256:55fe9eeacfc20d97d3cd4f80bfc8a9b95cff7b5c50121bda87f754da8f05e57b
=> ljchen/knative_serving_cmd_networking_istio:v0.6.0
- gcr.io/knative-releases/github.com/knative/serving/cmd/webhook@sha256:f0f98736bd4b55354f447f59183bf26b9be1ab01691b8b4aeee85caeb1166562
=> ljchen/knative_serving_cmd_webhook:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing-sources/cmd/github_receive_adapter@sha256:b5d6e12d16d16c6c42ae3d4325a1ef3a8a129dfc97740aa28000c0867edfc4ff
=> ljchen/knative_eventing-sources_cmd_github_receive_adapter:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/broker/ingress@sha256:a0acbe69420a67bef520e86aceaa237bf540c15882701c96245a6c4e06413bf6
=> ljchen/knative_eventing_cmd_broker_ingress:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/broker/filter@sha256:b4da7ce7b12aff2355066ed3237aadcf35df3b1c78db83cc538e6cffa564f208
=> ljchen/knative_eventing_cmd_broker_filter:v0.6.0
- gcr.io/knative-releases/github.com/knative/eventing/cmd/cronjob_receive_adapter@sha256:6bbb724d5a4dbaaead890ea51d5f84eb9514974a2d06e26c8753db59010987fb
=> ljchen/knative_eventing_cmd_cronjob_receive_adapter:v0.6.0
gcr.io/knative-releases/github.com/knative/eventing/cmd/apiserver_receive_adapter@sha256:7349f83eebe85a3eed7cdc4d442a935deab1ba0c42f34294f219f4ef17b59fec
=> ljchen/knative_eventing_cmd_apiserver_receive_adapter:v0.6.0gcr.io/knative-samples/autoscale-go:0.1
=> ljchen/knative_knative-samples_autoscale-go:v0.6.0
v0.7.0版本
gcr.io/knative-releases/github.com/knative/build/cmd/creds-init@sha256:1a984c032a2606f8491f4a19a85209dcc1ae2cfd494c3dafe8a74269379ad2c8
=> ljchen/knative_build_cmd_creds-init:v0.7.0gcr.io/knative-releases/github.com/knative/build/cmd/git-init@sha256:06505d8c621e9337d0dd1bc13ed4545a33e857fbb6374740cc6337d2ba55796d
=> ljchen/knative_build_cmd_git-init:v0.7.0gcr.io/cloud-builders/gcs-fetcher
=> ljchen/knative_cloud-builders_gcs-fetcher:v0.7.0gcr.io/knative-releases/github.com/knative/build/cmd/nop@sha256:8aca9c97ede9a550ac3536d00c5d7acaae5e3a4fe514f4329ec261d935eddabb
=> ljchen/knative_build_cmd_nop:v0.7.0gcr.io/knative-releases/github.com/knative/build/cmd/controller@sha256:5adb5ba0647a7b1af1d90848bf72a75fa84efeb89e1d688465a2105c1cce1dc2
=> ljchen/knative_build_cmd_controller:v0.7.0gcr.io/knative-releases/github.com/knative/build/cmd/webhook@sha256:35b1b5f72642e9c1ee71809fec309a019111beebf805f9ddddf154a97ad23975
=> ljchen/knative_build_cmd_webhook:v0.7.0k8s.gcr.io/elasticsearch:v5.6.4
=> ljchen/knative_elasticsearch:v0.7.0k8s.gcr.io/fluentd-elasticsearch:v2.0.4
=> ljchen/knative_fluentd-elasticsearch:v0.7.0k8s.gcr.io/addon-resizer:1.7
=> ljchen/knative_addon-resizer:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/controller@sha256:57f273774efb017bbf06729af802514db2f3ab070b51730dba9330903aa34163
=> ljchen/knative_eventing_cmd_controller:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/sources_controller@sha256:31ec2b4a1d1d9b81cd1eed6632b8a1c540b510b584e58c14ebc1c000330fe32c
=> ljchen/knative_eventing_cmd_sources_controller:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/webhook@sha256:3b5de8074f00469c393910fd0fbac70cec10838a858c94ad755af1b6bd6712fd
=> ljchen/knative_eventing_cmd_webhook:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/webhook@sha256:3b5de8074f00469c393910fd0fbac70cec10838a858c94ad755af1b6bd6712fd
=> ljchen/knative_eventing_cmd_webhook:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/in_memory/channel_controller@sha256:292b2dddf074ce355f5793f3d4893ad0863152e0783f32c05e7ae50328b1e2e6
=> ljchen/knative_eventing_cmd_in_memory_channel_controller:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/in_memory/channel_dispatcher@sha256:0c95cafd668283cb045fa4941922ff7365f8e6caef623a9c5a68452be1404b5e
=> ljchen/knative_eventing_cmd_in_memory_channel_dispatcher:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/in_memory/controller@sha256:dfd7b2852c9bc2e391b04193a50a4f635db0e7a4bbd79a20c61199e6880394fe
=> ljchen/knative_eventing_cmd_in_memory_controller:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/in_memory/dispatcher@sha256:345888cb32ce69a45165e02fc87ebfde903fd1d9dfe059892289d66b779e6bee
=> ljchen/knative_eventing_cmd_in_memory_dispatcher:v0.7.0gcr.io/knative-releases/github.com/knative/serving/cmd/queue@sha256:e007c0a78c541600466f88954deee65c517246a23345bfba45a7f212d09b8f3b
=> ljchen/knative_serving_cmd_queue:v0.7.0gcr.io/knative-releases/github.com/knative/serving/cmd/activator@sha256:57fe5f1a8b1d12f29fe9e3a904b00c7219e5ce5825d94f33339db929e92257db
=> ljchen/knative_serving_cmd_activator:v0.7.0gcr.io/knative-releases/github.com/knative/serving/cmd/autoscaler@sha256:2c2370df2751741348e1cc456f31425cb2455c377ddb45d3f6c17e743fd63d78
=> ljchen/knative_serving_cmd_autoscaler:v0.7.0gcr.io/knative-releases/github.com/knative/serving/cmd/controller@sha256:016c95f2d94be89683d1ddb7ea959667fd2d899087a4145a31d26b5d6f0bb38f
=> ljchen/knative_serving_cmd_controller:v0.7.0gcr.io/knative-releases/github.com/knative/serving/cmd/networking/certmanager@sha256:c757629165393f778d5c0e8b611c9c4857b24f0c748d985d3a080d0161a85248
=> ljchen/knative_serving_cmd_networking_certmanager:v0.7.0gcr.io/knative-releases/github.com/knative/serving/cmd/networking/istio@sha256:bb4407e4714511cd9429e86536c283265629a2c11c80633d91c0f798c494a16f
=> ljchen/knative_serving_cmd_networking_istio:v0.7.0gcr.io/knative-releases/github.com/knative/serving/cmd/webhook@sha256:d9918d40492e0b20b48576ff6182e2ab896e50dfd2313cb471419be98f821b9c
=> ljchen/knative_serving_cmd_webhook:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/broker/ingress@sha256:33d41dc38208bf9752b38e5c90149da4d5af74a67f317b7da8cb3c458fbd0fff
=> ljchen/knative_eventing_cmd_broker_ingress:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/broker/filter@sha256:5a4eb60a605e189516a36a01c7fd39001d5766b2e6bb80c69744e15515282360
=> ljchen/knative_eventing_cmd_broker_filter:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/cronjob_receive_adapter@sha256:634fbf0348f9f10d09c8110c505173aed91ce747bb2b87605e6e1bb10dce270b
=> ljchen/knative_eventing_cmd_cronjob_receive_adapter:v0.7.0gcr.io/knative-releases/github.com/knative/eventing/cmd/apiserver_receive_adapter@sha256:f18cdbc3c3077ece8505a4f4c49055e6c1c577e9fa42446f0f81193e48aa1d60
=> ljchen/knative_eventing_cmd_apiserver_receive_adapter:v0.7.0gcr.io/knative-releases/github.com/knative/eventing-sources/cmd/event_display@sha256:37ace92b63fc516ad4c8331b6b3b2d84e4ab2d8ba898e387c0b6f68f0e3081c4
=>ljchen/knative_eventing-sources_cmd_event_display:v0.7.0