我使用的 Spinnaker 版本(1.12.10 Unbreakable)中部署 IngressRoute
类型资源的时候遇到错误,通过查找相关资料测试,发现 CRD 需要额外的配置。其他的版本可能也存在同样的情况,此文记录相关信息及如何解决。
问题
部署自定义资源失败,提示信息:
1 | Exception ( Monitor Deploy ) |
在官方的 Issues 中找到了类似的问题:
- https://github.com/spinnaker/spinnaker/issues/3439
- https://github.com/spinnaker/spinnaker/issues/4356
- https://github.com/spinnaker/spinnaker/issues/4237
解决
可以看到,一开始是的确有 bug 的,但后来修复了。然后我根据 issue 中提到的需要配置的customResources
到官方文档中搜索,没有搜索到有用的信息。又通过 Halyard
的命令行帮助也没有查找到有相关设置 customResources
的地方…… 这就很迷了啊,难道手工改 ~/.hal/config
么,总感觉不太对。
之后就发现了这个 issue:https://github.com/spinnaker/spinnaker/issues/4345
果然,官方就是没有提供对应的操作命令。
要解决这个问题,需要满足:
- spinnaker 的 kubernetes provider 使用的 account 有对应CRD的读取权限,这个根据 kubernetes 的 RBAC 配置方式很容易搞定。
- Halyard 的配置文件中 ~/.hal/config 使用的 account 下
customResources
定义了对应的资源
我是手工修改该配置的,大概就是如下这样:
1 | deploymentConfigurations: |
其他无关配置忽略了,就是在 deploymentConfigurations -> providers ->kubernetes -> customResources 下添加自定义资源列表就 ok 了。
配置后,通过
1 | hal deploy apply |
重新部署,就可以支持了。