【发布时间】:2021-05-11 22:27:04
【问题描述】:
我正在寻找有关如何使用 client-go API 创建/更新服务和端点的指针。似乎找不到任何有关如何执行此操作的示例或文档。
谢谢! 萨蒂什
【问题讨论】:
-
欢迎来到stackoverflow。如果您将问题集中在特定问题上,您最有可能得到有用的答案。请求示例或文档很少能得到好的答案。
标签: kubernetes client-go
我正在寻找有关如何使用 client-go API 创建/更新服务和端点的指针。似乎找不到任何有关如何执行此操作的示例或文档。
谢谢! 萨蒂什
【问题讨论】:
标签: kubernetes client-go
clientset.CoreV1().Services("kube-system").Create(&corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: controllerSVCName,
Namespace: "kube-system",
Labels: map[string]string{
"k8s-app": "kube-controller-manager",
},
},
Spec: corev1.ServiceSpec{
Ports: nil,
Selector: nil,
ClusterIP: "",
},
})
【讨论】:
基于this。
对于服务:
serviceClient := clientset.AppsV1().Services(apiv1.NamespaceDefault)
service := &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: "myservice",
Namespace: "default",
Labels: map[string]string{
"app": "myapp",
},
},
Spec: corev1.ServiceSpec{
Ports: nil,
Selector: nil,
ClusterIP: "",
},
})
// Create Service
fmt.Println("Creating service...")
result, err := servicesClient.Create(service)
if err != nil {
panic(err)
}
对于部署:
deploymentsClient := clientset.AppsV1().Deployments(apiv1.NamespaceDefault)
deployment := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "demo-deployment",
},
Spec: appsv1.DeploymentSpec{
Replicas: int32Ptr(2),
Selector: &metav1.LabelSelector{
MatchLabels: map[string]string{
"app": "demo",
},
},
Template: apiv1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{
"app": "demo",
},
},
Spec: apiv1.PodSpec{
Containers: []apiv1.Container{
{
Name: "web",
Image: "nginx:1.12",
Ports: []apiv1.ContainerPort{
{
Name: "http",
Protocol: apiv1.ProtocolTCP,
ContainerPort: 80,
},
},
},
},
},
},
},
}
// Create Deployment
fmt.Println("Creating deployment...")
result, err := deploymentsClient.Create(deployment)
if err != nil {
panic(err)
}
【讨论】: