我不确定标题是否是正确的术语。但我基本上想要使用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资源。
可以看看这个:http://zhgolang.com/archives/k8sgo%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B0%86%E5%AF%B9%E8%B1%A1%E8%BD%AC%E6%8D%A2%E4%B8%BAkubectl%E8%B5%84%E6%BA%90yamls
你可以简单地制造struct并获得yaml。
我用于"github.com/ghodss/yaml"struct marshaling。请在导入中包含此内容。
Deployments, err := clientset.AppsV1().Deployments().List(metav1.ListOptions{})
//and then loop through each deployment:
for _, deploy := range Deployments.Items{
y, err := yaml.Marshal(deploy)
if err != nil {
panic(err)
}
fmt.Println("deployment print in yaml: ", string(y))
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。