Kubernetes client-go creating services and enpdoints
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: "", }, })
Based on this.
For Services:
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 Servicefmt.Println("Creating service...")result, err := servicesClient.Create(service)if err != nil { panic(err)}
For deployments:
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 Deploymentfmt.Println("Creating deployment...")result, err := deploymentsClient.Create(deployment)if err != nil { panic(err)}