我不确定标题是否是正确的术语..但我基本上想使用 go-client 并获取符合 kubectl 的对象(yamls)。
即部署资源将是:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
我可以通过 go-client 从我的 k8s 集群中获取部署,如下所示:
Deployments, err := clientset.AppsV1().Deployments().List(metav1.ListOptions{})
//and then loop through each deployment:
for _, deploy := range Deployments.Items{
//deploy is type v1.Deployment
}
如果我要编组部署并保存到文件,则结构为:
type Deployment struct {
v1.TypeMeta `json:",inline"`
v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
Status DeploymentStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
显然与 kubectl 文件所期望的有很大不同。
(虽然我可以使用 go-client deployment.create(obj) 来创建该部署)。
如果我想创建一个 kubectl 有效资源,我可以创建一个符合该类型的自定义结构,然后手动填写值。
有没有办法自动做到这一点?或目前存在的一些辅助功能?
本质上,我想将 v1.Deployment 结构转换为通用的 kubectl yaml 资源。