Spinnaker 部署 CRD 资源

我使用的 Spinnaker 版本(1.12.10 Unbreakable)中部署 IngressRoute 类型资源的时候遇到错误,通过查找相关资料测试,发现 CRD 需要额外的配置。其他的版本可能也存在同样的情况,此文记录相关信息及如何解决。

问题

部署自定义资源失败,提示信息:

1
2
Exception ( Monitor Deploy )
Unsupported Kubernetes object kind 'IngressRoute', unable to continue.

在官方的 Issues 中找到了类似的问题:

可以看到,一开始是的确有 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
deploymentConfigurations:
- name: default
providers:
kubernetes:
enabled: true
accounts:
- name: my-k8s-v2-account
requiredGroupMembership: []
providerVersion: V2
permissions: {}
dockerRegistries: []
context: focus
configureImagePullSecrets: true
cacheThreads: 1
namespaces: []
omitNamespaces: []
kinds: []
omitKinds: []
customResources:
- kubernetesKind: ingressroutes.traefik.containo.us
cachingPolicies: []

其他无关配置忽略了,就是在 deploymentConfigurations -> providers ->kubernetes -> customResources 下添加自定义资源列表就 ok 了。

配置后,通过

1
hal deploy apply

重新部署,就可以支持了。

谢谢鼓励