labring / labring/fist

执行器设计

Open
#137 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
238
Forks
45
PR merge metrics
No merged PRs in 30d

Description

前端渲染好的模板需要执行,这的实现方式有几种:
1. 把yaml文件传给后台,起一个临时的kubectl容器去执行 (效率低下,依赖变多)
2. 解析yaml文件使用client-go,调用apiserver去创建对象。 其实这还是挺复杂的,基本每种对象都需要实现一遍,曾经有个项目就是基于这种方式实现的,虽然代码足够解耦,增加一种类型的object增加一个实现即可,但是还是偏复杂了,而且后续最好还是能支持CRD的创建。
3. 参考kubectl的实现并复用其代码。

因为如这种中间带有---的yaml,其实是在kubectl这块做切分的
```
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: admin
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: sealyun
labels:
kubernetes.io/cluster-service: "true"
```
这个切分虽然不难,但是需要考虑一些细节,比如有时confimap里也有---应该如何处理。 这块代码我之前已经复用过kubectl里的函数进行处理了。

但是切分完成后我们依然要根据kind判断去实例化一个object 然后调用client-go进行创建。 这里最好能复用kubectl的代码。

fist相比kubectl更复杂的地方在于fist是多租户系统,client-set也需要根据租户的token 或者特定的kubeconfig字符串进行创建,这块实现我也已经做过:

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.